我正在尝试在自然图像中检测文本,使用pEpshtein的论文(使用笔画宽度变换检测自然场景中的文本(2010))。第一步是边缘检测。
我的文本内部出现了一些额外的边缘。我应该如何去除这些边缘?
原始图像: 我的边缘检测结果: 在这个例子中,你可以看到text“WHY HURRY”中有额外的边缘。
我已经在Matlab中尝试了以下步骤:
我的文本内部出现了一些额外的边缘。我应该如何去除这些边缘?
原始图像: 我的边缘检测结果: 在这个例子中,你可以看到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的建议,我发现均值漂移滤波器在文本区域分割方面效果很好。现在我在实现笔画宽度变换(请参阅Epshtein的论文)时遇到了另一个问题。
笔画宽度对像'H''Y'这样的字符甚至对'S'都有效,因为相应的边缘通常在梯度方向上保持恒定距离。
问题出在像'W'这样的字符上。对于第一个上笔画的左侧的一部分,我们得到了它的第二个上笔画的右侧边缘作为其相应的边缘。而对于另一部分,则得到了第一个上笔画的右侧边缘。这导致了'W'区域的笔画宽度显著变化,从而根据论文将其称为非文本区域。
有人能提供任何解决方案吗?