如何替换图像的颜色?

7
我想替换一张图片的颜色。例如,将所有蓝色变为红色,而不会扭曲形状。当我尝试这样做时,我可以通过迭代每个像素来交换颜色,但是交换区域的形状会变成平面形状。
示例1输入:http://www.tutorialwiz.com/tutorials/changing_color/images/original.jpg 示例1输出:http://www.tutorialwiz.com/tutorials/changing_color/images/3.jpg 示例2:输入和输出在一起:http://www.digital-photography-school.com/wp-content/uploads/2009/07/before-after.jpg

提供输入和期望的输出样例会很有帮助。我猜问题的一部分是,虽然根据颜色映射更改颜色很容易,但决定映射应该包含什么并不容易。只是坚持使用RGB,有许多颜色被观看者认为是“红色”或“蓝色”。 - Apalala
在问题中添加了示例。 - Tony
3个回答

7

1
你所询问的问题是,严格的颜色替换会修改图像的形状。你需要做的是获取一些关于形状的信息。例如,找到边界和沿边界的阴影。我对你的建议是:
  1. 使用边缘检测来分离斑块
  2. 找到符合您要求的斑块:即具有[颜色]的宽容可能性。
  3. 识别应用的斑点和过滤器
  4. 重新着色斑点并重新着色。
在我看来,这是你能得到你想要的结果的唯一方法。
一些注意事项:找到斑点可能需要一些测试,以确定您对斑点和形状的容忍度。[连接区域]。
另一件事:阴影和相对着色将要求您对所需颜色进行偏差。

嘿@monsky,很抱歉在这里打扰你,但是你的网站除了LinkedIn之外没有联系信息,而我没有高级访问权限来给你发送邮件。你是否找到了对这个问题的满意解决方案:http://quant.stackexchange.com/questions/2158/where-can-you-find-data-on-non-trading-stocks?谢谢 :) - Zack Burt

0

我没有完全理解这个问题。 但是从给出的例子中,我看到将蓝色变成红色的过程失败了。它没有变成红色,而是变成了灰色。你所说的“平面颜色”是否就是指灰色?

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

我不确定这是否就是问题所在,也许代码片段可以帮助评估,以确保真正的问题所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接