2014-05-01 33 views
1

我有一张阿拉伯文字图片,我想裁剪并将照片贴到文字上。例如像这样如何在matlab中裁剪照片中的文字?

enter image description here

我怎么能做到这一点与MATLAB? 我尝试用regionprops功能和BoundingBox的财产来解决,但它没有连接部分分开,并考虑他们作为单独的对象,但我想要一个对象

+0

能你向我们展示你的当前代码?似乎你只需要合并(http://www.mathworks.com/matlabcentral/fileexchange/7844-geom2d/content/geom2d/geom2d/mergeBoxes.m)边界框来实现预期的结果。 – Daniel

回答

2

如果您已经获得了每个单独对象的边界框,则可以推导出边界框来获取它们全部。然而,只要让这些指标能够更简单高效就行。假设mask与您的文字逻辑矩阵:

xs = any (mask); 
xi = find (xs, 1, "first"); 
xf = finf (xs, 1, "last"); 

然后为y轴做同样的:

ys = any (mask, 2); 
yi = find (ys, 1, "first"); 
yf = finf (ys, 1, "last"); 

为您的文字边框会是:

text = mask(yi:yf, xi:xf); 
1

当您提供regionpropslogical类型的标签运行belabel幕后,从而将其分离为其连接的组件。如果您将BW掩码转换为uint8或其他任何类型regionprops将把它视为一个单一的组件,为您提供所需的边界框。