我正在尝试实施Epshtein的论文(Detecting text in natural scene with stroke width transform(2010))关于自然图像中的文本检测。第一步是边缘检测。
我的文本中有一些额外的边缘。我应该如何删除这些?
原图:
我的边缘检测:
在示例中,您可以在文本“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 变换时遇到了另一个问题(请看 Epshtein 的论文)。
Stroke Width 适用于像 'H''Y' 这样的字符,即使对于 'S' 也是如此,因为如果我们沿着渐变方向前进,相应的边缘通常是恒定的距离。
问题出现在像“W”这样的字符中。对于第 1 次上冲的左边缘的一部分,我们将第 2 次上冲的右边缘作为其对应边缘。而对于另一部分,我们得到1st upstroke 的右边缘。这在“W”区域的笔划宽度上引入了显着差异,导致根据论文将其称为非文本区域。
任何人都可以提出任何解决方案吗?