【发布时间】:2011-12-08 06:00:48
【问题描述】:
我正在尝试 implement Epshtein's paper(Detecting text in natural scene with stroke width transform(2010)) 用于自然图像中的文本检测。 第一步是边缘检测。
我的文本中出现了一些额外的边缘。我应该如何删除这些?
原图:
我的边缘检测:
在示例中,您可以在 text 'WHY HURRY' 中看到额外的边缘
我已经在 Matlab 中尝试了这些步骤:
% contrast enhancement
I_adjust = imadjust(I);
% dilation & erosion
se = strel(ones(3,3));
I_dilate = imdilate(I_adjust, se);
I_final = imerode(I_dilate, se);
% gaussian smoothing
h_mask = fspecial('gaussian');
I_final = imfilter(I_final,h_mask);
figure; imshow(I_final);
BW_canny = edge(I_final,'canny');
figure; imshow(BW_canny);
问题 #2:
根据 belisarius 的建议,我发现均值偏移过滤器在文本区域分割中效果很好。现在我在Stroke Width transform的实现中遇到了另一个问题(看Epshtein的论文)。
Stroke Width 适用于像 'H''Y' 这样的字符,即使对于 'S' 也是如此,因为如果我们沿渐变方向前进,相应的边缘通常距离恒定。
问题出现在像“W”这样的字符中。对于第一次上冲的左边缘的一部分,我们得到第二次上冲的右边缘作为它的对应边缘。而对于另一部分,我们得到第一次上行的右边缘。这在“W”区域的笔画宽度上引入了显着差异,导致根据论文将其称为非文本区域。
任何人都可以提出任何解决方案吗?
【问题讨论】:
-
你好,如果你完成了,可以分享一下matlab中SWT的代码吗?您可以通过 abidrahman2@gmail.com 与我联系
标签: image-processing ocr image-segmentation