【问题标题】:How to replace color of an image?如何替换图像的颜色?
【发布时间】:2011-07-12 23:46:48
【问题描述】:

我想替换图像的颜色。例如,将所有蓝色变为红色,而不会对形状造成任何扭曲。当我尝试这个时,我可以通过迭代每个像素来交换颜色,但是交换区域的形状变成了平面形状。

示例 1 输入:http://www.tutorialwiz.com/tutorials/changing_color/images/original.jpg
example1 输出:http://www.tutorialwiz.com/tutorials/changing_color/images/3.jpg

example2: 一起输入输出:http://www.digital-photography-school.com/wp-content/uploads/2009/07/before-after.jpg

【问题讨论】:

  • 输入和预期输出的示例会有所帮助。我只能猜测问题的一部分是虽然根据颜色图更改颜色很容易,但决定地图应该包含的内容并不容易。只是坚持 RGB,有许多颜色可以被观众视为“红色”或“蓝色”。
  • 向问题添加示例。

标签: java image-processing computer-vision image-manipulation rgb


【解决方案1】:

执行此操作的常用方法是使用RGBImageFilter。请参阅FilteredImageSource 的文档了解如何使用此类过滤器。

【讨论】:

    【解决方案2】:

    我没有完全理解这个问题。 但是从给出的示例中,我看到将蓝色变为红色的过程失败了。它不是变成红色,而是变成灰色。灰色是你所说的平面吗?

    如果是这样,它看起来像颜色通道错误。 要将蓝色变为红色,我们必须将(0,255,0) 更改为(255,0,0)

    我不确定是否是问题所在,也许代码 sn-p 可以帮助评估。确定真正的问题是什么。

    【讨论】:

      【解决方案3】:

      您所问问题的问题是严格的颜色替换会修改图像的形状。你需要做的是获得一些关于形状是什么的信息。 IE。找到边界和沿边界的阴影。我给你的建议是:

      1. 使用边缘检测来分离斑点
      2. 找到适合您要求的 blob:即具有 [color]ish 的容忍可能性。
      3. 识别应用的 blob 和过滤器
      4. 重新着色斑点并重新着色。

      IMO:这是获得所需结果的唯一方法。

      一些注意事项:查找 blob 可能需要进行一些测试,以确定您对 blob 和形状的容忍度。 [连接区域]。

      另一件事:阴影和相对着色将要求您拥有所需颜色的设备。

      【讨论】:

      • 嘿@monsky,很抱歉在这里打扰您,但您的网站不包含 LinkedIn 以外的联系信息,我没有高级访问权限来向您发送邮件。你有没有找到一个令人满意的解决方案:quant.stackexchange.com/questions/2158/…?谢谢:)
      猜你喜欢
      • 2018-05-11
      • 2019-11-16
      • 2010-12-05
      • 1970-01-01
      • 2020-10-07
      • 2016-02-07
      • 2011-05-16
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多