今天,我用Mathematica读取了一个图片,再把图片转化为数据,然后把数据转化为图片,结果图像的颜色变了。下面,我就把这个过程展示一下,并指出其中的原因。
工具/原料
1
电脑
2
Mathematica
方法/步骤
1
用QQ截取一张图片。我就现截现用了。载入到Mathematica里面:img=下图;
2
把图片转化为数据:a=ImageData[img];再把数据转化为图片:Image[a]
3
上面的图片变色了。这是怎么回事呀?原来,QQ截图得到的是一个4通道图片,这四个通道是R、G、B通道和控制透明度的第四个通道。但是,当把四通道数据转化为图片的时候,Mathematica默认使用CMYK的色彩空间,而不是RGBA的色彩空间。想要获得和原图看起来一样的效果,第一种方法是指定色彩空间:Image[a,ColorSpace->'RGB']
4
第二个办法是,从图像数据里面提取前三个通道,这样,Mathematica默认使用RGB色彩空间。b=a[[All,All,;;3]];
5
第三个方法是,栅格化原图,强制性的把四通道图片转化为三通道图片。这样,图像与数据的相互转化,就不会出现变色的情况了。img0=Rasterize[img];
6
原图的反色图片,将看不到任何内容。1-img你知道这是什么原因吗?
7
Image[ImageData[1-img]]
8
真正的反色图片是:Image[1-ImageData[img][[All,All,;;3]]]或者1-Rasterize[img]或者Image[1-ImageData[img],ColorSpace->'RGB']
上一篇:狼牙与狗牙、树脂牙的鉴别!
下一篇:如何识别不同截图的尺寸大小?