灰度图像直方图均衡化源码
# 本质:统计每个像素灰度 出现的概率 0-255 p
# 累计概率
# 1 0.2 0.2
# 2 0.3 0.5
# 3 0.1 0.6
# 256
# 100 0.5 255*0.5 = new
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
img = cv2.imread('image0.jpg',1)
#cv2.imshow('src',img) #显示原图 第二个参数图片名称
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('src',gray) ##显示原图的灰度图像 第二个参数图片名称
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('每个像素累计概率:\n',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)
-
结果
-
每个像素累计概率: [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00172798e-04 5.70984949e-04 1.73799805e-03 3.47850041e-03 5.42936566e-03 7.44784754e-03 9.49137262e-03 1.17377476e-02 1.41919812e-02 1.75077008e-02 2.11214345e-02 2.47827502e-02 2.86018382e-02 3.24960557e-02 3.65730886e-02 4.06050437e-02 4.50627332e-02 4.96205955e-02 5.47243996e-02 5.99008289e-02 6.53527335e-02 7.11327039e-02 7.68350404e-02 8.27051664e-02 8.86529263e-02 9.48461095e-02 1.00758809e-01 1.06781698e-01 1.12709424e-01 1.18747339e-01 1.24840350e-01 1.30968421e-01 1.37289324e-01 1.43404873e-01 1.49773359e-01 1.56086750e-01 1.62264907e-01 1.68460595e-01 1.74789011e-01 1.80929604e-01 1.87222960e-01 1.93341013e-01 1.99504145e-01 2.05957777e-01 2.12694398e-01 2.19551226e-01 2.26372993e-01 2.33555383e-01 2.40965666e-01 2.48543738e-01 2.56394781e-01 2.64501265e-01 2.72823120e-01 2.81533145e-01 2.90496106e-01 2.99979965e-01 3.09361148e-01 3.19005284e-01 3.28686985e-01 3.38641657e-01 3.48714032e-01 3.58490897e-01 3.68187624e-01 3.77969497e-01 3.87743858e-01 3.97718565e-01 4.07250006e-01 4.16879116e-01 4.25629210e-01 4.34494503e-01 4.43151937e-01 4.51361098e-01 4.59189602e-01 4.66932959e-01 4.74383311e-01 4.81505597e-01 4.88657935e-01 4.95547319e-01 5.02319000e-01 5.09328592e-01 5.16328166e-01 5.23387844e-01 5.30147004e-01 5.36898650e-01 5.43297188e-01 5.49615587e-01 5.55558338e-01 5.61258170e-01 5.66682527e-01 5.72144449e-01 5.77180637e-01 5.82439708e-01 5.87428314e-01 5.92209061e-01 5.96987303e-01 6.01793093e-01 6.06759160e-01 6.11652601e-01 6.16433348e-01 6.21266685e-01 6.26077484e-01 6.30978438e-01 6.35501240e-01 6.39961433e-01 6.44589417e-01 6.49177331e-01 6.53562395e-01 6.58220430e-01 6.62635546e-01 6.67025619e-01 6.71385640e-01 6.75805765e-01 6.80243420e-01 6.84478225e-01 6.88788160e-01 6.93058025e-01 6.97448098e-01 7.01492575e-01 7.05584633e-01 7.09666675e-01 7.13651048e-01 7.17562796e-01 7.21364354e-01 7.25150885e-01 7.28777141e-01 7.32130425e-01 7.35333450e-01 7.38734317e-01 7.42092610e-01 7.45435877e-01 7.48453582e-01 7.51448749e-01 7.54534071e-01 7.57326388e-01 7.59878290e-01 7.62470261e-01 7.64834339e-01 7.67075706e-01 7.69144274e-01 7.71230372e-01 7.73231324e-01 7.75084521e-01 7.76965265e-01 7.78688237e-01 7.80333575e-01 7.82026496e-01 7.83576670e-01 7.84901455e-01 7.86361474e-01 7.87528487e-01 7.88768125e-01 7.89912599e-01 7.91077108e-01 7.92254138e-01 7.93453708e-01 7.94578147e-01 7.95760186e-01 7.96984799e-01 7.98244472e-01 7.99459067e-01 8.00781348e-01 8.02143698e-01 8.03573665e-01 8.04928502e-01 8.06333425e-01 8.07896121e-01 8.09659162e-01 8.11449751e-01 8.13330495e-01 8.15281360e-01 8.17477649e-01 8.20114698e-01 8.23493025e-01 8.28168591e-01 8.34021187e-01 8.40186822e-01 8.46532769e-01 8.53064035e-01 8.60136235e-01 8.67301094e-01 8.74571135e-01 8.81903784e-01 8.89624602e-01 8.96801983e-01 9.03771506e-01 9.10275225e-01 9.16363227e-01 9.22260900e-01 9.28594325e-01 9.34078786e-01 9.39500639e-01 9.44531817e-01 9.49099697e-01 9.53672585e-01 9.58220430e-01 9.62402645e-01 9.66329418e-01 9.70216123e-01 9.73579425e-01 9.76972778e-01 9.79860259e-01 9.82367083e-01 9.84453182e-01 9.86241266e-01 9.87861561e-01 9.89399214e-01 9.90628835e-01 9.91698179e-01 9.92662343e-01 9.93446195e-01 9.94169943e-01 9.94833588e-01 9.95499737e-01 9.96143347e-01 9.96714332e-01 9.97302847e-01 9.97856302e-01 9.98297062e-01 9.98712780e-01 9.99053367e-01 9.99346372e-01 9.99614335e-01 9.99784628e-01 9.99872280e-01 9.99939896e-01 9.99964940e-01 9.99979965e-01 9.99984974e-01 9.99989983e-01 9.99992487e-01 9.99994991e-01 9.99994991e-01 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00]