一、直方圖代碼: from PIL import Image from pylab import * from numpy import * im=array(Image.open('D:/img/cs.jpg').convert('L')) #讀取圖片并轉(zhuǎn)化為灰度圖 gray() subplot(121) imshow(im) subplot(122) hist(im.flatten(),256) show() 結(jié)果: 以下右圖為左圖的直方圖
說明: 讀取圖片,將圖片進(jìn)行灰度轉(zhuǎn)換,,轉(zhuǎn)換后的灰度圖可以看成是一個(gè)二維的灰度值矩陣,,遍歷矩陣,對相同的灰度值進(jìn)行統(tǒng)計(jì)就可以得到灰度圖的直方圖 gray()函數(shù)是使得圖片顯示為灰色,,若不加此句會(huì)使結(jié)果中的左邊圖像呈現(xiàn)藍(lán)綠色 hist()是python庫自帶的函數(shù),,統(tǒng)計(jì)生成直方圖 flatten()函數(shù)是將圖片的二維矩陣轉(zhuǎn)換成一維 二、高斯濾波代碼: from PIL import Image from pylab import * from numpy import * from scipy.ndimage import filters img = Image.open('D:/img/cs.jpg').convert('L') gray() subplot(121) imshow(img) subplot(122) G = filters.gaussian_filter(img,10) #10是σ,,標(biāo)準(zhǔn)差的值,,指的是高斯核的標(biāo)準(zhǔn)差 imshow(G) show() 結(jié)果: 左圖為原始圖片,右圖為經(jīng)過高斯模糊后的圖片
說明: 高斯濾波是一種廣泛用于對圖像進(jìn)行降噪的線性平滑濾波,,高斯濾波就是對整幅圖像進(jìn)行加權(quán)平均的過程,,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到,。高斯核,,其實(shí)就是一個(gè)權(quán)值的矩陣,高斯核旋轉(zhuǎn)180°,,核的中心對著某點(diǎn)的像素,,將高斯核所覆蓋的像素點(diǎn)與核進(jìn)行相乘然后相加就得到該點(diǎn)的像素值,這就是高斯濾波的卷積運(yùn)算,。噪聲點(diǎn)比較尖銳突出時(shí),,像高斯濾波這樣會(huì)將噪聲點(diǎn)周圍的像素點(diǎn)納入考慮,進(jìn)行加權(quán)平均,,通過周圍點(diǎn)對噪聲點(diǎn)的影響減少噪聲點(diǎn)的強(qiáng)度或影響,。(這是個(gè)人理解) 參考:https://blog.csdn.net/lvquanye9483/article/details/81592574 三、直方圖均衡化代碼: import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread("D:/img/cs.jpg",1) src_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) dst = cv2.equalizeHist(src_gray) plt.subplot(221) plt.imshow(src_gray) plt.subplot(222) plt.hist(src_gray.ravel(),256) plt.subplot(223) plt.imshow(dst) plt.subplot(224) plt.hist(dst.ravel(),256) plt.show() 結(jié)果: 第一行為原圖和直方圖,,第二行為均衡化后的圖像和直方圖
說明: 直方圖均衡化是通過拉伸像素強(qiáng)度分布范圍來增強(qiáng)圖像對比度的一種方法,。 參考:https://blog.csdn.net/u013066730/article/details/82969768 數(shù)學(xué)原理 |
|