目錄
1.白化處理的作用
圖像白化(whitening)可用於對過度曝光或低曝光的圖片進行處理,下圖所示,左圖是過分曝光,右圖是白化後的結果;
2.白化處理的原理
處理的方式就是改變圖像的平均像素值爲 0 ,改變圖像的方差爲單位方差 1。
3.白化處理的代碼
def whitening(self, img_path):
img = cv2.imread(img_path)
img = img / 255.0
m, dev = cv2.meanStdDev(img) # 返回均值和方差,分別對應3個通道
img[:, :, 0] = (img[:, :, 0] - m[0]) / (dev[0]+1e-6)
img[:, :, 1] = (img[:, :, 1] - m[1]) / (dev[1] + 1e-6)
img[:, :, 2] = (img[:, :, 2] - m[2]) / (dev[2] + 1e-6)
# 將 像素值 低於 值域區間[0, 255] 的 像素點 置0
img = img*255
img *= (img > 0)
# 將 像素值 高於 值域區間[0, 255] 的 像素點 置255
img = img * (img <= 255) + 255 * (img > 255)
img = img.astype(np.uint8)
cv2.imshow('result', img)
cv2.waitKey(1000)
cv2.destroyAllWindows()
cv2.imwrite('result.jpg',img)
Pytorch中的線性變換可用於白化處理:
class torchvision.transforms.LinearTransformation(transformation_matrix)
#功能:對矩陣做線性變換,可用於白化處理