




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第Python圖像運算之圖像掩膜直方圖和HS直方圖詳解目錄一.圖像掩膜直方圖二.圖像HS直方圖三.直方圖判斷白天黑夜四.總結
一.圖像掩膜直方圖
如果要統(tǒng)計圖像的某一部分直方圖,就需要使用掩碼(蒙板)來進行計算。假設將要統(tǒng)計的部分設置為白色,其余部分設置為黑色,然后使用該掩膜進行直方圖繪制,其完整代碼如下所示。
#-*-coding:utf-8-*-
#By:Eastmount
importcv2
importnumpyasnp
importmatplotlib.pyplotasplt
importmatplotlib
#讀取圖像
img=cv2.imread('luo.png')
#轉換為RGB圖像
img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#設置掩膜
mask=np.zeros(img.shape[:2],np.uint8)
mask[100:300,100:300]=255
masked_img=cv2.bitwise_and(img,img,mask=mask)
#圖像直方圖計算
hist_full=cv2.calcHist([img],[0],None,[256],[0,256])#通道[0]-灰度圖
#圖像直方圖計算(含掩膜)
hist_mask=cv2.calcHist([img],[0],mask,[256],[0,256])
plt.figure(figsize=(8,6))
#設置字體
matplotlib.rcParams['font.sans-serif']=['SimHei']
#原始圖像
plt.subplot(221)
plt.imshow(img_rgb,'gray')
plt.axis('off')
plt.title("(a)原始圖像")
#繪制掩膜
plt.subplot(222)
plt.imshow(mask,'gray')
plt.axis('off')
plt.title("(b)掩膜")
#繪制掩膜設置后的圖像
plt.subplot(223)
plt.imshow(masked_img,'gray')
plt.axis('off')
plt.title("(c)圖像掩膜處理")
#繪制直方圖
plt.subplot(224)
plt.plot(hist_full)
plt.plot(hist_mask)
plt.title("(d)直方圖曲線")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
其運行結果如圖1所示,它使用了一個200200像素的掩膜進行實驗。其中圖1(a)表示原始圖像,圖1(b)表示200200像素的掩膜,圖1表示原始圖像進行掩膜處理,圖1(d)表示直方圖曲線,藍色曲線為原始圖像的灰度值直方圖分布情況,綠色波動更小的曲線為掩膜直方圖曲線。
二.圖像HS直方圖
為了刻畫圖像中顏色的直觀特性,常常需要分析圖像的HSV空間下的直方圖特性。HSV空間是由色調(diào)(Hue)、飽和度(Saturation)、以及亮度(Value)構成,因此在進行直方圖計算時,需要先將源RGB圖像轉化為HSV顏色空間圖像,然后將對應的H和S通道進行單元劃分,再其二維空間上計算相對應直方圖,再計算直方圖空間上的最大值并歸一化繪制相應的直方圖信息,從而形成色調(diào)-飽和度直方圖(或H-S直方圖)。該直方圖通常應用在目標檢測、特征分析以及目標特征跟蹤等場景[1-2]。
由于H和S分量與人感受顏色的方式是緊密相連,V分量與圖像的彩色信息無關,這些特點使得HSV模型非常適合于借助人的視覺系統(tǒng)來感知彩色特性的圖像處理算法。
下面的代碼是具體的實現(xiàn)代碼,使用matplotlib.pyplot庫中的imshow()函數(shù)來繪制具有不同顏色映射的2D直方圖。
#-*-coding:utf-8-*-
#By:Eastmount
importcv2
importnumpyasnp
importmatplotlib.pyplotasplt
#讀取圖像
img=cv2.imread('luo.png')
#轉換為RGB圖像
img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#圖像HSV轉換
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#計算H-S直方圖
hist=cv2.calcHist(hsv,[0,1],None,[180,256],[0,180,0,256])
#原始圖像
plt.figure(figsize=(8,6))
plt.subplot(121),plt.imshow(img_rgb,'gray'),plt.title("(a)"),plt.axis('off')
#繪制H-S直方圖
plt.subplot(122),plt.imshow(hist,interpolation='nearest'),plt.title("(b)")
plt.xlabel("x"),plt.ylabel("y")
plt.show()
圖2(a)表示原始輸入圖像,圖2(b)是原圖像對應的彩色直方圖,其中X軸表示飽和度(S),Y軸表示色調(diào)(H)。在直方圖中,可以看到H=140和S=130附近的一些高值,它對應于艷麗的色調(diào)。
三.直方圖判斷白天黑夜
接著講述一個應用直方圖的案例,通過直方圖來判斷一幅圖像是黑夜或白天。常見的方法是通過計算圖像的灰度平均值、灰度中值或灰度標準差,再與自定義的閾值進行對比,從而判斷是黑夜還是白天[3-4]。
灰度平均值:該值等于圖像中所有像素灰度值之和除以圖像的像素個數(shù)。
灰度中值:對圖像中所有像素灰度值進行排序,然后獲取所有像素最中間的值,即為灰度中值。
灰度標準差:又常稱均方差,是離均差平方的算術平均數(shù)的平方根。標準差能反映一個數(shù)據(jù)集的離散程度,是總體各單位標準值與其平均數(shù)離差平方的算術平均數(shù)的平方根。如果一幅圖看起來灰蒙蒙的,那灰度標準差就??;如果一幅圖看起來很鮮艷,那對比度就很大,標準差也大。
下面的代碼是計算灰度Lena圖的灰度平均值、灰度中值和灰度標準差。
#-*-coding:utf-8-*-
#By:Eastmount
importcv2
importnumpyasnp
importmatplotlib.pyplotasplt
#函數(shù):獲取圖像的灰度平均值
deffun_mean(img,height,width):
sum_img=0
foriinrange(height):
forjinrange(width):
sum_img=sum_img+int(img[i,j])
mean=sum_img/(height*width)
returnmean
#函數(shù):獲取中位數(shù)
deffun_median(data):
length=len(data)
data.sort()
if(length%2)==1:
z=length//2
y=data[z]
else:
y=(int(data[length//2])+int(data[length//2-1]))/2
returny
#讀取圖像
img=cv2.imread('lena-hd.png')
#圖像灰度轉換
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#獲取圖像高度和寬度
height=grayImage.shape[0]
width=grayImage.shape[1]
#計算圖像的灰度平均值
mean=fun_mean(grayImage,height,width)
print("灰度平均值:",mean)
#計算圖像的灰度中位數(shù)
value=grayImage.ravel()#獲取所有像素值
median=fun_median(value)
print("灰度中值:",median)
#計算圖像的灰度標準差
std=np.std(value,ddof=1)
print("灰度標準差",std)
其運行結果如圖3所示,圖3(a)為原始圖像,圖3(b)為處理結果。其灰度平均值為123,灰度中值為129,灰度標準差為48.39。
下面講解另一種用來判斷圖像是白天還是黑夜的方法,其基本步驟如下:
(1)讀取原始圖像,轉換為灰度圖,并獲取圖像的所有像素值;
(2)設置灰度閾值并計算該閾值以下的像素個數(shù)。比如像素的閾值設置為50,統(tǒng)計低于50的像素值個數(shù);
(3)設置比例參數(shù),對比該參數(shù)與低于該閾值的像素占比,如果低于參數(shù)則預測為白天,高于參數(shù)則預測為黑夜。比如該參數(shù)設置為0.8,像素的灰度值低于閾值50的個數(shù)占整幅圖像所有像素個數(shù)的90%,則認為該圖像偏暗,故預測為黑夜;否則預測為白天。
具體實現(xiàn)的代碼如下所示。
#-*-coding:utf-8-*-
#By:Eastmount
importcv2
importnumpyasnp
importmatplotlib.pyplotasplt
#函數(shù):判斷黑夜或白天
deffunc_judge(img):
#獲取圖像高度和寬度
height=grayImage.shape[0]
width=grayImage.shape[1]
piexs_sum=height*width
dark_sum=0#偏暗像素個數(shù)
dark_prop=0#偏暗像素所占比例
foriinrange(height):
forjinrange(width):
ifimg[i,j]50:#閾值為50
dark_sum+=1
#計算比例
print(dark_sum)
print(piexs_sum)
dark_prop=dark_sum*1.0/piexs_sum
ifdark_prop=0.8:
print("Thispictureisdark!",dark_prop)
else:
print("Thispictureisbright!",dark_prop)
#讀取圖像
img=cv2.imread('day.png')
#轉換為RGB圖像
img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#圖像灰度轉換
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#計算256灰度級的圖像直方圖
hist=cv2.calcHist([grayImage],[0],None,[256],[0,255])
#判斷黑夜或白天
func_judge(grayImage)
#顯示原始圖像和繪制的直方圖
plt.subplot(121),plt.imshow(img_rgb,'gray'),plt.axis('off'),plt.title("(a)")
plt.subplot(122),plt.plot(hist,color='r'),plt.xlabel("x"),plt.ylabel("y"),plt.title("(b)")
plt.show()
第一張測試圖輸出的結果如圖4所示,其中圖4(a)為原始圖像,圖4(b)為對應直方圖曲線。
最終輸出結果為(Thispictureisbright!,0.010082704388303882),該預測為白天。
第二張測試圖輸出的結果如圖6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園疫情防控風險清單及環(huán)境通風防控措施
- 2025至2030中國自動車輛識別(AVI)系統(tǒng)行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 新材料行業(yè)的技術創(chuàng)新與應用前景分析
- 2025至2030中國自動扶梯清洗機行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國自動化組態(tài)軟件行業(yè)深度研究及發(fā)展前景投資評估分析
- 2025至2030中國腺嘌呤磷酸鹽行業(yè)運行狀況監(jiān)測與投資規(guī)劃建議報告
- 醫(yī)藥采購質(zhì)量控制措施
- 2025至2030中國脂肪族聚酮行業(yè)運行態(tài)勢與發(fā)展趨勢研究報告
- 2025至2030中國膠囊智能迷你投影儀行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國背對背規(guī)行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 物資設備詢價匯總表
- GB/T 24186-2022工程機械用高強度耐磨鋼板和鋼帶
- JJF 1015-2014計量器具型式評價通用規(guī)范
- GB/T 20330-2006攻絲前鉆孔用麻花鉆直徑
- 勞動合同(通用版)
- 英語口語 購物課件
- 膀胱鏡檢查記錄
- DBJ50-112-2016 現(xiàn)澆混凝土橋梁梁柱式模板支撐架安全技術規(guī)范
- 北京福賽爾V6891、V6851控制器(聯(lián)動型)的調(diào)試
- 汽車維修安全生產(chǎn)管理制度大全
- 晉江市勞動合同書
評論
0/150
提交評論