如何在Matlab中用白色替换边框?

时间:2013-01-25 07:31:04

标签: matlab

这是原始图片。

enter image description here

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

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

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

enter image description here

我需要提取文本,所以我需要摆脱噪音。我几乎完成了工作,但问题是有些情况下有黑色边框,我想把它换成白色。

我坚持要求只有边框变成白色

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

如何使用Matlab实现这一目标? 任何其他方法也会受到欢迎!

1 个答案:

答案 0 :(得分: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

这可能是计算密集型的,因为你必须在每次迭代时进行模式识别,但是你指出它只发生在"某些情况下"。

否则,我怀疑也可以使用一些morphological operation,可能是侵蚀或变薄或类似。但这有改变你想要匹配的字符的缺点。但是,如果您需要处理的所有图像都与您展示的图像相似,我几乎不会怀疑它会给您带来任何问题。

this question中提到了一些检测直线的方法。我说你可以检测到所有的线条,然后移除那些线条(在它周围有一个小的公差),它们在其中一条边上是完全水平/垂直的