生活就像大海,我就像一條鹹魚,在浩瀚的海洋中邊浪邊學,這是opencv筆記系列中的「直方圖均衡化」。bash
世間萬圖,皆可均衡化。小編邊浪邊學,順帶以很鹹魚的方式把它們記錄下來。學習
直方圖均衡化就是對圖像進行非線性拉伸,從新分配圖像像素值,使必定灰度範圍內的像素數量大體相同。它的基本思想是把原始圖的直方圖變換爲均勻分佈的形式,這樣就增長了像素灰度值的動態範圍從而可達到加強圖像總體對比度的效果。spa
1)對單通道圖像進行均衡化3d
輸入原圖像而且顯示code
import cv2
import numpy as np
img = cv2.imread('test1.jpg',1)
cv2.imshow('src',img)
cv2.waitKey(0)
複製代碼
原圖換成了一個妹紙o_ocdn
轉換成單通道灰度圖像blog
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow('gray',gray)
cv2.waitKey(0)
複製代碼
dst = cv2.equalizeHist(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)
複製代碼
貌似看得出來輸出圖像比本來好看了圖片
2)對多通道圖像進行均衡化string
導入圖像後,對每一個通道進行均衡化,而後把三個通道合併it
# 2
b,g,r = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
dst = cv2.merge((bH,gH,rH))
cv2.imshow('dst',dst)
cv2.waitKey(0)
複製代碼
均衡化先後圖像的對比
3)對YUV圖像進行均衡化
導入圖像後,把圖像轉換成YUV格式
# 3
imgYUV = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
cv2.imshow('imgYUV',imgYUV)
cv2.waitKey(0)
複製代碼
輸出YUV格式圖像以下
而後均衡化操做
channelYUV = cv2.split(imgYUV)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])
channels = cv2.merge(channelYUV)
dst = cv2.cvtColor(channels, cv2.COLOR_YCrCb2RGB)
cv2.imshow('dst',dst)
cv2.waitKey(0)
複製代碼
圖片顯示以下
笑看風起雲落啊。
更多歡迎來個人公衆號一塊兒學習~