在那片寬廣的宇宙中,藏着浩瀚星河,而我在這無限的長河中邊浪邊學,這篇是opencv筆記系列中的「灰階直方圖均衡化」。
先統計灰階圖像各個像素出現的機率,再根據機率對灰階圖像進行均衡化。
原圖沒變,還是她
讀入圖像,轉換成灰階格式,統計灰階像素機率,然後均衡化
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)
灰階圖像
均衡化後的灰階圖像
嗯??看起來怪怪的。。
太陽下山了,我的咖啡機也做好了咖啡。我端起了杯拿鐵,也準備迎接這浪蕩的夜晚。
學習交流群:79893083