天天看點

opencv筆記(11):灰階直方圖均衡化

在那片寬廣的宇宙中,藏着浩瀚星河,而我在這無限的長河中邊浪邊學,這篇是opencv筆記系列中的「灰階直方圖均衡化」。

先統計灰階圖像各個像素出現的機率,再根據機率對灰階圖像進行均衡化。

原圖沒變,還是她

opencv筆記(11):灰階直方圖均衡化

讀入圖像,轉換成灰階格式,統計灰階像素機率,然後均衡化

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('test1.jpg',1)
cv2.imshow('src',img)
cv2.waitKey(0)

imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray',gray)
cv2.waitKey(0)

count = np.zeros(256,np.float)
for i in range(0,height):
    for j in range(0,width):
        pixel = gray[i,j]
        index = int(pixel)
        count[index] = count[index] + 1
for i in range(0,255):
    count[i] = count[i] / (height * width)
# 計算累計機率
sum1 = float(0)
for i in range(0,256):
    sum1 = sum1 + count[i]
    count[i] = sum1
#print(count)
# 映射表
map1 = np.zeros(256,np.uint16)
for i in range(0,256):
    map1[i] = np.uint16(count[i]*255)
for i in range(0,height):
    for j in range(0,width):
        pixel = gray[i,j]
        gray[i,j] = map1[pixel]

cv2.imshow('dst',gray)
cv2.waitKey(0)
           

灰階圖像

opencv筆記(11):灰階直方圖均衡化

均衡化後的灰階圖像

opencv筆記(11):灰階直方圖均衡化

嗯??看起來怪怪的。。

太陽下山了,我的咖啡機也做好了咖啡。我端起了杯拿鐵,也準備迎接這浪蕩的夜晚。

學習交流群:79893083

繼續閱讀