




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RGB、HSV色彩空间模式的互相转换文章来源:在开发有关bitmap方面的程序时,经常需要将位图的颜色在RGB和HSV色彩空间之间转换,前段时间本人研究过,现在整理一下,希望对大家能有所帮助,该颜色转换由C+实现 在开发有关bitmap方面的程序时,经常需要将位图的颜色在RGB和HSV色彩空间之间转换,前段时间本人研究过,现在整理一下,希望对大家能有所帮助,该颜色转换由C+实现:RGB颜色空间转换为HSV空间颜色值:void Rgb2Hsv(float R, float G, float B, float& H, float&
2、 S, float&V) / r,g,b values are from 0 to 1 / h = 0,360, s = 0,1, v = 0,1 / if s = 0, then h = -1 (undefined) float min, max, delta,tmp; tmp = min(R, G); min = min( tmp, B ); tmp = max( R, G);
3、160; max = max(tmp, B ); V = max; / v delta = max - min; if( max != 0 ) S = delta / max; / s else / r = g = b = 0 / s = 0, v is undefined S = 0;
4、 H = UNDEFINEDCOLOR; return; if( R = max ) H = ( G - B ) / delta; / between yellow & magenta else if( G = max ) H = 2 + ( B - R ) / delta; /
5、 between cyan & yellow else H = 4 + ( R - G ) / delta; / between magenta & cyan H *= 60; / degrees if( H < 0 ) H += 360;HSV颜色空间转换为RGB空间颜色值:void Hsv2Rgb(float H, float S, float V, float &am
6、p;R, float &G, float & int i; float f, p, q, t; if( S = 0 ) / achromatic (grey) R = G = B = V; return; H /= 60; /
7、 sector 0 to 5 i = floor( H ); f = H - i; / factorial part of h p = V * ( 1 - S ); q = V * ( 1 - S * f ); t = V * ( 1 - S * ( 1 - f ) ); switch( i ) case 0:
8、;R = V; G = t; B = p; break; case 1: R = q; G = V; B = p; break; case
9、2: R = p; G = V; B = t; break; case 3: R = p; G = q; B = V; break;
10、 case 4: R = t; G = p; B = V; break; default: / case 5: R = V; G = p; B = q; br
11、eak; s=max(r,g,b)-min(r,g,b)/max(r,g,b)b=max(r,g,b)RGB > HSVvar_R = ( R / 255 ) /RGB values = 0 ÷ 255var_G = ( G / 255 )var_B = ( B / 255 )var_Min = min( var_R, var_G, var_B )
12、/Min. value of RGBvar_Max = max( var_R, var_G, var_B ) /Max. value of RGBdel_Max = var_Max - var_Min /Delta RGB value V = var_Maxif ( del_Max = 0 )
13、60;/This is a gray, no chroma. H = 0 /HSV results = 0 ÷ 1 S = 0else
14、0; /Chromatic data. S = del_Max / var_Max del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_
15、Max del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max if ( var_R = var_Max ) H = del_B - del_G else if ( var_G = var_Max ) H = ( 1 / 3 ) + del_R - del_B else if ( var_B = var_Max ) H = ( 2 / 3 ) + del_G - del_
16、R if ( H < 0 ) ; H += 1 if ( H > 1 ) ; H -= 1UID386215 帖子13286 精华0 积分76 钻石30 威望9249 阅读权限50 注册时间2005-6-3 查看详细资料HSV > RGBif ( S = 0 )
17、60; /HSV values = 0 ÷ 1 R = V * 255 G = V * 255 B = V * 255else var_h = H * 6 if ( var_h = 6 ) var_h = 0 /H must be < 1 var_i = int( var_h )
18、0; /Or . var_i = floor( var_h ) var_1 = V * ( 1 - S ) var_2 = V * ( 1 - S * ( var_h - var_i ) ) var_3 = V * ( 1 - S * ( 1 - ( var_h - var_i ) ) ) if ( var_i = 0 ) var_r = V var_g = var_3 ; var_b = var_1
19、 else if ( var_i = 1 ) var_r = var_2 ; var_g = V var_b = var_1 else if ( var_i = 2 ) var_r = var_1 ; var_g = V var_b = var_3 else if ( var_i = 3 ) var_r = var_1 ; var_g = var_2 ; var_b = V
20、0; else if ( var_i = 4 ) var_r = var_3 ; var_g = var_1 ; var_b = V else var_r = V var_g = var_1 ; var_b = var_2 R = var_r * 255 &
21、#160; /RGB results = 0 ÷ 255 G = var_g * 255 B = var_b * 255RGB > HSVH的转换比较麻烦一点(略)S=最大值(R,G,B)-最小值(R,G,B)/最大值(R,G,B)V=最大值(R,G,B)以上,与BB在2楼的几乎一样。V,BB用的是:B。HSV > RGB转换比较麻烦,需要按语句一步步走。比如:如果S=0时,R = V * 255G
22、 = V * 255B = V * 255后面(略)。Adobe色彩系统RGB和CMYK相互转换原理 为了说明 adobe 的 RGB 转换 CMYK 的过程,不得不先涉及到一些色彩转换程序方面的东西。CMYK_ADOBE_COLORSPACE:r = (k*c)/maxval;g = (k*m)/maxval;b = (k*y)/maxval; 以上是 adobe 的 CMYK 到 RGB转换公式,下面再来看看 RGB 如何 转换为 CMYK下面的语句是经过改写的适用于 Flash 的 actionscript/ RGB to CMY 色彩
23、转换function rgbtocmy () mycyan = 255 - myred; mymagenta = 255 - mygreen;myyellow = 255 - myblue;correctCMYK(); / CMY to RGB 色彩转换 function cmytorgb () myred = 255 - mycyan;mygreen = 255 - mymagenta;myblue = 255 - myyellow;correctCMYK(); / CMYK 色彩修正function correctCMYK () if (rep_v != "ERR" v
24、ar temp = Math.min(Math.min(mycyan, mymagenta), myyellow);if (temp != 0) temp2 = Math.round(rep_v / 100) * temp);rep_k = Math.round(temp2 / 255) * 100);rep_c = Math.round(mycyan - temp2) / 255) * 100);rep_m = Math.round(mymagenta - temp2) / 255) * 100);rep_y = Math.round(myyellow - temp2) / 255) * 1
25、00); else rep_c = Math.round(mycyan / 255) * 100);rep_m = Math.round(mymagenta / 255) * 100);rep_y = Math.round(myyellow / 255) * 100);rep_k = 0; 我们知道, RGB 和 CMYK 并不能一一对应,这里面存在的问题是黑色部分的替换值的取值问题。 但是, RGB 所可以全部对应的,是CMY 格式,其最取值范围是0-255。从色轮上我们可以很容易的了解到这其中的补色计算关系。因此,CMY 和 RGB 的对换 可以说是“无损,可逆转”的。当从RGB 得到相应的CMY 之后,我们若要得到 CMYK 值,就必须定义一个“黑色替换值”,也就是说提取各色通道中的若干成分来形成黑色通道。CMYK 的取值是 0-100。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农村物流配送员招聘考试复习大纲与模拟题集
- 2025年不动产登记代理人考试高频考点及模拟题
- 2025年乡镇农技站招聘外来入侵物种普查员面试模拟题集
- 2025年人力资源管理师认证考试模拟题及答案指南
- 猪只品种改良方案
- 保障性租赁住房开发建设方案
- 水库大坝防护施工技术方案
- 面包生产的废水处理与环保措施
- 四川省内江市六中2025-2026学年高三上学期开学检测语文试题(解析版)
- 屠宰场温湿度控制与管理
- 2024ESC心房颤动管理指南解读
- 村级换届业务培训
- 《预防未成年人犯罪》课件(图文)
- 医院数据分级分类制度
- 常见皮肤病的治疗课件
- GB/T 22838.5-2024卷烟和滤棒物理性能的测定第5部分:卷烟吸阻和滤棒压降
- 议论文阅读训练10篇(附答案及解析)
- 《医师资格考试报名资格规定2014版》
- 《市场营销英语》全套教学课件
- 2025届广东省实验中学数学高一下期末质量检测试题含解析
- 无线传感器网络与物联网通信技术全套教学课件
评论
0/150
提交评论