2016-09-20 65 views
0

我开始使用numpy和PILlow处理图像文件。而且,当涉及到将图像转换为数组时,通常会放松自己,然后再处理数组。 有人可以解释当我将图像转换为数组时发生了什么。如:图像到数组:纯文本English

ab = numpy.asarray(img.convert('L')) 

而且,为什么要转换为数组?这提供了什么功能,我可以用数组做什么?

感谢

回答

2

什么是数字图像?

数字图像是一组像素值。考虑这张图片:small smiley face。它由16x16像素组成。由于大多数显示器具有8位(2^8(256)可能值)和3个通道(用于红色,绿色和蓝色),因此它由一个16x16x3的数字数组组成微笑是已经作出的数字。当您使用PIL.Image加载它,然后转换为numpy数组时,您所做的只是将数字暴露给numpy。呼叫convert('L')要求PIL将彩色图像(3个通道)转换为图像的灰度或灰度(1通道)。因此,它不是作为16x16x3矩阵暴露于numpy,而是作为16x16x1阵列公开。

数字图像中没有什么特别的数字。其实这里有包括上述数字图像的数字:

255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 6 6 6 6 6 6 6 255 255 255 255 
255 255 255 6 6 6 6 6 6 6 6 6 6 255 255 255 
255 255 6 6 6 130 255 255 255 255 255 6 6 6 255 255 
255 255 6 6 255 255 255 255 255 255 255 255 6 6 6 255 
255 6 6 68 255 255 255 255 255 255 255 255 255 6 6 255 
255 6 6 255 255 6 161 255 255 255 6 6 255 84 6 6 
255 6 6 255 68 6 6 255 255 255 6 6 255 255 6 6 
255 6 6 255 255 6 255 255 255 255 6 115 255 255 6 6 
255 6 6 255 255 255 255 255 255 255 255 255 255 224 6 6 
255 6 6 255 255 6 6 6 6 6 6 255 255 6 6 176 
255 130 6 6 255 255 6 6 6 6 84 255 239 6 6 255 
255 255 6 6 6 255 255 255 255 255 255 208 6 6 176 255 
255 255 255 6 6 6 6 239 255 115 6 6 6 6 255 255 
255 255 255 255 6 6 6 6 6 6 6 6 224 255 255 255 
255 255 255 255 255 255 115 6 6 6 255 255 255 255 255 255 

你为什么要数字图像转换为numpy的阵列?

我不知道Pillow的功能是什么,但我猜想numpy的数值/统计/定量功能比枕头功能强大得多。一旦将图像中的数字暴露出来,您可以做各种很酷的事情,例如查找平均亮度或方差(ab_mean = numpy.mean(ab)ab_var = numpy.var(ab)),FFT(ab_fft = numpy.fft.fft2(ab))或转置它(ab_transposed = ab.T):small transposed smiley face

+0

非常感谢@rjonnal。这非常有帮助。 –