颜色叠加算法

时间:2011-09-17 16:17:52

标签: iphone image image-processing sdk vision

我正在寻找一种在现有图片上叠加颜色的算法。类似于以下应用程序(墙画家):http://itunes.apple.com/us/app/wall-painter/id396799182?mt=8

我想要一个类似的功能,所以我可以在现有图片中绘制墙壁并将它们更改为不同的颜色。

我可以在yuv或rgb模式下工作。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用kCGBlendModeColor绘制图形上下文。来自文档:

  

使用背景的亮度值和源图像的色调和饱和度值。此模式保留图像中的灰度级。您可以使用此模式为单色图像着色或着色彩色图像。

尝试其他混合模式也可以解决问题。有关详细信息,请参阅文档(搜索“kCGBlendMode”)。

答案 1 :(得分:1)

RGB和YUV颜色模型不太适合以这种方式改变颜色。我认为最好的颜色模型是HLS。

链接:RGB to HLS and HLS to RGB conversion source code

  • H(色调)会改变基色
  • L(亮度)会改变亮度
  • S(饱和度)将改变颜色量

您可以在照片编辑应用中评估这三个组件的效果,例如GIMP的Photoshop。

答案 2 :(得分:1)

要成功地在图片中绘制墙壁,您必须执行两个步骤:

  1. 在图片中找到墙的边界(选择要着色的图像部分)

  2. 将所需颜色应用于所选区域

  3. 第一步是艰难的部分。它类似于Photoshop的魔棒工具。事实上,搜索魔杖算法会出现一些好文章,例如带有Objective-C代码的article

    第二步更容易,可以通过CGContextSetBlendModeCGContextDrawImage来实现。