根据当前主题重新渲染图像?

时间:2009-11-25 15:38:35

标签: c++ image-processing visual-c++

我想开发一个程序,它基于给定的主题以与ms-powerpoint应用程序相同的方式重新生成输入图像。

我正在提供以下链接,显示我想要做什么。

我希望根据当前主题生成与暗变异光变化标题下方链接中的图像相同的图像。

http://blogs.msdn.com/powerpoint/archive/2006/07/06/658238.aspx

有人可以给我一些想法,关于如何有效地实现它的信息吗?

4 个答案:

答案 0 :(得分:2)

您可以查看HSL colorspace,以便能够获得相同的结果。 HSL表示色调,饱和度,亮度。

您可以保持图像每个像素的亮度,只改变色调。我想这会让你实现你想要的。您可以在维基页面上找到RGB到HSL的转换。

希望有所帮助。

答案 1 :(得分:2)

步骤1:选择要表示黑白的颜色。对于黑暗变化,选择黑色和浅色;对于光线变化,选择深色和白色。

第2步:将像素转换为灰色。对此的通用公式是L = R * 0.3 + G * 0.59 + B * 0.11。

步骤3:使用灰度值在颜色之间插值。 output.R = (L/255)*light.R + (1-(L/255))*dark.R同样适用于绿色和蓝色。

答案 2 :(得分:1)

您可以使用像CxImage这样的库并将图像转换为灰度,然后将mix命令与您制作的与原始图像大小相同的图像混合使用,并使用过滤器将两者与Mix命令混合使用。您可以进行混合屏幕,这应该将像素着色为结果图像中第二个图像的颜色。尝试使用CxImage一点,看它是否会做你想做的事。这一切都在我的头脑中,我已经尝试做这样的事了一段时间。 YMMV,但这将是最简单的实现。您可以随时查看CxImage如何进行混合,并自行将其应用于图像。

答案 3 :(得分:0)

我必须感谢Mark和Patrice的指导,这有助于我实现这一目标。

对于光线变化,我通过将主题颜色转换为HSV颜色空间并找到输出颜色与黑色(输入)的主题颜色之间的关系来完成。

发现该关系对于饱和度和值是线性的,并且色调几乎是恒定的。

我使用插值公式使其适用于任何给定的主题。 我也利用色彩矩阵来达到预期的效果。

同样对于暗变化我使用白色作为输入并应用相同的技术。