RGB、HSV色彩空间模式的互相转换_第1页
RGB、HSV色彩空间模式的互相转换_第2页
RGB、HSV色彩空间模式的互相转换_第3页
RGB、HSV色彩空间模式的互相转换_第4页
RGB、HSV色彩空间模式的互相转换_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RGB HSV色彩空间模式的互相转换文章来源:http:/bobhaocb.blogchi 在开发有关bitmap方面的程序时,经常需要将位图的颜色在 RGB和HSV色彩空 间之间转换,前段时间本人研究过,现在整理一下,希望对大家能有所帮助,该 颜色转换由C+实现在开发有关bitmap方面的程序时,经常需要将位图的颜色在 RG餉HSV 色彩空间之间转换,前段时间本人研究过,现在整理一下,希望对大家能有所帮 助,该颜色转换由C+实现:RGB颜色空间转换为HSV空间颜色值: void Rgb2Hsv(float R, float G, float B, float& H, float& S, fl

2、oat&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 = mi n(R, G);min = mi n( tmp, B );tmp = max( R, G); max = max(tmp, B );V = max; / vdelta = max - min;if( max != 0 )S = delta / max; / selse/ r = g = b = 0 / s = 0, v is

3、 un defi nedS = 0;H = UNDEFINEDCOLOR;return;if( R = max )H = ( G - B ) / delta; / betwee n yellow & mage nta else if( G = max )H = 2 + ( B - R ) / delta; / between cyan & yellow elseH = 4 + ( R - G ) / delta; / betwee n mage nta & cyanH *= 60; / degreesif( H Scripts-Browse.找到你刚做好 的文件,执行一下。3,根据提示找到Ca

4、mera Raw.8bi这个Camera Raw插件的文件后确定。(一般 在 c:program filescommon filesadobeplug-insCS2File Formats 文件夹 里,如果在 c:program filescommon filesadobeplug-insCS2目录里还有个副本,那把上面的步骤做两次,把两个 Camera Raw.8bi 都破解一下) 4,破解完成,重新启动 photoshop 就可以了 如果要取消破解,重新执行一下这个 .js 文件就可以了 这个破解只是在ACM插件的兼容型号里加一个30D的标签,不会有什么副作用 的。 以下是代码:/ Fin

5、d the Official ACRplugin in the expected location or ask the user to helpvar originalACR = File(Folder.startup + /Plug-Ins/File Formats/Camera Raw.8bi);if ( !originalACR.exists ) if ( Folder.fs = Windows ) originalACR = File.openDialog(Find and Select the Camera Raw.8bi File, Photoshop Plug-ins:*.8b

6、i); else if ( Folder.fs = Macintosh ) originalACR = File.openDialog(Find and Select the Camera Raw.8bi File, pluginFilter);/ Check if hack already exists and prompt the user asking what to do var bRemove = false;var bProceed = false;var newACR = File(originalACR.path + /Camera Raw Unofficial Canon 3

7、0D.8bi);if ( newACR.exists ) bRemove= confirm(Unofficial Canon 30D support already exists.rDo you want to remove?);if (bRemove) newACR.remove();alert(UnofficialCanon 30D support has been successfully removed.rYoushould restart Photoshop.); else bProceed = confirm(Do you want to add Unofficial Canon

8、30D support?);if ( bProceed ) / Create a backup copy of the original ACR file to work with. originalACR.copy(newACR);/ Read backup copy of ACR into memory newACR.encoding = BINARY;newACR.open(r);var memoryACR = newACR.read(); newACR.close();/ Perform some sanity checks to make sure this is the ACR p

9、lug-in var validACR = true;if (!memoryACR.match(/Adobe/) validACR = false;if (!memoryACR.match(/Camera Raw/) validACR = false;if (!memoryACR.match(/Thomas Knoll/) validACR = false;if (!memoryACR.match(/Canon EOS-1D Mark II/) validACR = false;if ( validACR ) / Do the hackvar loc = memoryACR.search(/C

10、anon EOS-1D Mark II/); newACR.open(e);newACR.seek(loc, 0); newACR.write(Canon EOS 30D0);newACR.close();alert(Unofficial Canon 30D support has been added! :-)rYou need to restart Photoshop.); else Cannotalert(Official ACRPlug-in not found or incorrect version found. create Unofficial Canon 30D suppor

11、t. :-();/=/ Utility function to filter/ plugin files in dialog on Mac/ platform/= function pluginFilter(f) lcName = ; lcName.toLowerCase();if ( lcName.indexOf(.8bi) = (.length - 4) ) return true; else if ( f instanceof Folder ) return true; else return false;RGB HSVvar_R = ( R / 255 )/RG

12、B values = 0 宁 255 var_G = ( G / 255 ) var_B = ( B / 255 )var_Min = min( var_R, var_G, var_B ) /Min. value of RGB var_Max = max( var_R, var_G, var_B ) /Max. value of RGB del_Max = var_Max - var_Min /Delta RGB valueV = var_Maxif ( del_Max = 0 )/This is a gray, no chroma.H =S = :0HSV results = 0- 10el

13、se/Chromatic data.S =del_Max / var_Maxdel_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Maxif ( var_R = var_Max ) H = del_B - del_Gelse if ( var_G = v

14、ar_Max ) H = ( 1 / 3 ) + del_R - del_B else if ( var_B = var_Max ) H = ( 2 / 3 ) + del_G - del_Rif ( H 1 ) ; H -= 1 HSV RGBif ( S = 0 )/HSV values =R = V * 255G = V * 255B = V * 255 else var_h = H * 6if ( var_h = 6 ) var_h = 0 /H must be HSVH 的转换比较麻烦一点(略)S=最大值(R, G, B)-最小值(R, G, B) /最大值(R, G, B) V=

15、最大值( R, G, B) 以上,与 BB 在 2 楼的几乎一样。 V, BB 用的是: B。HSV RGB转换比较麻烦,需要按语句一步步走。比如:如果 S=0 时,R = V * 255G = V * 255B = V * 255后面(略)。Adobe色彩系统RG餉CMYK!互转换原理为了说明adobe的RGB转换CMYK的过程,不得不先涉及到一些色彩 转换程序方面的东西。CMYK_ADOBE_COLORSPACE:r = (k*c)/maxval;g = (k*m)/maxval; b = (k*y)/maxval;以上是adobe的CMYK到RGB转换公式,下面再来看看 RGB如何 转换

16、为CMYK 下面的语句是经过改写的适用于 Flash 的 actionscript/ RGB to CMY 色彩转换 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();/ CMY

17、K 色彩修正 function correctCMYK () if (rep_v != ERR var 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

18、);rep_y = Math.round(myyellow - temp2) / 255) * 100); 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论