AI: 图像处理基础(Image Processing Basics)
注:基本部分来自MPP,参加MPP的学习笔记,以方便学习理解和记忆。
一,灰度处理(Grayscale)
计算机在处理图像时,图像是一串0-255数字组成三维数组。如下图:
这是一幅AI全家福照片,作为一个数字图像,它实际可以用一个数组表示像素强度在0到255之间的数字来表示。
。如图右下侧的三维数字来表示,不同的维度分别代表红色,绿色和蓝色。
如果把图片的颜色去掉,仅仅使用一个二维数组就可以了。如下图,计算机用一个二维数组来展示这个图像。
灰度处理的方法很多,这里仅仅介绍使用Python的方法,这部分我没有使用课件的代码;示例1
#引入包
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
#读取文件
zhima=plt.imread('芝麻.jpg')
plt.imshow(zhima)
#转变需要的类型,并且产生噪声,显示最后的图片
zhima_noisy=zhima.copy().astype(float)
zhima_noisy+=zhima_noisy.std()*0.3*np.random.standard_normal(zhima_noisy.shape)
plt.imshow(zhima_noisy)
#查看形状
zhima.shape
#输出结果为:(662, 1000, 3)
平均值法
#聚合操作后就减少了一个维度了
zhima_mean=zhima.mean(axis=2)
zhima_mean.shape
#输出结果为:(662, 1000)
plt.imshow(zhima_mean,cmap='gray')
#最大值法
zhima_max=zhima.max(axis=-1)
zhima_max.shape
plt.imshow(zhima_max,cmap='gray')
RGB三原色法
gravity= np.array([0.299,0.587,0.114])
#red*0.299+green*0.587+blue*0.114
#矩阵乘法
zhima_gravity=np.dot(zhima,gravity)
zhima_gravity.shape
plt.imshow(zhima_gravity,cmap='gray')
示例2
import matplotlib.pyplot as plt
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
mnist = read_data_sets('MNIST_data', one_hot=False)
x, y = mnist.test.next_batch(1)
x = x.reshape([28, 28])
fig = plt.figure()
# Method1
ax1 = fig.add_subplot(221)
ax1.imshow(x, cmap=plt.cm.gray)
# Method2: 反转色
ax2 = fig.add_subplot(222)
ax2.imshow(x, cmap=plt.cm.gray_r) # r表示reverse
# Method3(等价于Method1)
ax3 = fig.add_subplot(223)
ax3.imshow(x, cmap='gray')
# Method4(等价于Method2)
ax4 = fig.add_subplot(224)
ax4.imshow(x, cmap='gray_r')
plt.show()
plt.savefig("gray.png")