- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? Photoshop提供了丰富的图象图层混合模式,其中的颜色混合模式是用下图层图象的亮度与上图层填充颜色或者图象色彩进行混合,形成的结果既有着上图层的色彩,又保留了下层图象的灰度,基于这种混合特性,颜色混合模式常用来对灰度图象进行着色。
? 如何用程序代码准确地实现Photoshop的图层颜色混合模式,一直是程序员们热衷的话题。本文采用BCB2007和GDI+等工具,较好地实现了其主要功能(不考虑不透明度和填充选项)。
? 按照Photoshop的解释,颜色混合模式是用上图层图象颜色的色相、饱和度与下图层图象像素的明度进行的混合。如此,我们在程序代码中,就需要首先将上层图象颜色的色相、饱和度和下图层图象颜色的明度(亮度)提取出来,色相、饱和度的提取是按照HSV的方式进行的,然后按照下图层颜色明度按照0.3R +0.59G + 0.11B?的比例逐像素进行运算合成,可事实上,我在颜色合成过程中,无论是采用HSV还是HSL甚或其它HSB方式,均没法达到应有的效果。例如取上层颜色R=225,G=211,B=179,提取的H,S分别为42,20%,下层灰度为179,采用HSV或者SHL合成颜色的G,B均为0,而实际合成的R,G,B应分别为192,178,146。
? 通过在Photoshop中反复试验,发现上层颜色中的饱和度在合成过程中似乎没起什么作用,最终合成结果只要保证上层颜色色相和下层灰度的比例不变就行了,这也是颜色混合模式的2个必要条件,其中灰度比例是必须保证的,如果二者发生冲突,可不考虑色相比例(如图象某像素的灰度为0或者255)。按照这个思路,我放弃了用HSB进行合成的方法,而按照上面2个条件采用解方程的方法来实现颜色混合。为此,可列出下列等式关系:
1:Max - Min = a
2:Mid - Min = b
3:0.3R + 0.59G + 0.11B = c
其中,Max,Mid,Min分别为上层颜色R、G、B分量中的最大、中间、最小值。等式1和2代表了上层颜色色相的比例关系,等式3则代表着下层颜色的灰度比例。
如果只考虑60度以内的色相和假定RGB,那么用上面的3个等式可列为下面的三元一次方程组:
1)? R - B = a
2)? G - B = b
3)? 0.3R + 0.59G + 0.11B = c
??可以将满足色相在0 - 60范围,RGB的任何颜色的常数代入上面的方程组进行验算,其结果是正确的。但是实际的颜色混合是用2个颜色不同的灰度和色相,采用上面的方程组解出的RGB值有可能会超出0 -- 255的范围,而我们又无法在方程组中加入这种范围限制,因此对于超出范围的RGB值,还必须在程序代码中进行调整。下面是我写的一个单像素合成代码。
\o view plain view plain \o copy to clipboard copy to clipboard \o print print \o ? ?
//--------------------------------------------------------------------------- ??
typedef?union???????????//?颜色分量交换结构 ??
{??
????int?tmp;????????????//?交换时用的临时变量 ??
????struct??
????{??
????????short?value;????//?颜色分量值 ??
????????short?index;????//?颜色分量索引:blue=0,green=1,red=2 ??
????};??
}RgbSwap,?*PRgbSwap;??
??
typedef?struct??
{??
????unsigned?char?v[4];??
}ArgbArray;??
//--------------------------------------------------------------------------- ??
inline?void?SwapRgb(RgbSwap?a,?RgbSwap?b)??
{??
????a.tmp?+=?b.tmp;??
????b.tmp?=?a.tmp?-?b.tmp;??
????a.tmp?-=?b.tmp;??
}??
//--------------------------------------------------------------------------- ??
Color?ColorMix(Color?color,?int?gray)??
{??
????const?double?ys[]?=?{0.11,?0.59,?0.30};??
??
?
您可能关注的文档
最近下载
- DL∕T 793.1-2017 发电设备可靠性评价规程 第1部分:通则.pdf VIP
- 五年级语文下册《写字表》田字格字帖.pdf VIP
- 河北仅销售预包装食品经营者备案信息采集表、变更表、注销表、备案编号规则.docx VIP
- 安防设备设施保养维修记录表.doc VIP
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.pdf VIP
- 人教版数学六年级上册第三单元分层作业设计.pdf VIP
- 2024全国建材行业职工助推高质量发展主题竞赛题库大全-中(多选题汇总).docx VIP
- 有趣的健康测试闭眼单腿站立试验.pptx VIP
- 2024全国建材行业职工助推高质量发展主题竞赛题库大全-中(多选题汇总).docx VIP
- 2025全国建材行业职工助推高质量发展主题竞赛考试题库及答案.docx VIP
文档评论(0)