ImageData可以返回图片的像素数据。奇怪的是,用这些像素数据作图,得到的却有可能不是原图。下面,我们就通过几个实验,来看一下这个现象。
工具/原料
1
电脑
2
Mathematica
方法/步骤
1
首先,把某个图片赋值为img,并运行:ImageData[img]
2
数据分析,查看数据的长度:Length[数据]……=365365恰好就是img的宽度,img的像素尺寸是500*365。img前六个像素对应的数据是:数据[[1,1;;6]]
3
用Image把数据变成图片:Image[ImageData[img]]或者Image[数据]这个图片没什么显著变化。
4
用ArrayPlot绘制像素数据的图像,却又是另一番景象:ArrayPlot[数据,Frame->False]
5
用Plot做一个函数图像:Plot[Sin[x],{x,0,2 Pi}]并转化为像素数据。
6
把像素数据转化为图片,并与原图作一番对比。这是不是说明,Plot做出来的图像,在ImageData看来,不是真正的图片?
7
把Plot的图形截图试试。结果还是与原图不太一样。
8
我们如果用Image得出来的图片进行实验,会怎样?结果还是不一样,Image@ImageData存在很严重的失真!
9
不过,用NestList却发现,对Image给出的图像,并不失真!这是怎么个情况?我完全不懂了!
注意事项
Image和ImageData结合使用,怎么才能保持图片的色彩不失真?
上一篇:神奇功效蒲公英
下一篇:构图进阶利用几何图形摄影