【问题标题】:How to eliminate the non text regions of following image?如何消除下图中的非文本区域?
【发布时间】: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


【解决方案1】:

您可能会考虑使用更“面向文本”的方法。
您是否考虑过使用"Stroke-Width Transform" (SWT)? 该变换根据边缘是否属于通常是文本特征的固定宽度脊的一部分的可能性来过滤边缘。

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多