日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数字图像处理课程设计

發(fā)布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字图像处理课程设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)字圖像處理課程設計


一、前言

《數(shù)字圖像處理》是一門應用型課程,為了更鞏固和掌握圖像處理技術(shù)的基本技能,提高實際動手能力,并通過實際編程了解圖像處理算法實現(xiàn)的基本原理,為今后應用圖像處理技術(shù)和編程技術(shù)解決實際問題奠定基礎,設計一個GUI界面實現(xiàn)圖像處理的交互界面。

二、設計目標

1、該程序用python tkinter庫設計GUI界面,實現(xiàn)圖像處理交互式操作
2、可實現(xiàn)繪制灰度直方圖及直方圖均衡化
3、灰度變換,如:灰度反轉(zhuǎn)、對數(shù)變換、線性變換
4、幾何變換,如:圖像放大、縮小、旋轉(zhuǎn)、位移
5、圖像加噪聲(椒鹽噪聲與高斯噪聲)、空域和頻域去噪
6、邊緣提取,采用robert,sobel,拉普拉斯算子對圖像進行邊緣提取

三、程序設計

1、GUI界面設計

GUI界面采用的是python的第三方庫tkinter來搭建的。整體GUI界面分為信息框、原圖預覽框、參數(shù)框、結(jié)果顯示框四個區(qū)域。信息框用來顯示個人基本信息;原圖預覽框用來導入預處理的圖片并顯示,以及圖像處理方式的選擇;參數(shù)框用來輸入?yún)?shù);結(jié)果顯示框用來顯示圖像處理后的結(jié)果。GUI界面如圖:

其中,用LabelFrame劃分各個區(qū)域,在原圖顯示區(qū)域中,點擊選擇圖片按鈕選擇圖片,選擇的圖片會在Label2上顯示出來,下方的下拉框是用來選擇圖像處理方式,最后處理結(jié)果會在右側(cè)顯示區(qū)域畫布控件canvas_spice上繪制出來。

2、灰度直方圖均衡化

直方圖均衡化是通過拉伸像素強度分布范圍來增強圖像對比度的一種方法。直方圖均衡化是通過調(diào)整圖像的灰階分布,使得在0~255灰階上的分布更加均衡,提高了圖像的對比度,達到改善圖像主觀視覺效果的目的。
均衡化過程:
1.將彩色圖片轉(zhuǎn)換為灰度圖片,統(tǒng)計各灰度級的像素數(shù)目;
2.將每一個灰度級的像素的個數(shù)/圖像的像素總數(shù)得到每一灰度的出現(xiàn)概率;
3.最后用每一級灰度值×該灰度出現(xiàn)概率得到灰度分布情況,實現(xiàn)灰度均衡。
下圖是圖像原灰度圖與灰度均衡化后的圖像對比與直方圖對比:

從結(jié)果圖中可以看到,均衡化后的圖比原灰度圖相比,對比度明顯提高了,也更加清晰了,而均衡化后的直方圖在坐標軸上的分布也更為平均。

3、灰度變換

(1)灰度反轉(zhuǎn)
黑白圖像的反轉(zhuǎn)其實就是將灰度值為1的像素變?yōu)?,灰度值為0的像素變?yōu)?。而對有256灰度級的圖像來說,就是用255減去原圖像各個像素的灰度值。
(2)對數(shù)變換
對數(shù)變換是對原圖像灰度值動態(tài)范圍進行壓縮,對數(shù)變換的公式可表示為: g(x,y)=c*log?(1+f(x,y)),主要用于調(diào)高輸入圖像的低灰度值。
(3)線性變換
線性變換是通過建立灰度映射來調(diào)整原始圖像的灰度,從而改善圖像的質(zhì)量,凸顯圖像的細節(jié),提高圖像的對比度。線性變換的計算公式:g(x)=αf(x)+β。
下圖是各灰度變換后的結(jié)果:

4、幾何變換

(1)縮放
縮放是對圖像進行放大或縮小。圖像放大就是將原圖像中的每一個像素復制到放大新圖像對應的像素乘上倍數(shù),這種方法叫最近領(lǐng)域插值法,本設計的放大倍數(shù)為2,也就是將原圖像的像素復制到新圖像對應的2各像素上;本設計使用的縮小方法是將圖像的行和列縮小一半,從整體上就是將原圖像縮小為原來的四分之一。
(2)旋轉(zhuǎn)
圖像旋轉(zhuǎn)是以圖像的中心為原點,將圖像中的像素旋轉(zhuǎn)同一個角度達到整體圖像的旋轉(zhuǎn)。本程序中使用cv2.getRotationMatrix2D()函數(shù)取圖像中點逆時針旋轉(zhuǎn)90°。
(3)位移
圖像位移是指將一幅圖像或一幅圖像中的子圖像塊按指定的x方向和y方向的偏移量△x和△y進行位移。程序中使用cv2.warpAffine()以H為變換矩陣進行圖像平移,其中變換矩陣H為[1,0,50],[0,1,25] 。
下圖為圖像幾何變換后的結(jié)果圖:

通過給設定相關(guān)參數(shù)執(zhí)行對于程序,實現(xiàn)圖片的放大、縮小、旋轉(zhuǎn)以及位移。上圖是放大3倍、縮小2倍、順時針旋轉(zhuǎn)90度和向下平移100像素,向右平移10像素,這里的放大與縮小后的圖像是設置與畫布大小一致的,可以通過圖片的坐標軸查看具體像素。

5、圖像加噪及濾波

(1)椒鹽噪聲
椒鹽噪聲是指兩種噪聲,一種是鹽噪聲,另一種是胡椒噪聲。鹽=白色(0),椒=黑色(255)。前者是高灰度噪聲,后者屬于低灰度噪聲。一般兩種噪聲同時出現(xiàn),呈現(xiàn)在圖像上就是黑白雜點,類似椒鹽,故稱為椒鹽噪聲。
添加椒鹽噪聲的原理是:首先設置一個閾值即噪聲比例,然后隨機生成0-1之間的數(shù)字,如果生成的隨機數(shù)小于噪聲比例則將該像素點添加黑點,即椒噪聲,如果生成的隨機數(shù)大于(1-噪聲比例)則將該像素點添加白點,即鹽噪聲,這樣就能夠得到要添加的椒鹽噪點,最后將這些噪點與原圖像相加,得到噪聲污染后的圖像。
下圖為添加噪聲后的圖與所添加的噪點圖:

(2)高斯噪聲
高斯噪聲是指它的概率密度函數(shù)服從高斯分布的一類噪聲。如果一個噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。
添加高斯噪聲的原理是:首先將原始圖像的像素值進行歸一化,然后設置一個均值與方差呈高斯分布的圖像矩陣,將噪聲和原始圖像進行相加得到加噪后的圖像,clip函數(shù)將元素的大小限制在了low_clip和1之間了,小于的用low_clip代替,大于1的用1代替,解除歸一化,乘以255將加噪后的圖像的像素值恢,這樣就得到添加噪聲后的圖像了。
下圖為添加噪聲后的圖與所添加的噪聲圖:

(3)空域濾波(中值濾波)
中值濾波是一種非線性濾波器,在一定程度上可以克服線性平滑濾波器所引起的圖像模糊問題。其基本原理是基于某種中值濾波窗口,對該窗口覆蓋的所有像素的灰度進行排序,用其中間值代替圖像中被該窗口覆蓋的所有像素的中點像素的灰度值,從而彌補了領(lǐng)域平均噪聲消除方法的不足。
本次使用的是cv2中的medianBlur(img,k)函數(shù)進行濾波,其中img參數(shù)是要處理的圖像,k代表窗口的尺寸,下圖分別為使用中值濾波處理椒鹽噪聲和處理高斯噪聲的結(jié)果:

通過上面結(jié)果我們可以看到,中值濾波對于消除圖像中的椒鹽噪聲非常有效,效果很好,在濾除噪聲的同時能很好的保護信號的細節(jié)信息,但是對高斯噪聲的處理結(jié)果卻非常差,所以不建議使用中值濾波處理高斯噪聲。
(4)頻域濾波(低通濾波)
理想低通濾波器的含義是在半徑為D0的圓內(nèi)的所有頻率沒有衰減地通過該濾波器;而在此半徑的圓之外的所有頻率完全被衰減掉。D0稱為截止頻率。一個理想的低通濾波器的轉(zhuǎn)移函數(shù)定義為:

實現(xiàn)過程:①將圖片轉(zhuǎn)換為數(shù)組并將其進行傅里葉變換;②將低頻移動到中間;③使用一個矩形窗口對圖像進行掩模操作去除高頻分量;④再將得到的結(jié)果進行傅里葉逆變換;⑤最后進行歸一化。
在編寫程序過程中,在這一步遇到了問題,當執(zhí)行低通濾波時,會出現(xiàn)結(jié)果是一張黑圖,原因可能是圖片格式不符,而且執(zhí)行完低通濾波后就不能執(zhí)行其他程序了,沒有找到解決的方法。下圖為單獨使用低通濾波函數(shù)對高斯噪聲和對椒鹽噪聲處理的結(jié)果:

通過上面結(jié)果我們可以看到,中值濾波對于消除圖像中的高斯噪聲效果好一些,但是對椒鹽噪聲的處理結(jié)果卻非常差。

6、邊緣提取

(1)Robert算子
任意一堆互相垂直方向上的差分可以看成是梯度的近似求解,Robert邊緣檢測算子就是基于該原理,用對角線上相鄰像素之差來代替梯度尋找邊緣。Robert算子模板可以表示為

檢測步驟:利用算子模板對圖像進行像素卷積,將兩個結(jié)果相加,判斷結(jié)果是否大于閾值,若滿足條件,將其作為結(jié)果圖像中對應模板位置的像素值;若不滿足,則給結(jié)果圖像中對應模板位置的像素賦予0。
(2)Sobel算子
Sobel算子是一種用于邊緣檢測的離散微分算子,它結(jié)合了高斯平滑和微分求導。該算子用于計算圖像明暗程度近似值,根據(jù)圖像邊緣旁邊明暗程度把該區(qū)域內(nèi)超過某個數(shù)的特定點記為邊緣。其算子模板為:

檢測步驟:利用算子模板對圖像進行卷積后疊加,判斷結(jié)果是否大于閾值,若滿足條件,將其作為結(jié)果圖像中對應模板位置的像素值;若不滿足,則給結(jié)果圖像中對應模板位置的像素賦予0。
(3)拉普拉斯算子
拉普拉斯算子是一種無方向性的二階導數(shù)算子,常用于圖像增強領(lǐng)域和邊緣提取。它通過灰度差分計算鄰域內(nèi)的像素。拉普拉斯運算只需要一個模板,所以計算量較小。拉普拉斯算子模板有:

檢測步驟:判斷圖像中心像素灰度值與它周圍其他像素的灰度值,如果中心像素的灰度更高,則提升中心像素的灰度,反之降低中心像素的灰度,從而實現(xiàn)圖像銳化操作;拉普拉斯算子通過對鄰域中心像素的四方向或八方向求梯度,再將梯度相加起來判斷中心像素灰度與鄰域內(nèi)其他像素灰度的關(guān)系;最后通過梯度運算的結(jié)果對像素灰度進行調(diào)整。
下圖是各算子對圖像邊緣提取的結(jié)果圖:

對比三個算子邊緣提取的結(jié)果來看,Robert算子無法消除局部噪聲干擾,也會丟失灰度值變化緩慢的局部邊緣,從而導致邊緣輪廓不連續(xù);Sobel算子在較好的獲取邊緣效果的同時,對噪聲具有一定的平滑作用,減小了對噪聲的敏感性,但檢測的邊緣比較粗,會檢測出一些偽邊緣,邊緣檢測精度較低;拉普拉斯算子對圖像中的階躍型邊緣點定位準確,對圖像的噪聲較敏感,它使噪聲成分得到加強,這兩個特性使該算子容易丟失一部分邊緣的方向信息,造成一些不連續(xù)的檢測邊緣,同時抗噪聲能力比較差,由于其算法可能會出現(xiàn)雙像素邊界,常用來判斷邊緣像素位于圖像的明區(qū)或暗區(qū),很少用于邊緣檢測。

四、存在的問題

(1)GUI界面結(jié)果顯示中,圖像直方圖不能正常比例顯示,原因是直方圖沒有歸一化,而當直方圖均衡化后,結(jié)果就不能顯示出來;
(2)在低通濾波的GUI顯示時,并不能實現(xiàn)濾波結(jié)果,導致這一問題的原因應該是圖片格式的問題,當運行低通濾波后,整個程序就會崩潰,未找到解決方法。

五、參考

鏈接:
https://blog.csdn.net/qq_45769063/article/details/107137025.
https://blog.csdn.net/wlwwlk/article/details/107040954.

總結(jié)

以上是生活随笔為你收集整理的数字图像处理课程设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。