【问题标题】:How can I convert image background pattern?如何转换图像背景图案?
【发布时间】:2016-04-07 12:16:09
【问题描述】:

similar thread 上,他们提出了将某些图像的背景颜色转换为透明的解决方案。
但有时背景是一个简单的图案,比如下面这个例子:

注意方形背景图案。

在处理图像时,背景确实经常需要移除或更改,但首先您需要检测它(即:更改其颜色,或使其透明)。例如,在上面的图像示例中,我想获取

如何检测/更改图像中的指定图案?

接受 GUI 解决方案。
首选开源解决方案(至少需要免费)。 最简单的解决方案将是首选(我想避免安装数百 MB 的程序)。

注意:我正在考虑将这个问题发布到 Photography StackExchange 站点,但我更愿意说出程序员的想法(我 可能需要编辑几十张这样的图像)更接近我的 想。我不是艺术家。

【问题讨论】:

    标签: image-processing


    【解决方案1】:

    这不是一个完全成熟的答案,但它确实在某种程度上有助于思考一种方法 - 也许其他人想开发它......

    如果,正如你所说,你的模式是指定的,你知道它是什么——很好,不是吗?因此,您可以在图像中查找图案的“最小重复单元”。在您的情况下,它是一个 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
    

    不,它并不完美,但它是一种可以改进的方法的想法......

    【讨论】:

    • 一个非常有趣的想法,马克。对于常见的背景模式,构建“移除”脚本可能是值得的。
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 2011-06-20
    • 1970-01-01
    • 2019-04-26
    • 2016-05-24
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多