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;
}
}

转载于:https://my.oschina.net/u/1585312/blog/997462

RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现)相关推荐

  1. java rgb转yuv_RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现)

    import java.lang.Math; import java.awt.*; public class ColorConverter{ public ColorConverter(){ } // ...

  2. 图像色彩编码YUV(YCbCr)的基本知识

    参考地址 https://www.cnblogs.com/lifan3a/articles/4930182.html YUV与YCbCr的定义 YCbCr是DVD.摄像机.数字电视等消费类视频产品中, ...

  3. RGB、YUV和YCbCr三种颜色空间

    转载自:https://blog.csdn.net/u010186001/article/details/52800250 [转载] http://blog.sina.com.cn/s/blog_a8 ...

  4. RGB、YUV和YCbCr

    之前对RGB.YUV和YCbCr一直没有清晰的理解和认识,今天打算做一个小结,结合网上的文章谈谈自己的看法,也希望有机会看到这篇文章的人能指点一二,相互交流,共同进步. 首先要说明,上述的RGB.YU ...

  5. RGB、YUV、YCbCr几种颜色空间的区别

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

  6. c语言yuv图片cb,RGB、YUV和YCbCr

    之前对RGB.YUV和YCbCr一直没有清晰的理解和认识,今天打算做一个小结,结合网上的文章谈谈自己的看法,也希望有机会看到这篇文章的人能指点一二,相互交流,共同进步. 首先要说明,上述的RGB.YU ...

  7. FPGA-图像处理-色彩空间转换(RGB转YUV和YCBCR)

    之前转了一篇定点运算的文章希望大家看完再看这个, 涉及到FPGA的色彩空间转换的知识,一定要提定点运算,其实之前在进行小数运算的时候已经用到了,这里我也不详细说了看文章吧 OV7670摄像头采集的数据 ...

  8. YUV YPbPr YCbCr CCIR 601 CCIR 656

                                                        YUV YPbPr YCbCr CCIR 601 CCIR 656   转自:http://bl ...

  9. 白平衡的工作原理、作用与YUV、YCbCr的联系与区别

    白平衡是一个很抽象的概念:最通俗的理解就是让白色所成的像依然为白色,如果白是白,那其他景物的影像就会接近人眼的色彩视觉习惯.调整白平衡的过程叫做白平衡调整,白平衡调整在前期设备上一般有三种方式:预置白 ...

  10. 色彩空间(RGB, HSV, LAB, YUV)

    RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统(计算机.电视机等都是采用RGB颜色空间来进行图像显示).一般来说,电脑,电视机等是利用三个电子枪分别发射R分量 ...

最新文章

  1. 广东生态所孙蔚旻团队EST发表尾矿微生态调查两部曲
  2. Dubbo中基于权重的随机算法
  3. Collection+JSON 文档
  4. ITK:从Seed开始迭代图像
  5. docker --- 使用docker-compose.yml生成redis,并连接redis-cli
  6. Python笔记-使用cython生成dll,C++进行调用
  7. Virtuabox 虚拟机克隆方法
  8. 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
  9. 三阶段DEA模型操作步骤笔记
  10. python进阶例题
  11. 操作系统进程调度算法
  12. 计算机体系结构.是系统结构还是体系结构
  13. 用计算机弹奏体面6,抖音用计算器弹奏音乐曲谱大全 极乐净土、体面和成都等歌曲...
  14. php 显示连接数据库失败,php数据库连接失败的原因及解决办法
  15. ARM7-LPC213x(五)UART0 和 UART1
  16. 638-字符串模式匹配-KMP算法
  17. 数据处理之异常值处理
  18. OpenGL——EGL
  19. 复合选择器之后代选择器
  20. 如何高效制作数据可视化大屏,大屏高效制作攻略分享,总有一款适合你

热门文章

  1. 如何区分项目组合管理,项目集管理,和项目管理
  2. Hive 根据身份证规则从身份证号提取年龄和性别
  3. java提升路线书单(原文自知乎刘欣)
  4. 2017第15届上海国际礼品、赠品及家居用品展览会会刊(参展商名录)
  5. 基于 DolphinDB 的行情中心解决方案
  6. maven 实战 (许晓斌)
  7. 一次旅行:汕尾-汕头-梅州
  8. 工商管理专业知识与实务(初级)【10】
  9. 用分支限界法解决人员安排问题(Personnel assignment problem)
  10. 字符串大小写字母转换c 语言,C语言中对字母进行大小写转换的简单方法