做深度学习项目图像处理的时候常常涉及到灰度图处理,这里对自己处理灰度图的方式做一个记录,后续有更新的话会在此更新
一,多维数组可视化
将多维数组可视化为灰度图
img_gray = Image.fromarray(img, mode='L') # 实现array到image的转换,model 常用的模式有‘1’,‘L’,‘RGB’, 1是二值图像,L是灰度图像,RGB是彩色图像
img_gray.show() # 显示灰度图
二,对比度拉伸
拉伸对比图突出想可视化的部分
# 对比度拉伸
Imax = np.max(img) # img是多维数组,输入灰度图的时候注意先np.array转一下
Imin = np.min(img)
MAX = 1200
MIN = 0
img_cs = (img - Imin) / (Imax - Imin) * (MAX - MIN) + MIN # img_cs是多维数组
cv2.imshow('img_cs', img_cs.astype("uint8")) # 可视化
cv2.waitKey(0)
cv2.destroyAllWindows()
三,灰度拉伸
拉伸灰度加强对比
def gray_scale(img_gray):
img_gray = np.array(img_gray) # 转多维数组
rows, cols = img_gray.shape
flat_gray = img_gray.reshape((cols * rows,)).tolist()
min1 = min(flat_gray)
max1 = max(flat_gray)
print('min = %d, max = %d' % (min1, max1))
output = np.uint8(255 / (max1 - min1) * (img_gray - min1) + 0.5)
return output
img_gray = Image.fromarray(img, mode='L') # 实现array到image的转换,model 常用的模式有‘1’,‘L’,‘RGB’, 1是二值图像,L是灰度图像,RGB是彩色图像
grayScale = gray_scale(img_gray) # 灰度拉伸
cv2.imshow('grayScale', grayScale) # 显示拉伸后的灰度图
cv2.waitKey(0)
cv2.destroyAllWindows()