rgb-谁能给一份比较好的RGB和CMYK互相转换的算法?

问题描述

谁能给一份比较好的RGB和CMYK互相转换的算法?
最好是对CMYK低分辨率支持的比较好的,因为我这里要求是CMYK每种颜色都量化成8个色阶。
下面是我的代码,RGB转成CMYK后再转回来失真严重。

void CMy3View::RGB2CMYK(int red int green int blue int &C int &M int &Y int &K) //RGB转CMYK
{
double cmyk;
c = (double)(255 - red) / 255;
m = (double)(255 - green) / 255;
y = (double)(255 - blue) / 255;

if(c<=m&&c<=y)  //k赋值为cmy的最小值    k=c;else if(m<=c&&m<=y)    k=m;else    k=y;if(1.0 == k)   c = m = y = 0;else{    c = (c - k) / (1 - k);    m = (m - k) / (1 - k);    y = (y - k) / (1 - k);}C=(int)8.0*c;    //不要问我为什么这里要乘8,要求就是CMYK只有8个色阶,必须得M=(int)8.0*m;  //这么做Y=(int)8.0*y;K=(int)8.0*k;

}

void CMy3View::CMYK2RGB(int c int m int y int k int &r int &g int &b) //CMYK转RGB
{
r =(int)(1.0-c/8.0)*(1.0-k/8.0)*255.0 +0.5;
g =(int)(1.0 - m/8.0) * (1.0 - k/8.0) * 255.0+0.5;
b =(int)(1.0 - y/8.0) * (1.0 - k/8.0) * 255.0+0.5;
}

解决方案

我没有看你算法是怎么具体实现的,可以参考opencv的实现;cvtcolor
http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/imgproc/doc/miscellaneous_transformations.html?highlight=cvtcolor#cv2.cvtColor

解决方案二:
我记着有呢,看了一下果然没有,,这个我就不知道啦

时间: 2024-10-03 21:45:24

rgb-谁能给一份比较好的RGB和CMYK互相转换的算法?的相关文章

常用YUV转RGB代码

常用YUV转RGB  [java] view plaincopyprint? public class YuvToRGB {       private static int R = 0;       private static int G = 1;       private static int B = 2;       //I420是yuv420格式,是3个plane,排列方式为(Y)(U)(V)       public static int[] I420ToRGB(byte[] sr

CSS3 RGBA等于RGB加上opacity吗?

在我们前端设计里有两篇教程: CSS3 RGBA colors使用说明 css3中opacity属性学习与实践,他们公别介绍了RGBA,RGB,opacity的用法,这里我们把这三个属性放在一起来考虑:CSS3 RGBA等于RGB加上opacity吗? 请别先回答,我们接下来分析分析. 以前我们经常会碰到这样一个问题,设置了一个div的opacity(透明度)以后,这个div层里的内容也跟着透明了,特别是文字,一透明就离我们想要的效果差很远了,显示这不是我们需要的.以前我遇风这种情况通常是把透明

CSS中对RGB颜色的使用详解

  RGB颜色模型解释 RGB颜色模型就是一种描述某个颜色里面有多少红.绿.蓝三原色的量的方法,就像把水彩颜料或油彩颜料混合起来得到某种我们想要的真实色彩一样. 想象下如果你要配出一个纯蓝色,为了实现这个,你就不能把红色和绿色放进这个颜色里.所以我们就把红.绿设置为0%,把绿设置为100%: CSS Code复制内容到剪贴板 rgb(0%, 0%, 100%) 结果: 但如果你想要的不是蓝色而是紫红色,那该怎么办呢?我们可以通过将100%的红和100%的蓝混合起来得到紫红色: CSS Code复

简单区别photoshop的灰度、索引、RGB 、CMYK四个模式

  最开始学做网页的时候,就不小心用了CMYK模式的图片,然后在浏览器上打开是X,后来找了好久的原因才知道原来网页要用RGB模式,现在我们来简单分别photoshop的灰度.索引.RGB .CMYK四个模式. 灰度模式 :简单点说灰度模式就像黑白照片,所有颜色都是用不同的256种灰度表现(所以在灰度模式下填充其它彩色颜色,默认会用相关的灰度色替代填充!) 索引模式 :做网页时,索引颜色的文件一般是GIF格式(保存成GIF格式的图片,会自动转成索引模式,必须转成RGB模式才能编辑图片),而RGB模

数字图像处理-【求助】YUV格式转RGB

问题描述 [求助]YUV格式转RGB 5C R=Y+1.140VG=Y-0.395U-VB=Y+2.032U Y取值[16235]UV取值[16240]照这个取值那么计算出来的RGB范围不就>255了么? 我认为的解决方案:1:大于255按255计2:归一化 请问有哪位知道怎么处理丫,求救 解决方案 网上有具体的转换方法,可以找找,以前也遇到这问题,后来就用网上的办法解决的 解决方案二: 刚刚才学摄像头,目前还不能解答你这个问题.学完了应该可以解答了 解决方案三: public class Yu

最简单的视音频播放示例7:SDL2播放RGB/YUV

本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API用于播放视频:封装了DirectSound这类的API用于播放音频.因为SDL的编写目的就是简化视音频播放的开发难度,所以使用SDL播放视频(YUV/RGB)和音频(PCM)数据非常的容易.下文记录一下使用SDL播放视频数据的技术.   SDL简介 SDL(Simple DirectMedia La

最简单的视音频播放示例2:GDI播放YUV, RGB

前一篇文章对"Simplest Media Play"工程作了概括性介绍.后续几篇文章打算详细介绍每个子工程中的几种技术.在记录Direct3D,OpenGL这两种相对复杂的技术之前,打算先记录一种和它们属于同一层面的的简单的技术--GDI作为热身. GDI简介 下面这段文字摘自维基百科: 图形设备接口(Graphics Device Interface或Graphical Device Interface,缩写GDI),是微软公司视窗操作系统(Microsoft Windows)的三

最简单的视音频播放示例5:OpenGL播放RGB/YUV

本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图领域,OpenGL因为色彩准确,仍然是不能被取代的主角. OpenGL简介 从网上搜集了一些有关OpenGL简介方面的知识,在这里列出来.开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平

最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)

上一篇文章记录了GDI播放视频的技术.打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术.Direct3D应该Windows下最常用的播放视频的技术.实际上视频播放只是Direct3D的"副业",它主要用于3D游戏制作.当前主流的游戏几乎都是使用Direct3D制作的,例如<地下城与勇士>,<穿越火线>,<英雄联盟>,<魔兽世界>,<QQ飞车>等等.使用Direct3D可以用两种方式渲染视频:Surface和