在此similar thread上,他们提出了将某些图像的背景颜色转换为透明的解决方案。
但有时背景是简单模式,就像在这种情况下:
请注意正方形背景图案。
处理图像时,通常需要删除或更改背景,但首先需要检测它(即:更改其颜色或使其透明)。例如,在上面的图片示例中,我想获取:
如何在图像中检测/更改指定的图案?
接受GUI解决方案。
首选开源解决方案(至少需要免费)。
最简单解决方案将是首选(我希望避免安装数百MB程序)。
注意:我正考虑在Photography发布此问题 StackExchange网站,但我宁愿说一个程序员的头脑(我 可能需要编辑几十个这样的图像)更贴近我 想。我不是艺术家。
答案 0 :(得分:2)
这不是一个完全开发的答案,但它确实在某种程度上考虑一种方法 - 也许其他人想要开发它...
正如你所说,如果指定了你的模式,你知道它是什么 - 好,不是吗?因此,您可以在图像中查找模式的"最小重复单元" 。在你的情况下,这是一个16x16网格:
现在,您可以在图像中搜索该模式。我在命令行使用ImageMagick,但如果您愿意,可以使用其他工具。 ImageMagick安装在大多数Linux发行版上,可免费用于OSX和Windows。所以,我在你的地球图像中搜索那个网格,ImageMagick给我一个输出图像,在两个图像匹配的每个位置的左上角显示白点:
compare -metric ae -dissimilarity-threshold 1.0 -compose src -subimage-search globe.gif grid.png res.png
这样就可以在档案res-1.png
现在,白点是图像中找到16x16 "最小重复单位" 的位置,但是在左上角,我将它们向右和向下移动8将像素放到匹配区域的中心,然后我创建一个新的输出图像,其中每个像素是之前存在的16x16网格的最大像素:
convert res-1.png -roll +8+8 -statistic maximum 16x16 z.png
我现在可以反转该掩码然后用它来设置原始图像的不透明度,从而消隐与"最小重复单位" 匹配的区域:
convert globe.gif \( z.png -negate \) -compose copy_opacity -composite q.png
不,它并不完美,但这是一种可以改进的方法......