多语言展示
当前在线:302今日阅读:103今日分享:49

【Mathematica入门】读取图片的一个问题

今天,我用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']

推荐信息