2

这是原始图像。

在此处输入图像描述

我将其更改为 1) 灰度并应用 2) 阈值。

如原图所示,应用上述两种方法后仍有一些阴影存在。

但大多数图像在 2 方法后都是完美的。

在此处输入图像描述

我需要提取文本,所以我需要消除噪音。我几乎完成了这项工作,但问题是某些情况下有黑色边框,我想将其替换为白色。

我坚持只希望边框变成白色

我想创建一些白色矩形并用这些矩形填充边框,但我不知道该怎么做。

如何使用 Matlab 实现这一点?任何其他方法也将不胜感激!

4

1 回答 1

1

如果您可以确定只有边框是黑色的,为什么不简单地裁剪图像,直到所有孤立的形状都是可识别的字符?类似的东西

done = false;
ii = 1;
while (~done)

    % fill the outer border
    img(:,ii)       = 255;    img(ii,:)       = 255;
    img(:,end-ii+1) = 255;    img(end-ii+1,:) = 255;

    % (run your algorithms here. It positive match, done = true)

end

这可能是计算密集型的,因为您必须在每次迭代中进行模式识别,但您表示它仅在“某些情况下”发生。

否则,我怀疑也可以使用一些形态学操作,可能是腐蚀或细化或类似的。但这有改变你想要匹配的字符的缺点。但是,如果您必须处理的所有图像看起来都像您展示的那样,我几乎不怀疑这会给您带来任何问题。

这个问题中提到了一些检测直线的方法。我想说您可以检测到所有线条,并删除那些完全水平/垂直位于其中一个边缘的线条(周围有一个小的公差)。

于 2013-01-25T07:40:16.667 回答