本篇文章給大家分享的是有關(guān)怎么在Python中增強(qiáng)圖像對(duì)比度,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元遵化做網(wǎng)站,已為上家服務(wù),為遵化各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792圖像處理工具——灰度直方圖
灰度直方圖時(shí)圖像灰度級(jí)的函數(shù),用來描述每個(gè)灰度級(jí)在圖像矩陣中的像素個(gè)數(shù)或者占有率。
例子:矩陣
圖片來自網(wǎng)絡(luò),侵刪!
上面圖片的灰度直方圖
python實(shí)現(xiàn)
#!usr/bin/env python #-*- coding:utf-8 _*- """ @author:Sui yue @describe: 灰度直方圖,描述每個(gè)灰度級(jí)在圖像矩陣中的像素個(gè)數(shù)或者占有率 @time: 2019/09/15 """ import sys import cv2 import numpy as np import matplotlib.pyplot as plt #對(duì)于8位圖,圖像的灰度級(jí)范圍式0~255之間的整數(shù),通過定義函數(shù)來計(jì)算直方圖 def calcGrayHist(image): #灰度圖像矩陣的高、寬 rows, cols = image.shape #存儲(chǔ)灰度直方圖 grayHist=np.zeros([256],np.uint64) for r in range(rows): for c in range(cols): grayHist[image[r][c]] +=1 return grayHist #主函數(shù) if __name__=="__main__": #第一個(gè)參數(shù)式圖片地址,你只需放上你的圖片就可 image = cv2.imread('../images/test3.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow("image", image) print("Usge:python histogram.py imageFile") #計(jì)算灰度直方圖 grayHist=calcGrayHist(image) #畫出灰度直方圖 x_range=range(256) plt.plot(x_range,grayHist,'r',linewidth=2,c='black') #設(shè)置坐標(biāo)軸的范圍 y_maxValue=np.max(grayHist) plt.axis([0,255,0,y_maxValue]) plt.ylabel('gray level') plt.ylabel("number or pixels") # 顯示灰度直方圖 plt.show() cv2.waitKeyEx(0)
結(jié)果
線性變換
假設(shè)輸入圖像為I,寬W、高為H,輸出圖像為O,圖像的線性變換可以利用以下公式:
a的改變影響圖像的對(duì)比度,b的改變影響圖像的亮度
線性變換python實(shí)現(xiàn)
#!usr/bin/env python3 #-*- coding:utf-8 -*- #-------------------------- """ @author:Sui yue @describe: 對(duì)比增強(qiáng),線性變換 @time: 2019/09/15 14:21:44 """ import sys import numpy as np import cv2 import matplotlib.pyplot as plt #主函數(shù) def calcGrayHist(image): #灰度圖像矩陣的高、寬 rows, cols = image.shape #存儲(chǔ)灰度直方圖 grayHist=np.zeros([256],np.uint64) for r in range(rows): for c in range(cols): grayHist[image[r][c]] +=1 # 顯示灰度直方圖 # 畫出灰度直方圖 x_range = range(256) plt.plot(x_range, grayHist, 'r', linewidth=2, c='black') # 設(shè)置坐標(biāo)軸的范圍 y_maxValue = np.max(grayHist) plt.axis([0, 255, 0, y_maxValue]) plt.ylabel('gray level') plt.ylabel("number or pixels") # 顯示灰度直方圖 plt.show() if __name__=="__main__": # 讀圖像 I = cv2.imread('../images/test3.jpg', cv2.IMREAD_GRAYSCALE) #線性變換 a=3 O=float(a)*I #進(jìn)行數(shù)據(jù)截?cái)啵笥?55 的值要截?cái)酁?55 O[0>255]=255 #數(shù)據(jù)類型轉(zhuǎn)換 O=np.round(O) #uint8類型 O=O.astype(np.uint8) #顯示原圖和線性變換后的效果 cv2.imshow("I",I) cv2.imshow("O",O) calcGrayHist(I) calcGrayHist(O) cv2.waitKey(0) cv2.destroyAllWindows()
線性變換結(jié)果
灰度直方圖
直方圖正規(guī)化
假設(shè)輸入圖像為I,寬W、高為H,
其中
直方圖正規(guī)化python實(shí)現(xiàn)
#!usr/bin/env python3 #-*- coding:utf-8 -*- #-------------------------- """ @author:Sui yue @describe: 直方圖正規(guī)化 @time: 2019/09/18 21:17:22 """ import cv2 import numpy as np import matplotlib.pyplot as plt import sys def calcGrayHist(image): #灰度圖像矩陣的高、寬 rows, cols = image.shape #存儲(chǔ)灰度直方圖 grayHist=np.zeros([256],np.uint64) for r in range(rows): for c in range(cols): grayHist[image[r][c]] +=1 # 顯示灰度直方圖 # 畫出灰度直方圖 x_range = range(256) plt.plot(x_range, grayHist, 'r', linewidth=2, c='black') # 設(shè)置坐標(biāo)軸的范圍 y_maxValue = np.max(grayHist) plt.axis([0, 255, 0, y_maxValue]) plt.ylabel('gray level') plt.ylabel("number or pixels") # 顯示灰度直方圖 plt.show() #主函數(shù) if __name__ == '__main__': #讀入圖像 I = cv2.imread('../images/test3.jpg', cv2.IMREAD_GRAYSCALE) #求I的大值,最小值 Imax=np.max(I) Imin=np.min(I) #要輸出的最小灰度級(jí)和大灰度級(jí) Omax,Omin=255,0 #計(jì)算a和b的值 ,測(cè)試出*4 能看到人臉 a=float(Omax-Omin)/(Imax-Imin) b=Omin-a*Imin #矩陣的線性變換 O=a*I+b #數(shù)據(jù)類型轉(zhuǎn)換 O=O.astype(np.uint8) #顯示原圖和直方圖正規(guī)化的效果 cv2.imshow("I",I) cv2.imshow("O",O) calcGrayHist(O) cv2.waitKey(0) cv2.destroyAllWindows()
直方圖正規(guī)化結(jié)果
伽馬變換
假設(shè)輸入圖像為I,寬W、高為H,首先將其灰度值歸一化到 當(dāng) 伽馬變換python實(shí)現(xiàn) 以上就是怎么在Python中增強(qiáng)圖像對(duì)比度,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。#!usr/bin/env python3
#-*- coding:utf-8 -*-
#--------------------------
"""
@author:Sui yue
@describe: 對(duì)比增強(qiáng) 伽馬變換
@time: 2019/09/18 22:22:51
"""
import cv2
import numpy as np
import sys
#主函數(shù)
if __name__ == '__main__':
I = cv2.imread('../images/test3.jpg', cv2.IMREAD_GRAYSCALE)
#圖像歸一化
fI=I/255.0
#伽馬變換
gamma=0.3
O=np.power(fI,gamma)
#顯示原圖和伽馬變換
cv2.imshow("I",I)
cv2.imshow("O",O)
cv2.waitKey()
cv2.destroyAllWindows()
新聞標(biāo)題:怎么在Python中增強(qiáng)圖像對(duì)比度-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/cdesdg.html