源:http://blog.sina.com.cn/s/blog_4d80055a01000atu.html

import java.lang.Math;
import java.awt.*; public class ColorConverter{ public ColorConverter(){
} //RGB转换CMYk
public int[] rgb2cmyk(int R,int G,int B){
int cmyk []= new int[4];
cmyk[3]=(int)(Math.min(Math.min(255-R,255-G),255-B)/2.55);//cmykK
int MyR = (int)(R/2.55);
int Div = 100-cmyk[3];
if (Div == 0)Div = 1;
cmyk[0] = ((100-MyR-cmyk[3])/Div)*100;//cmykC
int MyG = (int)(G/2.55);
cmyk[1] = ((100-MyG-cmyk[3])/Div)*100;
int MyB = (int)(B/2.55);
cmyk[2] = ((100-MyB-cmyk[3])/Div)*100; return cmyk;
}
public Color cmyk2rgb(int C,int M,int Y,int K){
float MyC = C/100;
float MyM = M/100;
float MyY = Y/100;
float MyK = K/100; int R = (int)((1-(MyC*(1-MyK)+MyK))*255);
int G = (int)((1-(MyM*(1-MyK)+MyK))*255);
int B = (int)((1-(MyY*(1-MyK)+MyK))*255); if (R<0) R=0;
if (G<0) G=0;
if (B<0) B=0;
if (R>255) R=255;
if (G>255) G=255;
if (B>255) B=255; Color rgb = new Color(R,G,B);
return rgb;
} public int[] rgb2yuv(int R,int G,int B){ int yuv[] = new int[3];
yuv[0] =(int)(0.299*R+0.587*G+0.114*B);
yuv[1] = (int)(-0.147*R-0.289*G+0.437*B);
yuv[2] = (int)(0.615*R-0.515*G-0.1*B);
return yuv;
}
public Color yuv2rgb(int y,int u,int v){ int R = (int)(y+1.14*v);
int G = (int)(y-0.394*u-0.581*v);
int B = (int)(y+2.028*u);
if (R<0) R=0;
if (G<0) G=0;
if (B<0) B=0;
if (R>255) R=255;
if (G>255) G=255;
if (B>255) B=255; Color rgb=new Color(R,G,B);
return rgb;
}
public int[] rgb2yiq(int R,int G,int B){ int yiq[] = new int[3];
yiq[0] = (int)(0.299*R+0.587*G+0.114*B);
yiq[1] = (int)(0.596*R-0.274*G-0.322*B);
yiq[2] = (int)(0.212*R-0.523*G+0.311*B);
return yiq;
}
public Color yiq2rgb(float y,float i,float q){ int R = (int)(y+0.956*i+0.621*q);
int G = (int)(y-0.272*i-0.647*q);
int B = (int)(y-1.105*i+1.702*q); if (R<0) R=0;
if (G<0) G=0;
if (B<0) B=0;
if (R>255) R=255;
if (G>255) G=255;
if (B>255) B=255; Color rgb = new Color(R,G,B);
return rgb;
} //RGB转换YCbCr
public int[] rgb2ycbcr(int R, int G,int B){ int ycbcr[] = new int[3];
ycbcr[0] = (int)(0.299*R+0.587*G+0.114*B);
ycbcr[1] = (int)(-0.1687*R-0.3313*G+0.5*B+128);
if (ycbcr[1] > 255) ycbcr[1] = 255;
ycbcr[2] = (int)(0.5*R-0.4187*G-0.0813*B+128);
if (ycbcr[2] > 255) ycbcr[2] = 255; return ycbcr;
}
public Color ycbcr2rgb(int Y,int Cb,int Cr){
int MyR = (int)(Y + 1.402 * (Cr -128));
int MyG = (int)(Y - 0.34414 * (Cb - 128) - 0.71414 * (Cr - 128));
int MyB = (int)(Y + 1.772 * (Cb -128)); if (MyR > 255) MyR = 255;
if (MyG > 255) MyG = 255;
if (MyB > 255) MyB = 255; if (MyR < 0) MyR =0;
if (MyG < 0) MyG =0;
if (MyB < 0) MyB =0; Color rgb = new Color(MyR,MyG,MyB);
return rgb;
}
}

实现RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法的更多相关文章

  1. RGB和YUV、YCbCr 以及格式的转换总结

    比较好的文章收集链接: https://www.douban.com/note/76361504/ http://blog.sina.com.cn/s/blog_a85e142101010h8n.ht ...

  2. 视频色彩空间RGB、YUV、YCbCr

    RGB.YUV和YCbCr都是人为规定的彩色模型或颜色空间(有时也叫彩色系统或彩色空间).它的用途是在某些标准下用通常可接受的方式对彩色加以描述.本质上,彩色模型是坐标系统和子空间的阐述. RGB R ...

  3. RGB、YUV和YCbCr介绍【转】

    RGB: 就是常说的红(Red).绿(Green)和蓝(Blue),每个图像的像素点由RGB三个通道的值组成. YUV和YCbCr: YUV与RGB的转换: Y'= 0.299*R' + 0.587* ...

  4. 彩色图像--色彩空间 CMY(K)场地

    得知DIP文章63日 转载请注明文章出处:http://blog.csdn.net/tonyshengtan .出于尊重文章作者的劳动,转载请标明出处!文章代码已托管.欢迎共同开发:https://g ...

  5. 图像处理之基础---yuv420及其rgb,bayer, yuv, RGB的相互转换详解

    YUV格式解析1(播放器——project2) 根据板卡api设计实现yuv420格式的视频播放器 打开*.mp4;*.264类型的文件,实现其播放. 使用的视频格式是YUV420格式   YUV格式 ...

  6. Color Models (RGB, CMY, HSI)

    目录 概 定义 RGB CMY CMYK HSI 相互的转换 RGB <=> CMY CMY <=> CMYK CMY > CMYK CMYK > CMY RGB ...

  7. .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度

    .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度   随机颜色在日常开发中很常用到,有时候要控制颜色明亮度,比如在白色背景网页上的随机颜色,一般要求颜色稍微暗一 ...

  8. HTML RGB 颜色表 16进制表 颜色对应表

    HTML RGB 颜色表 16进制表 颜色对应表  16 常用颜色表(颜色 + RGB + 名字): Color Value Name   Color Value Name   #00FFFF aqu ...

  9. 机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法

    K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法, ...

随机推荐

  1. asp脱离源代码管理

    当项目中出现“未能找到与此解决方案关联的源代码管理提供程序.项目将视为不受源代码管理” 解决方法:1.vs2013打开项目, 2.提示“您正在打开的解决方案已绑定到以下Team Foundation ...

  2. git容易被忽略的准备工作命令

    安装git命令 $ apt-get install git-core 配置用户信息 $ git config --global user.name "wxw" $ git conf ...

  3. php file取重复

    function FetchRepeatMemberInArray($array) { // 获取去掉重复数据的数组 $unique_arr = array_unique ( $array ); // ...

  4. Chapter 2 Open Book——5

    I was relieved that I had the desk to myself, that Edward was absent. 我能一个人一张桌子很开心,就因为Edward 没来. I t ...

  5. 第十三节,基本数据类型,数字int字符串str

    基本数据类型 数字 int 字符串 str 布尔值 bool 列表 list 元组 tuple 字典 dict 数据类型关系图 查看一个对象的类 如:如查看对象变量a是什么类          用到函 ...

  6. spark第二篇--基本原理

    ==是什么 == 目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重复查询检索 官方定义 aMapReduce-like cluster computing framework de ...

  7. Myeclipse8.6安装freemarker插件

    1. 打开http://sourceforge.net/projects/freemarker-ide/files/ 下载最新版本,目前本人下载时最新版本是:freemarker-ide-0.9.14 ...

  8. 从运营商小广告到HTTPS

    相信很多人都试过这样的经历,浏览一个正常的网站时,右下突然角弹出一堆小广告,而且这些广告的内容和你浏览的网站格格不入: 前几天还有某微博用户爆料访问github时居然也有广告: 又或者,你有没有试过因 ...

  9. 高可用开源方案 Keepalived VS Heartbeat对比

    最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. ...

  10. java memcache应用

    import java.io.Serializable; import java.text.DateFormat; import java.util.Date; import java.util.Ma ...