Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 1位位图数据如何转换为8位(24bpp)?_Algorithm_Image Processing_Colors - Fatal编程技术网

Algorithm 1位位图数据如何转换为8位(24bpp)?

Algorithm 1位位图数据如何转换为8位(24bpp)?,algorithm,image-processing,colors,Algorithm,Image Processing,Colors,假设我有4个位图,比如说CMYK,它们都是1比特/像素,颜色不同,我想把它们转换成8比特/颜色(24bpp)的位图,我该怎么做 如果数据如下所示: // the Cyan separation CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC ... // the magenta separation, and so on.. MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM ... 比如说,青色的RGB值为(0255255),在

假设我有4个位图,比如说CMYK,它们都是1比特/像素,颜色不同,我想把它们转换成8比特/颜色(24bpp)的位图,我该怎么做

如果数据如下所示:

// the Cyan separation

CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC
...

// the magenta separation, and so on..
MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM
...
比如说,青色的RGB值为(0255255),在像素0(第一个像素)处,我的值为1(开),洋红的RGB值为(255255,0),在同一像素处,值为1。。第一个RGB像素看起来像什么?看起来像这样吗

BBBB BBBB GGGG GGGG RRRR RRRR
// would this 3-byte sequence  actually be 255,255,255
// because the cyan has (0,255,255) and the 
// magenta has (255,255,0)?

谢谢,只是对如何将1位分隔符转换为8位图像感到困惑。。谢谢。

CMYK是一种减色系统,而RGB是一种加色系统

如果CMY(K)值为(1.0,1.0,1.0),则为黑色,而RGB值为(255,255,255),则为白色

青色+洋红=蓝色:(0255255)+(255,0255)!=(0, 0, 255). 但不完全是这样,因为我们谈论的是不同的颜色系统

您需要首先以CMYK格式构造像素,然后将它们转换为RGB,这可以通过执行
(R,G,B)=(1-C,1-M,1-Y)
来近似


为了将1位值转换为8位值,您只需将每个
0
转换为
0x00
,将每个
1
转换为
0xFF
:将
bitValue
乘以
0xFF

,实际上,使用1位编码的CMYK,您有16种可能的组合(颜色),其中9种为黑色

xxx1 -- black (8 comb's) -- 0x000000
0000 -- white -- 0xFFFFFF
1000 -- cyan -- 0x00FFFF
0100 -- magenta -- 0xFF00FF
0010 -- yellow -- 0xFFFF00
1100 -- blue -- 0x0000FF
1010 -- green -- 0x00FF00
0110 -- red -- 0xFF0000
1110 -- black -- 0x000000

考虑到这一点,我宁愿使用映射(切换情况或if-elses),而不是从CMYK计算RGB的实际算法。当然,如果设置了K,就早点回来。

对,我完全忘了。。所以,当你说我必须用CMYK来构造像素时,这是否意味着它将类似于4位索引颜色?(CMYK)=(1,1,1,1)。。等等无论如何,这很有帮助,谢谢。。将此标记为答案..是的,您需要构建颜色的4元组。正如我所说,问题在于将CMYK转换为RGB,因为没有标准的方法,正如@danben所说。也许
(R,G,B)=((1-C)(1-K)、(1-M)(1-K)、(1-Y)(1-K))
。好的,谢谢……)近似值足够好了,我只需要RGB显示在RGB设备(显示器)上。。再次感谢:)顺便说一句,在你给出的最后一个公式中,因为CMYK的值只能是1或0(1位),如果C或K是1,那么R部分将是0?