这是原始图片。
我将其改为1)灰度并应用2)阈值。
如原始图像所示,在应用上述两种方法后仍然存在一些阴影。
但大多数图像在2种方法后都是完美的。
我需要提取文本,所以我需要摆脱噪音。我几乎完成了工作,但问题是有些情况下有黑色边框,我想把它换成白色。
我坚持要求只有边框变成白色
我想创建一些白色矩形并用这些矩形填充边框,但我不知道该怎么做。
如何使用Matlab实现这一目标? 任何其他方法也会受到欢迎!
答案 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中提到了一些检测直线的方法。我说你可以检测到所有的线条,然后移除那些线条(在它周围有一个小的公差),它们在其中一条边上是完全水平/垂直的和。