我有一堆未压缩的双色调TIF文档图像。所有这些都在中间有一个水印。当我通过OCR运行它们时,与水印重叠的文本无法识别。我试图看看是否可以应用某种类型的清理来删除那些水印,以便能够识别丢失的文本。
同样,图像是黑白的,但是当你看水印时,它看起来是灰色的,因为它有一个黑白像素的图案,使得水印中的字母比普通文字更“密集”。同时,水印字母非常大,比常规文本大得多。
有点类似图像的一个例子是this(除了这个是颜色,我的情况下的水印字符更厚更大;我的水印也短得多:只有3到4个字母长)
似乎可能有某种清理过滤器类似于从图像中移除大的黑色边框,除了边框比水印更“密集”,因此它们看起来“更黑”。
我有三种工具供我使用:GIMP,ImageMagick和IrfanView。您能否推荐可能对我有用的任何这些工具子集的任何特定功能?
答案 0 :(得分:3)
玩对比等没有帮助,但我发现了一种不同的方式。如上所述,常规文本比水印文本“更密集”,这意味着常规黑色像素具有比水印黑色像素更多的周围黑色像素。所以我设计了一个简单的基于窗口的过滤和阈值算法。
以下是我在Matlab中使用5X5窗口的方法:
im=imread('imageWithWmark.tif');
imInv = ~im;
nr=size(imInv,1);
nc=size(imInv,2);
d = 2; % for 5X5 window
counts = zeros(nr,nc);
for rr = d+1 : nr-d-1
for cc = d+1 : nc-d-1
counts(rr,cc) = nnz(imInv(rr-d:rr+d,cc-d:cc+d));
end
end
thresh=10; % 10 out of 25 -- the larger the thresh the thinner the resulting letters are
imThresh = (counts>=thresh) & imInv;
imwrite(~imThresh,sprintf('Thresh_%d.tif',thresh),'Compression','none','Resolution',300);
当然,窗口的大小,阈值和其他参数取决于页面上常规文本的参数(字母更大/更小,更厚/更薄等),但即使这个初始版本工作得很好