【发布时间】:2016-08-12 17:30:21
【问题描述】:
我正在处理文本提取表单图像。为此,我使用边缘检测技术。我检测到带有文本或非文本区域的图像边缘。
现在我想从图像中消除非文本区域。
请告诉我该怎么做?
我目前的代码是:
i = imread('t1.jpg');
i1 = rgb2gray(i);
imshow(i1);
i2 = edge(i1,'canny',0.3);
imshow(i2);
se = strel('square',2);
i3 = imdilate(i2,se);
imshow(i3);
i4 = imfill(i3,'holes');
imshow(i4);
[Ilabel num] = bwlabel(i4);
disp(num);
Iprops = regionprops(Ilabel);
Ibox = [Iprops.BoundingBox];
Ibox = reshape(Ibox,4,[]);
imshow(i);
hold on;
for cnt = 1:size(Ibox,2)
rectangle('position',Ibox(:,cnt),'edgecolor','r');
end
【问题讨论】:
-
想要的输出到底是什么?是不是任何不属于红色方块的像素都是白色/黑色/
NaN的图像?或者,也许您想获得一个图像单元阵列,其中每个图像都是一个不同的红色方形外壳?请解释您所说的“消除”是什么意思。 -
我想区分文本区域框和非文本区域框。而不是从红色框中提取文本。
标签: matlab image-processing ocr image-segmentation