图像到阵列:简单的英语
Image to Array: Plain English
我开始使用 numpy 和 PILlow 来处理图像文件。而且,在将图像转换为数组然后使用数组时,通常会失去自我。
有人可以解释当我将图像转换为数组时发生了什么。比如这样:
ab = numpy.asarray(img.convert('L'))
另外,为什么要转换为数组?这提供了什么功能,我可以用数组做什么?
谢谢
什么是数码影像?
数字图像是一组像素值。考虑这张图片: 。它由 16x16 像素组成。因为大多数显示器有 8 位(2^8 (256) 个可能值)和 3 个通道(红色、绿色和蓝色),它由 0 到 255 之间的 16x16x3 数字数组组成。
微笑的数字图像已经由数字组成。当您使用 PIL.Image
加载它然后转换为 numpy 数组时,您所做的只是将数字公开给 numpy。 convert('L')
调用要求 PIL 将彩色图像(3 个通道)转换为 L亮度或灰度(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 的 numerical/statistical/quantitative 功能比 Pillow 的功能强大得多。一旦你将图像中的数字暴露给 numpy,你就可以做各种很酷的事情,比如找到它的平均亮度或方差(ab_mean = numpy.mean(ab)
或 ab_var = numpy.var(ab)
),FFT 它(ab_fft = numpy.fft.fft2(ab)
), 或转置它 (ab_transposed = ab.T
):
我开始使用 numpy 和 PILlow 来处理图像文件。而且,在将图像转换为数组然后使用数组时,通常会失去自我。 有人可以解释当我将图像转换为数组时发生了什么。比如这样:
ab = numpy.asarray(img.convert('L'))
另外,为什么要转换为数组?这提供了什么功能,我可以用数组做什么?
谢谢
什么是数码影像?
数字图像是一组像素值。考虑这张图片:
微笑的数字图像已经由数字组成。当您使用 PIL.Image
加载它然后转换为 numpy 数组时,您所做的只是将数字公开给 numpy。 convert('L')
调用要求 PIL 将彩色图像(3 个通道)转换为 L亮度或灰度(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 的 numerical/statistical/quantitative 功能比 Pillow 的功能强大得多。一旦你将图像中的数字暴露给 numpy,你就可以做各种很酷的事情,比如找到它的平均亮度或方差(ab_mean = numpy.mean(ab)
或 ab_var = numpy.var(ab)
),FFT 它(ab_fft = numpy.fft.fft2(ab)
), 或转置它 (ab_transposed = ab.T
):