我有一个扫描图像,基本上是黑色的打印在一些奇怪的(非灰色)背景上,比如说,绿色或黄色(想想旧报纸)。在
如何去除绿色/黄色,并接收到与原始图像相同多的灰色结构完整的灰色图片?一、 我想保持字母周围的灰色,以达到消除混叠效果或是灰色区域,但我想把任何一个甚至是遥远的绿色/黄色变成纯白色?在
请注意,背景绝不是均匀的;因此算法应该能够接受一种颜色和一个误差范围或一个颜色范围。在
加分:如何自动确定背景色?在
我想将Python与Imaging库或ImageMagick一起使用。在
注意:我知道像unpaper这样的包。我对unpaper的问题是,它产生的黑白图像可能对OCR软件很好,但对人眼不好。在
我比Python程序员更喜欢C++,所以我不能给你一个代码示例。但一般的算法是这样的:
查找背景色: 你做一个图像的直方图。直方图应该有两个峰值,代表背景色和前景色。因为你知道背景有更高的强度,所以你选择强度更高的峰值,那就是背景色。 现在有了RGB背景
(R_bg, G_bg, B_bg)
将背景设置为白色: 循环计算所有像素的距离:
如果距离小于阈值,则将像素设置为白色。你可以尝试不同的阈值,直到你得到一个好的结果。在
我知道这个问题很古老,但我和ImageMagick玩了一玩,试图做一些类似的事情,然后想到了这个:
它转换成:
在这方面:
至于“平均”颜色,我使用了:
^{pr2}$这是什么颜色:
经过更多的实验,我可以得到:
使用这个:
我想让一个任意的背景色透明前一段时间,并开发了这个脚本。它采用图像中最流行的(背景)颜色,并创建透明度与背景色的距离成比例的alpha遮罩。对于大图像来说,获取RGB颜色空间距离是一个昂贵的过程,因此我尝试了一些使用numpy和快速整数sqrt近似操作的优化。首先转换成HSV可能是正确的方法。如果我没帮你解决这个问题:
相关问题 更多 >
编程相关推荐