国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

python 基于opencv實現(xiàn)圖像增強

瀏覽:14日期:2022-07-01 14:00:15

為了得到更加清晰的圖像我們需要通過技術(shù)對圖像進行處理,比如使用對比度增強的方法來處理圖像,對比度增強就是對圖像輸出的灰度級放大到指定的程度,獲得圖像質(zhì)量的提升。本文主要通過代碼的方式,通過OpenCV的內(nèi)置函數(shù)將圖像處理到我們理想的結(jié)果。

灰度直方圖

灰度直方圖通過描述灰度級在圖像矩陣中的像素個數(shù)來展示圖像灰度級的信息,通過灰度直方圖的統(tǒng)計我們可以看到每個灰度值的占有率。下面是一個灰度直方圖的實現(xiàn):

import cv2import numpy as npimport sysimport matplotlib.pyplot as plt#計算灰度直方圖def calcGrayHist(image): rows,clos = image.shape #創(chuàng)建一個矩陣用于存儲灰度值 grahHist = np.zeros([256],np.uint64) print(’這是初始化矩陣’) print(grahHist ) for r in range(rows): for c in range(clos): #通過圖像矩陣的遍歷來將灰度值信息放入我們定義的矩陣中 grahHist[image[r][c]] +=1 print(’這是賦值后的矩陣’) print(grahHist) return grahHistif __name__=='__main__': image = cv2.imread('../img/aa.jpg',cv2.IMREAD_GRAYSCALE) grahHist = calcGrayHist(image) x_range = range(256) plt.plot(x_range,grahHist,’-’,linewidth= 3,c=’k’) #設(shè)置坐標(biāo)軸的范圍 y_maxValue = np.max(grahHist) plt.axis([0,255,0,y_maxValue]) #設(shè)置標(biāo)簽 plt.xlabel(’gray Level’) plt.ylabel('number of pixels') #顯示灰度直方圖 plt.show()

運行結(jié)果

python 基于opencv實現(xiàn)圖像增強

python 基于opencv實現(xiàn)圖像增強

線性變換

線性變換的公式為:

python 基于opencv實現(xiàn)圖像增強

圖像的線性變換無疑就是利用矩陣的乘法就行線性變換,比如一個矩陣I ,2I,3I (np.unt8 ndarry類型就是unt8類型)就是一個矩陣的變換.

import cv2import numpy as npimport sysif __name__=='__main__': img = cv2.imread('../img/ae.jpg',cv2.IMREAD_GRAYSCALE) a=2 #線性變換 定義float類型 O = float(a)*img #數(shù)據(jù)截取 如果大于255 取 255 O[0>255] = 255 #數(shù)據(jù)類型的轉(zhuǎn)換 O = np.round(O) O = O.astype(np.uint8) cv2.imshow('img',img) cv2.imshow(’enhance’,O) cv2.waitKey(0) cv2.destroyAllWindows()

運行結(jié)果:

python 基于opencv實現(xiàn)圖像增強

灰度級范圍越大就代表對比度越高,反之對比度越低視覺上清晰度就越低。我們通過a=2的線性對比度拉伸將灰度級范圍擴大到[0,255]之間,如上圖我們改變灰度級的范圍后圖像變的清晰。

直方圖正規(guī)化

將圖像O中的最小灰度級記為OminOmin,最大灰度級記為OmaxOmax,假如輸出的圖像P的灰度級范圍為[Pmin,PmaxPmin,Pmax],則O 與 P的關(guān)系為:

python 基于opencv實現(xiàn)圖像增強

其中P(r,c)就代表P的第r行第c列的灰度值。這個過程就是直方圖的正規(guī)化。我們一般令P的范圍是[0,255],所以直方圖的正規(guī)化是在求a,b變換的值的方法,我們可以得到:

python 基于opencv實現(xiàn)圖像增強

下面我們使用OpenCV來實現(xiàn)上面的理論:

import cv2import numpy as npimport sysfrom enhance.GrayHist import mgetif __name__=='__main__': img = cv2.imread('../img/o3.jpg',cv2.IMREAD_GRAYSCALE) #求出img 的最大最小值 Maximg = np.max(img) Minimg = np.min(img) print(Maximg, Minimg, ’-----------’) #輸出最小灰度級和最大灰度級 Omin,Omax = 0,255 #求 a, b a = float(Omax - Omin)/(Maximg - Minimg) b = Omin - a*Minimg print(a,b,’-----------’) #線性變換 O = a*img + b O = O.astype(np.uint8) #利用灰度直方圖進行比較 mget為GrayHist中的寫方法 mget(img) mget(O) cv2.imshow(’img’,img) cv2.imshow(’enhance’,O) cv2.waitKey(0) cv2.destroyAllWindows()

python 基于opencv實現(xiàn)圖像增強

python 基于opencv實現(xiàn)圖像增強

伽瑪變換

將一張圖的灰度值歸至[0,1]后,對于8位圖來說,除以255即可。伽瑪變換就是令O(r,c)=I(r,c)γI(r,c)γ,0≤r<H,0≤≤r<H,0≤c<W.當(dāng)γγ等于1時圖像不發(fā)生變換,而當(dāng)γγ大于0且小于1時就可以增強圖像的對比度,相反的當(dāng)γγ大于1時就可以使圖像對比度降低。 以下是伽瑪變換在OpenCV中的實現(xiàn):

import cv2import numpy as npimport sys# 伽瑪變換 power函數(shù)實現(xiàn)冪函數(shù)if __name__ == '__main__': img = cv2.imread('../img/ae.jpg', cv2.IMREAD_GRAYSCALE) # 歸1 Cimg = img / 255 # 伽瑪變換 gamma = 0.5 O = np.power(Cimg,gamma) #效果 cv2.imshow(’img’,img) cv2.imshow(’O’,O) cv2.waitKey(0) cv2.destroyAllWindows()

運行結(jié)果:

python 基于opencv實現(xiàn)圖像增強

直方圖的均衡化 計算圖像的灰度直方圖 計算灰度直方圖的累加直方圖 根據(jù)累加的直方圖和直方圖均衡化的原理得到輸入灰度級與輸出灰度級之間的映射關(guān)系 使用循環(huán)的方式得到輸出圖像的每一個像素的灰度級

import cv2import numpy as npfrom enhance.GrayHist import calcGrayHist#直方圖的均衡化if __name__ == '__main__': image = cv2.imread('../img/ae.jpg', cv2.IMREAD_GRAYSCALE) rows,cols = image.shape #計算灰度直方圖 grayHist = calcGrayHist(image) #計算累加灰度直方圖 zeroCumuMoment = np.zeros([256], np.uint32) for p in range(256): if p == 0: zeroCumuMoment[p] = grayHist[0] else: zeroCumuMoment[p] = zeroCumuMoment[p-1] + grayHist[p] #根據(jù)累加的灰度直方圖得到輸入與輸出灰度級之間的映射關(guān)系 output = np.zeros([256],np.uint8) cofficient = 256.0/(rows*cols) for p in range(256): q = cofficient * float(zeroCumuMoment[p])-1 if q >=0: output[p] = np.math.floor(q) else: output[p] = 0 #得出均衡化圖像 equalHistimg = np.zeros(image.shape,np.uint8) for r in range(rows): for c in range(cols): equalHistimg[r][c] = output[image[r][c]] cv2.imshow(’image’,image) cv2.imshow(’histimage’,equalHistimg) cv2.waitKey(0) cv2.destroyAllWindows()

運行結(jié)果:

python 基于opencv實現(xiàn)圖像增強

以上就是python 基于opencv實現(xiàn)圖像增強的詳細內(nèi)容,更多關(guān)于python opencv的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品女厕沟底拍撒尿 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | 亚洲国产欧洲综合997久久 | 3d动漫精品成人一区二区三 | 国内外成人免费视频 | 欧美精品亚洲一区二区在线播放 | 国产v片成人影院在线观看 国产v片在线播放免费观 | 手机看片高清国产日韩片 | 日本在线资源 | 美女毛片儿 | 亚洲一级毛片免观看 | 特黄特色三级在线播放 | 3级毛片 | 精品一区二区三区中文 | 国产欧美视频一区二区三区 | 国产精品资源在线 | 欧美成人看片黄a免费看 | 亚洲欧美一区二区三区在线播放 | 日韩欧美三级在线观看 | 日韩一级欧美一级毛片在线 | 新版天堂中文资源8在线 | 欧美日韩中 | 九草在线视频 | 亚洲欧美日韩国产精品一区 | 国产三级日本三级日产三 | 2021最新国产精品一区 | 精品视频亚洲 | 精品久久国产老人久久综合 | 日韩欧美毛片免费观看视频 | 免费国产高清视频 | 亚洲成人免费 | 亚洲精品久久久久网站 | 久久久国产精品福利免费 | 久久一本精品 | 欧美视频区 | 国产女女视屏免费 | 欧美多人三级级视频播放 | 国产手机国产手机在线 | 精品成人毛片一区二区视 | 国产毛片一区二区三区精品 | 台湾久久 |