天天看點

(Python+OpenCV)直方圖均衡化

圖像的空域處理是一種非常重要的圖像處理技術,這類方法直接以圖像的像素操作為基礎,主要分為灰階變換和空域濾波兩大類。

直方圖均衡化(Histogram equalization)是一種常用的灰階變換方法。

Part1:灰階圖均衡

#灰階圖均衡


import sys
import cv2 as cv
import numpy as np


print('Python的版本為:Python',sys.version_info.major)
print('OpenCV的版本為:',cv.__version__)


#圖檔路徑
#(應避免有中文)
image_path=r'C:\Users\94456\Desktop\test2020_09_03\picture\cat.jpg'


#讀取圖檔
#類型:numpy.ndarray
image=cv.imread(image_path)
# #顯示原圖
# cv.imshow('cat',image)


#将彩色圖像轉換為灰階圖
image_gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)


#直方圖均衡化
image_equalize=cv.equalizeHist(image_gray)


#圖像拼接
image_compare=np.hstack((image_gray,image_equalize))
#拼接後的圖像顯示
#WINDOW_AUTOSIZE:視窗大小自适應圖檔大小
#WINDOW_NORMAL:可以手動拉伸視窗
cv.namedWindow('cat',cv.WINDOW_NORMAL)
cv.resizeWindow('cat',400,200)
cv.imshow('cat',image_compare)
cv.waitKey(0)


           

結果圖:

(Python+OpenCV)直方圖均衡化

Part2:彩色圖均衡

#彩色圖均衡


import sys
import numpy as np
import cv2 as cv


print('Python的版本為:Python',sys.version_info.major)
print('OpenCV的版本為:',cv.__version__)


#圖檔路徑
#(應避免有中文)
image_path=r'C:\Users\94456\Desktop\test2020_09_03\picture\cat.jpg'


#讀取圖檔
#類型:numpy.ndarray
image=cv.imread(image_path)


#将圖檔由BGR轉為YUV
image_equalize=cv.cvtColor(image,cv.COLOR_BGR2YUV)
#通道分離
channels=cv.split(image_equalize)
#對圖像的灰階通道進行直方圖均衡化
channels[0]=cv.equalizeHist(channels[0])
#三通道合成彩色圖檔
image_equalize=cv.merge(channels)
#将圖檔由YUV轉為BGR
image_equalize=cv.cvtColor(image_equalize,cv.COLOR_YUV2BGR)


#圖像拼接
image_compare=np.hstack((image,image_equalize))
#拼接後的圖像顯示
#WINDOW_AUTOSIZE:視窗大小自适應圖檔大小
#WINDOW_NORMAL:可以手動拉伸視窗
cv.namedWindow('cat',cv.WINDOW_NORMAL)
cv.resizeWindow('cat',400,200)
cv.imshow('cat',image_compare)
cv.waitKey(0)


           

結果圖:

(Python+OpenCV)直方圖均衡化

繼續閱讀