版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《基于MATLAB的圖像處理》</p><p> —制作自己的Photoshop </p><p><b> 課程設計</b></p><p> 學生姓名: </p><p> 學 號: </p><p>
2、 專業(yè)班級: </p><p> 指導教師: </p><p> 二○一○ 年 四 月 十三 日</p><p><b> 目錄</b></p><p> 課程設計目的…………………..………………….…………3</p><p>
3、 課程設計描述………………….………………………….….3</p><p> 課程設計要求………………..………………………….……3</p><p> 總體設計……………….…………………………….……….3</p><p> 按鈕功能………….……………….……………….…………4</p><p> 5.1、Scan(瀏覽) …
4、.…………….…… …….…………….………6</p><p> 5.2、Back(上一張) ….…………….… ………….………….……6</p><p> 5.3、Next(下一張) ….…………….…………… .………….……7</p><p> 5.4、Mark(添加水印) .…………….………….… ………….…7</p><p
5、> 5.5、Magnify(以鼠標點擊為中心放大) ….………….………….7</p><p> 5.6、R90°CW(順時針旋轉90度) …..………….………….……8</p><p> 5.7、R90°CCW(逆時針旋轉90度) .………….……………… 8</p><p> 5.8、Exit(退出) …. ….………….…
6、…… ……………….………8</p><p> 菜單功能……………………………………………..…….…8</p><p> 6.1、文件……………….……………… .……………….………8</p><p> 6.1.1、打開………..…………………………………….…………9</p><p> 6.1.2、保存…………………………..…
7、……………….…………9</p><p> 6.1.3、退出……………………..……………………………….…9</p><p> 6.2、編輯…………………………. … .…………………………9</p><p> 6.2.1、放大………………………..………………….……………9</p><p> 6.2.2、縮小……………………….
8、.………………….……………10</p><p> 6.2.3、灰度…………………………..……………….……………10</p><p> 6.2.4、亮度…………………………..…………….………………11</p><p> 6.2.5、旋轉…………………………..…………….………………12</p><p> 6.2.6、截圖……
9、……………………..…………….………………13</p><p> 6.3、變換…………………………………..……………………13</p><p> 6.3.1、傅里葉變換………………….…………….………………13</p><p> 6.3.2、離散余弦變換…………….…………….…………………14</p><p> 6.3.3、R
10、adom變換…………………………….…………………14</p><p> 6.4、噪聲………………………………..…………..…… .……15</p><p> 6.4.1、高斯噪聲…………………..………………….……………15</p><p> 6.4.2、椒鹽噪聲…………………..………………….……………15</p><p>
11、 6.4.3、斑點噪聲……………………..……………….……………16</p><p> 6.4.4、泊松噪聲……………………..…………….………………16</p><p> 6.5、濾波……………………………………..…………………16</p><p> 6.5.1、高通濾波…………………..………………….……………17</p><p
12、> 6.5.2、低通濾波…………………..………………….……………17</p><p> 6.5.3、平滑濾波(線性)…………..……………….……………17</p><p> 6.5.4、平滑濾波(非線性)………..……………….……………18</p><p> 6.5.5、銳化濾波(線性)…………..……………….……………18</p>
13、;<p> 6.5.6、銳化濾波(非線性)……………………..…………….…19</p><p> 6.6、直方圖統(tǒng)計…………… ……………… .……… ……… 19</p><p> 6.6.1、R直方圖……………………..……………….……………20</p><p> 6.6.2、G直方圖……………………..……………….……………20&l
14、t;/p><p> 6.6.3、B直方圖……………………..……………….……………21</p><p> 6.7、圖像增強……………………………… ………..…… .…21</p><p> 6.7.1、偽彩色增強………… ………… …… … … ……….……21</p><p> 6.7.2、真彩色增強………… …… …… . …
15、. .……… ……….22</p><p> 6.7.3、直方圖均衡………… ………………… . .……. .…… ….22</p><p> 6.7.4、NTSC顏色模型………………………… …… ……….…23</p><p> 6.7.5、YCbCr顏色模型……… ………… …… .……………….23</p><p> 6.7.
16、6、HSV顏色模型… … …… … .…… .…… .. … .……….24</p><p> 6.8、閾值分割……………………………… .…… . … . ……24</p><p> 程序調試及問題分析………………….……………………26</p><p> 心得體會…………………………….………………………28</p><p>
17、參考文獻…………………………….………………………29</p><p> 附錄………………………….………………………………29</p><p><b> 課程設計目的</b></p><p> 綜合運用MATLAB工具箱實現(xiàn)圖像處理的GUI程序設計。</p><p><b> 課程設計描述</b
18、></p><p> 學習MATLAB GUI程序設計,利用MATLAB圖像處理工具箱,設計和實現(xiàn)自己的Photoshop 。要求:按照軟件工程方法,根據(jù)需求進行程序的功能分析和界面設計,給出設計詳細說明。然后按照自己擬定的功能要求進行程序設計和調試。 </p><p> 以下列出幾點程序的功能,供參考</p><p> 1)圖像的讀取和保存。</
19、p><p> 2)設計圖形用戶界面,讓用戶能夠對圖像進行任意的亮度和對比度變化調整,顯示和對比變換前后的圖像。</p><p> 3)設計圖形用戶界面,讓用戶能夠用鼠標選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。</p><p> 4)編寫程序通過最近鄰插值和雙線性插值等算法將用戶所選取的圖像區(qū)域進行放大和縮小整數(shù)倍的操作,并保存,比較幾種插值的效果。</p&
20、gt;<p> 5)圖像直方圖統(tǒng)計和直方圖均衡,要求顯示直方圖統(tǒng)計,比較直方圖均衡后的效果。</p><p> 6)能對圖像加入各種噪聲,并通過幾種濾波算法實現(xiàn)去噪并顯示結果。比較去噪效果。</p><p><b> 課程設計要求</b></p><p> 1)熟悉和掌握MATLAB 程序設計方法</p>&
21、lt;p> 2)掌握MATLAB GUI 程序設計</p><p> 3)學習和熟悉MATLAB圖像處理工具箱</p><p> 4)學會運用MATLAB工具箱對圖像進行處理和分析</p><p><b> 總體設計</b></p><p> 這次的設計的功能按鈕包括菜單和面板的按鈕兩部分,面板上的按鈕功
22、能和菜單上的“閾值分割”功能是相對比較有新意的,這幾個功能基本都是自己編寫的源程序,并沒有現(xiàn)成的功能函數(shù)貢直接調用,算是花了不少功夫吧。然后菜單上的功能都是圖像處理必備的一些基本功能,大多可以通過Matlab自帶的一些現(xiàn)成函數(shù)來調用以實現(xiàn),關鍵是要注意它的使用語法和支持的圖像類型。</p><p> 注:整個設計都是基于Matlab 6.5版本。</p><p> 對于一些需要動態(tài)演示
23、的,無法貼圖,在附件里有演示視頻</p><p> 具體的菜單功能和面板設計如下圖所示:</p><p><b> 按鈕功能</b></p><p> 5.1、Scan(瀏覽)</p><p> 為了能讓圖像處理人員實現(xiàn)預覽將要處理的圖像,設計了這個功能。該功能實現(xiàn)的主要思想是,先獲取圖片所在文件夾的路徑,然后列
24、出文件夾的文件內容,最后通過一個循環(huán)來讀取每一張圖片,需要用到的一些函數(shù)如下:</p><p> directoryname = uigetdir('', 'pick up files'); %獲得文件夾路徑,得到一個字符數(shù)組</p><p> files = dir(directoryname);%列出文件夾里的內容,包含(name date by
25、tes isdir)</p><p> directoryname1 = strcat(directoryname,'\');%字符連接</p><p> max = size(files,1);%得到總共文件數(shù)</p><p> pause(0.8);%暫停</p><p> 在設計過程中有碰到一個問題,對于d1
26、= files(i).name;當i為1,2時得到不是圖片的文件名,所以說循環(huán)時要從3開始。</p><p> >> d1 = files(1).name</p><p><b> d1 =</b></p><p><b> .</b></p><p> >> d1
27、= files(2).name</p><p><b> d1 =</b></p><p><b> ..</b></p><p> 在按鈕調試的過程中,后來又發(fā)現(xiàn)了一個問題,但文件夾中包含其它非圖片格式的文件時會出錯,讀取的文件路徑無法顯示,因為它的格式不是合法圖片格式。為了解決這個問題,我就通過獲取每個文件的格式
28、,然后判斷它的格式是否為圖片,是則顯示,不是則跳過,這樣以來就循環(huán)次數(shù)也可以從1開始了。具體需要用到的函數(shù)如下:</p><p> A = {'jpg', 'png', 'bmp', 'jpeg', 'tif'};%合法的圖片類型</p><p> d2 = strfind(d1, '.')
29、;%獲取'.'在字符串中的位置,因為‘.’之后為文件類型</p><p> if any(ismember(A, d1(d2+1:end)));%判斷文件類型是否合法</p><p> 5.2、Back(上一張)</p><p> 在瀏覽完圖片以后,為了可以選擇喜歡處理的圖片而無需每次的打開圖片,設計了上一張和下一張功能。該功能實現(xiàn)的主要思想是
30、,先獲取已經顯示圖片的路徑,然后從第一張圖片的路徑開始與正在顯示的圖片路徑做比較,當二者相同時,記下i,然后執(zhí)行i=i-1,得到上一張圖片路徑,最后顯示出來。</p><p> 具體實現(xiàn)的關鍵語句如下:</p><p> for i=3:max</p><p> d1 = files(i).name; </p><p> d2
31、= strcat(directoryname1,d1); %文件夾內每張圖片路徑</p><p> if strcmp(d2,str) i=i-1;break; %與正在顯示的圖片路徑做比較,看是否相同 </p><p><b> else</b></p><p> end </p><
32、p><b> end</b></p><p> 當顯示第一張圖片時,再執(zhí)行上一張,提示:這是第一張圖片。</p><p> if i==2 msgbox('this is the first img');</p><p> 5.3、Next(下一張)</p><p> 下一站和上一張思路一
33、樣,只是在得到顯示圖片路徑以后,執(zhí)行i=i+1。</p><p> 另外我還加了一個功能,就是當現(xiàn)實到最后一張圖片是,如果再下一張就提示:這是最后一張圖片。</p><p> if i==max+1 msgbox('this is the last img');</p><p> 5.4、Mark(添加水印)</p><p&
34、gt; 為了給自己處理過的圖像添加標志,設計了添加水印的功能。該功能的主要思想是,圖像即為數(shù)組,如果要再圖像上添加水印,也就是用另一幅圖像的數(shù)據(jù)去覆蓋原圖像對應部分的數(shù)據(jù),也就是對數(shù)組內容的替換。然后就是關于水印添加的方位了,由于添加方位的不同,所要替代的范圍的不同了。</p><p> 基于這種思想,我的設計如下:</p><p> a(1:n2,1:m2)=b; %左上角
35、 </p><p> a(1:n2,(m1-m2+1):m1)=b; %右上角</p><p> a((n1-n2+1):n1,1:m2)=b; %左下角</p><p> a((n1-n2+1):n1,(m1-m2+1):m1)=b; %右下角</p><p> 其中a為原圖的讀入矩陣,b為待添加的水印的圖像矩陣,
36、在替代過程中我們要確保,a矩陣比b矩陣大,更重要的是a中將要替代的部分要和b的大小相同。</p><p> 在編寫程序過程中,發(fā)現(xiàn)了一個缺陷,我們可以為彩色圖像添加彩色水印,為灰度圖像添加灰度水印,但是當兩個類型不一樣時就會出錯,所以如果兩張圖的類型不一致,在添加之前就要類型轉化。</p><p> isrgb(a);isrgb(a);%判斷a,b圖像的類型</p>&l
37、t;p> 我還發(fā)現(xiàn)其實還有可改進的地方,前面我們添加水印的方法是完全替代,如果我們同時保留兩部分的數(shù)據(jù),就可以添加近似透明的水印,后來再查閱相關函數(shù)時發(fā)現(xiàn),imadd可以實現(xiàn)矩陣相加的功能,后來嘗試了下,效果一般,應該還有其它更好的方法,還有待研究。</p><p> 5.5、Magnify(以鼠標點擊為中心放大)</p><p> 當在做截圖功能的時候,我突然想到,既然截圖可
38、以自由選擇要放大的范圍,那么多次的截圖就可以實現(xiàn)對某部分不斷地放大,所以想到了基于截圖的以鼠標點擊為中心放大的功能。</p><p> 但首先要實現(xiàn)獲得鼠標點擊坐標的功能,在查閱過程中發(fā)現(xiàn)了[x,y]=ginput(1);以十字坐標形式,當鼠標左鍵點擊下,返回點擊點的X,Y坐標。然后就是要實現(xiàn)以點擊一定范圍放大,也就是每次實現(xiàn)以鼠標點擊點位中心的正方形大小截圖,通過一個循環(huán)多次截圖就可以實現(xiàn)這個功能了。<
39、/p><p> 具體設計的函數(shù)如下:</p><p> for n=1:3 %循環(huán)次數(shù)</p><p> [x,y]=ginput(1); %獲得點擊點坐標</p><p> z=imcrop(z1,[x-400/n,y-400/n,800/n,800/n]); %每次以一定大小截圖</p><p> im
40、show(z); </p><p> z1=z;%為下一次截圖的源數(shù)據(jù)</p><p><b> end</b></p><p> 這個設計有點不足,就是每次都要點擊要放大中心點,而且一定要執(zhí)行三次,如果想要提前結束只能按下回車鍵。</p><p> 5.6、R90°CW(順時針旋轉90度)</p
41、><p> 當初在設計順,逆時針旋轉90度的時候就在想,能不能實現(xiàn)連續(xù)的旋轉,而不是每次運行都轉到同一個位置,后來發(fā)現(xiàn)只要把每次轉完的數(shù)據(jù)保存,然后以此作為下一次旋轉的源數(shù)據(jù)就可以,于是這個功能葉完成了。</p><p><b> 具體實現(xiàn)如下:</b></p><p> y=imrotate(r,90); </p&g
42、t;<p> r=y;%把每次處理完的數(shù)據(jù)保存下來,作為下一次處理的源數(shù)據(jù)</p><p> 5.7、R90°CCW(逆時針旋轉90度)</p><p> 逆時針旋轉和順時針旋轉的思路一樣,只是我們要把每次處理完的數(shù)據(jù)做為全局變量,這樣以來順時針和逆時針選擇功能都可以處理它,所以在按鈕的回調函數(shù)前加上要加上global r ,其中r是每次旋轉后的圖像矩陣。&l
43、t;/p><p> 5.8、Exit(退出)</p><p> 在設計退出的程序時,只用了clc;clear all;close (gcf);后來發(fā)現(xiàn)一個問題,就是在退出后再一次運行GUI,當點擊任意一個功能的時候,都可以顯示出上次退出前的圖像,也就是說坐標軸內的圖像還沒有清楚,后來通過的一番搜索,找到了相應的指令,cla reset,于是問題得到了解決。</p><p
44、><b> 菜單功能</b></p><p><b> 6.1、文件</b></p><p> 該菜單包含文件的打開,保存和退出GUI的功能,這幾個功能是每一種圖像處理軟件必備的功能。</p><p><b> 6.1.1、打開</b></p><p> 為了讓
45、使用者打開所需要的圖片,設計了打開圖像這項基本功能。通過對話框的形式來選擇文件,選擇uigetfile函數(shù)來實現(xiàn),uigetfile函數(shù)顯示一個打開文件對話框,該對話框自動列出當前路徑下的目錄和文件。Uigetfile函數(shù)的調用格式為[name,path]=yigetfile(…), 在按下對話框中的執(zhí)行按鈕“打開”后,返回選擇的文件名和路徑,分別保存到“name”和“path”中。通過imread函數(shù)讀出圖像數(shù)據(jù),把圖像數(shù)據(jù)賦值給全局
46、變量im,這里得到的im要聲明為全局變量,為后面每個功能所使用。</p><p><b> 6.1.2、保存</b></p><p> 對于圖像保存,可以用imwrite函數(shù),把數(shù)據(jù)i存到指定的文件夾中。這里仍然要用到uigetfile函數(shù)來實現(xiàn),用它獲得將要保存的路徑??梢灾付ㄎ募4娴母袷?,如:imwrite(i,file,'jpg');,其中
47、i為從坐標軸中獲取的圖像信息:i=getimage(gca);</p><p><b> 6.1.3、退出</b></p><p> 退出和按鈕的退出功能一樣,清除所有變量和坐標軸中的內容。</p><p><b> clc;</b></p><p> clear all;</p>
48、;<p> cla reset;</p><p> close(gcf) </p><p><b> 6.2、編輯</b></p><p> 該菜單包含圖像放大,縮小,灰度轉換,亮度轉換,任意角度旋轉和截圖這幾項功能,這些是對圖像的一些基本幾何變換等基本功能。</p><p><b>
49、 6.2.1、放大</b></p><p> 在MATLAB中,用函數(shù)imresize來實現(xiàn)對圖像的放大或縮小。插值方法可選用三種方法,最近鄰插值,雙線性插值,雙三次插值。</p><p> 該函數(shù)的調用格式如下:</p><p> B=imresize(A,m,method)</p><p> 其中:參數(shù)method用
50、于指定插值的方法,可選的值為“nearest”(最近鄰法),“bilinear”(雙線性插值)、“bicubic”(雙三次插值),缺省值為“nearest”。</p><p> 在實現(xiàn)放大后,顯示圖像并不能清晰地看出來圖像有什么具體的變化,但是通過查詢圖像屬性后可以發(fā)現(xiàn),圖像放大了。</p><p><b> 6.2.2、縮小</b></p><
51、;p> 縮小的原理和放大原理是一樣的,就是對B=imresizee(A.m,method)中參數(shù)m進行修改,當 m小于1時實際上是縮小;同放大一樣,如果原圖質量較好,尺寸較大,由于限制了坐標軸大小的緣故,在功能現(xiàn)實時我們看不出變化,而實際上是有變化的。通過查看圖片屬性可以看到:</p><p> 我們可以看到,放大兩倍后的圖像尺寸是原圖的0.5倍,但由于限制了坐標軸大小的緣故,在功能現(xiàn)實時我們看不出變化
52、,而實際上是有變化的,這和圖片放大時一樣的。</p><p><b> 6.2.3、灰度</b></p><p> 由于RGB圖像是三維圖像,所以圖像數(shù)據(jù)是一個三維數(shù)組,為了顯示灰度圖像,把三維圖像降為二維,可以只取其中的二維數(shù)據(jù),實現(xiàn)方法程序為:</p><p> global im </p><p> y=i
53、m(:,:,1);</p><p> imshow(y);</p><p> 我們也可以通過調用圖像類型轉化函數(shù)來實現(xiàn):</p><p> global im </p><p> y=rgb2gray(im);</p><p> imshow(y);</p><p> 這個程序只能用
54、于RGB圖像轉換灰度圖像,當原始圖像本來就是灰度圖像時,運行該程序時就會出錯,但是使用者在使用時有時并不知道這些,為了使該程序更加完善,應該在使用者原先圖像時灰度圖像時使用該功能時,應該要顯示提示類信息。所以在開始時應該要有一個RGB圖像或是灰度圖像的判斷過程。完整的程序如下: </p><p> if isrgb(im) %判斷是否為灰度圖像</p><p>
55、 y=rgb2gray(im); </p><p> imshow(y);</p><p><b> else</b></p><p> msgbox('error,this is already a gray Img');</p><p><b> end</b>
56、</p><p> 如果原圖是RGB,執(zhí)行該操作的結果如下圖:</p><p> 如果原圖是灰度圖像,則提示: </p><p><b> 6.2.4、亮度</b></p><p> 用imadjust函數(shù),其調用格式如下:</p><p> g=imadust(f,[low_
57、in high_in],[low_out high_out]),gamma)</p><p> gamma 表示映射性質,默認值是1 表示線性映射。</p><p> 由于該函數(shù)有五個參數(shù)需要輸入,為了方便用戶改變,所以這里設計一個輸入對話框,用戶通過對話框把五個參數(shù)賦值給[low_in high_in],[low_out high_out],gamma這五個參數(shù),如下一組命令建立了
58、如圖所示的輸入對話框:</p><p> prompt={'輸入?yún)?shù)1','輸入?yún)?shù)2','輸入gamma'};</p><p> defans={'[0 0.7]','[0 1]','1'};</p><p> p=inputdlg(prompt,'輸入?yún)?/p>
59、數(shù)',1,defans); %這里得到的都是字符</p><p> 最后我們還要把得到的字符轉換為數(shù)值:</p><p> p1=str2num(p{1});</p><p> p2=str2num(p{2});</p><p> p3=str2num(p{3});</p><p> 但是,這種方
60、法并不能很好的讓用戶能夠對圖像進行任意的亮度和對比度變化調整,有時并不事先知道參數(shù)的值要多少,也不關心,而是任意調節(jié)的,直到滿意為止。所以應該用滑動條來調節(jié)圖像的亮度和對比度,這樣更適合用戶的使用習慣。</p><p> 由于imadjust函數(shù)有五個參數(shù),所以原則上需要設計五個滑動條來調節(jié)對比度,這對用戶來說顯然比較麻煩,因此在設計的時候固定其中的三個參數(shù),通過調節(jié)兩個參數(shù)的值來改變亮度和對比度。</p
61、><p><b> 滑動條設計如下圖:</b></p><p> 亮度調整的tag名為ld,取值范圍0~1,gamma值的tag名為gamma,取值范圍為0~3。獲取滑動條參數(shù)的程序如下:</p><p> a=get(hObject,'Value'); %滑動條light</p><p><b
62、> p2=[0 a];</b></p><p> p3=get(hObject,'Value'); %滑動條gamma</p><p> y=imadjust(im,[0 0.5],p2,p3);</p><p> 這樣我們就可以通過調整滑動條的位置來隨時改變亮度值,得到想要的效果。</p><p>
63、<b> 6.2.5、旋轉</b></p><p> 用函數(shù)imrotate來實現(xiàn)對圖像的插值旋轉。該函數(shù)的調用格式如下: </p><p> B=imrotate(A,angle,method,’crop’)其中,參數(shù)method用于指定插值的方法,可選的值可以有三種,分別為鄰近插值,雙線性插值,雙三次插值,缺省時為鄰近插值,參數(shù)angle代表旋轉的角度。當然
64、我們也可以和前面一樣通過對話框的交互形式來實現(xiàn)任意角度的輸入。</p><p><b> 6.2.6、截圖</b></p><p> 在MATLAB中,用函數(shù)imcrop實現(xiàn)對圖像的剪切操作。該操作剪切的是圖像中的一個矩形子圖,用戶可以通過參數(shù)指定這個矩形四個頂點的坐標,也可以交互地用鼠標選取這個矩形。</p><p> Imcrop函數(shù)
65、的調用格式如下:</p><p> y=imcrop(im);</p><p> imshow(y);</p><p><b> 截圖的效果如下:</b></p><p><b> 6.3、變換</b></p><p> 該菜單包括傅里葉變換,離散余弦變換,Rado
66、n變換這三項功能,圖像的變換使圖像處理的一個重要內容,它是許多圖像處理技術的基礎。為了有效和快速地對圖像進行處理和分析,常常需要將原定義在圖像的空間的圖像以某種形式轉換到另一個空間,并利用這些空間的特有性質更方便地進行一些處理,最后再變換會到原空間以得到所需的效果。</p><p> 6.3.1、傅里葉變換</p><p> 為了得到圖像的頻譜圖,先要對數(shù)據(jù)進行傅里葉變換,用fft2函
67、數(shù)對二維數(shù)據(jù)進行快速傅里葉變換,同時為了更好的觀察頻譜圖,需要把fft2變換后的數(shù)據(jù)進行平移,利用fftshift函數(shù),把快速傅里葉變換的DC 組件移到光譜中心。這樣圖像能量的低頻成分將集中到頻譜中心,圖像上的邊緣、線條細節(jié)信息等高頻成分將分散在圖像頻譜的邊緣。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> m=fft2(x); %對圖像執(zhí)行二維傅里葉
68、變換</p><p> y=fftshift(m); %使低頻能量集中在中心位置</p><p> imshow(log(abs(y)),[]);%使用對數(shù)使低頻部分顯示效果更明顯</p><p> 6.3.2、離散余弦變換</p><p> 傅里葉變化的一個最大問題是:它的參數(shù)都是復數(shù),在數(shù)據(jù)的描述上相當于實數(shù)的兩倍,不易計算,因此
69、希望有一種能達到相同功能但數(shù)據(jù)量有不大的變換,在這個思想的指導下,產生了離散余弦變換。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> gray=rgb2gray(im);</p><p> d=dct2(gray); %對圖像進二維行離散余弦變換</p><p> axes(handles.
70、axes2);</p><p> imshow(log(abs(d)),[]); %使用對數(shù)使低頻部分顯示效果更明顯</p><p> 通過變換我們可以看到,圖像的低頻能量都集中在左上角區(qū)域,向著右下角方向,頻率越來越高,這主要是以為離散余弦變換核實際上是取傅里葉變化的實部。</p><p> 6.3.2、Radon變換</p><p>
71、; Radon函數(shù)計算指定方向上圖像矩陣的投影,計算一定方向上平行光束的線積分。光線間隔1個象素單位。為了表示圖像,radon變換通過圍繞圖像中心旋轉光源來從不同角度獲得圖像的平行光投影。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> theta=0:1:180;%對每個角度做radon變換處理</p><p> [r,xp]=
72、radon(im,theta);</p><p> imagesc(theta,xp,r);</p><p> xlabel('degrees');%為x軸做標注</p><p> colorbar;%顯示顏色條</p><p> Radon變換域hough變換緊密相關。可以用radon函數(shù)實現(xiàn)hough變換的一種形式
73、來找出圖像中的直線對象,</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> im=imread(‘1.jpg’);</p><p> im=mat2gray(im);</p><p> BW=edge(im);% 邊緣檢測</p><p> imshow(BW);</p>
74、<p><b> 6.4、噪聲</b></p><p> 該菜單包含四種噪聲的添加,高斯噪聲,椒鹽噪聲,斑點噪聲,泊松噪聲。因此我們要對噪聲進行研究,找到最好的去處噪聲的方法。 </p><p> 6.4.1、高斯噪聲</p><p> 所謂高斯噪聲是指它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。高斯噪聲是一種
75、隨機噪聲,它完全由其時變平均值和兩瞬時的協(xié)方差函數(shù)來確定。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=imnoise(im,'gaussian',p1,p2);</p><p> 6.4.2、椒鹽噪聲</p><p> 椒鹽噪聲是由圖像傳感器,傳輸信道,解碼處理等產生的黑白相間的亮
76、暗點噪聲。椒鹽噪聲往往由圖像切割引起。去除脈沖干擾級椒鹽噪聲最常用的算法是中值濾波。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=imnoise(x,'salt & pepper',p1);</p><p> 6.4.3、斑點噪聲</p><p> 斑點噪聲是SAR成像系統(tǒng)的
77、一大特色,源自基本分辨單元內地物的隨機散射,在圖像上表現(xiàn)為信號相關(如在空間上相關)的小斑點,它既降低了圖像的畫面質量,又嚴重影響圖像的自動分割、分類、目標檢測以及其它定量專題信息的提取 。SAR斑點噪聲的抑制可通過非相干多視處理,也可使用空間域濾波實現(xiàn)。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=imnoise(im,'speckle
78、39;,p1);</p><p> 6.4.4、泊松噪聲</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=imnoise(im,'poisson');</p><p><b> 6.5、濾波</b></p><p> 該按鈕包含了高通,低通
79、濾波,平滑,銳化的線性和非線性濾波,大量的實驗研究發(fā)現(xiàn),由攝像機拍攝得到的圖像受離散的脈沖、椒鹽噪聲和零均值的高斯噪聲的影響較嚴重。噪聲給圖像處理帶來很多困難,對圖像分割、特征提取、圖像識別等具有直接影響。因此,實時采集的圖像需進行濾波處理。注:對于平滑和銳化濾波都要先添加噪聲。</p><p> 6.5.1、高通濾波</p><p> 高通濾波是只對低于某一給定頻率以下的頻率成分有衰
80、減作用,而允許這個截止頻率以上的頻率成分通過,并且沒有相位移的濾波過程。主要用來消除低頻噪聲,保留高頻部分。圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應,因為采用高通濾波器讓高頻成分順利通過,可以使圖像的邊緣或線條更加清楚,從而識相圖像的銳化。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> 6.5.2、低通濾波</p><p>
81、 圖像的邊緣以及噪聲干擾在圖像的頻域上對應于圖像傅里葉變換中的高頻部分,而圖像的背景區(qū)則對應于低頻部分,因此可以用頻域低通濾波法去除圖像的高頻部分,以去掉噪聲使圖像平滑。對于低通濾波器截止頻率的不同,會發(fā)生不同程度的“振鈴”現(xiàn)象,同時圖像變模糊了。截止頻率月底,濾除噪聲越徹底,高頻分量損失越嚴重,但圖像就越模糊。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p>
82、 6.5.3、平滑線性濾波(領域平均法)</p><p> 對一些圖像進行線性濾波可以去除圖像中的某些類型的噪聲,如采用領域平均法的均值濾波器就非常適用于去除通過掃描得到的圖像中的顆粒噪聲。</p><p> 領域平均法是空間域平滑噪聲技術。對于給定圖像的每個像點,取其領域含有m個像素,取其平均值作為處理后所得到圖像像點的灰度,用一像素領域內個像素灰度平均值來代替該像素的灰度。<
83、;/p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> h=ones(3,3)/9;%產生濾波模板并歸一化</p><p> y=conv2(zs,h);%用均值模板對圖像濾波</p><p> axes(handles.axes2);</p><p> imshow(y,[]);</p
84、><p> 可以看出,領域平均法也平滑了圖像信號,特別是可能使圖像目標區(qū)域的邊界變得模糊??梢宰C明,對圖像進行領域平滑處理相當于圖像信號通過一低通濾波器。</p><p> 6.5.4、平滑非線性濾波(中值濾波)</p><p> 中值濾波是抑制噪聲的非線性處理方法。給定一個濾波窗口,對于二維圖像,窗口形狀可以使矩形,圓形及十字形等,對于位于中間位置的那個數(shù)值稱為
85、這n個數(shù)值的中值。中值濾波的算法運算簡單,易于實現(xiàn),而且能較好地保護邊界,但有時會失掉圖像中的細線和小塊的目標區(qū)域。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=medfilt2(zs,[5,5]);%用5*5的濾波窗口對圖像進行中值濾波</p><p> axes(handles.axes2);</p>&l
86、t;p> imshow(y);</p><p> 6.5.5、銳化線性濾波</p><p> 拉氏算子比較適用于改善因為光線的漫反射造成的圖像模糊,其原理是這樣的,在攝影膠片記錄圖像的光化過程中,光點將漫反射到其它周圍區(qū)域,造成圖像模糊,不模糊圖像等于模糊圖像減去它的拉氏變換的常數(shù)倍。另外,人們還發(fā)現(xiàn),及時模糊不是由于光的漫反射造成的,對圖像進行拉氏變換也可以使圖像更清晰。&l
87、t;/p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> I1=double(im);</p><p> h=fspecial('laplacian');%拉氏算子</p><p> I2=filter2(h,I1);%濾波</p><p> axes(handles.axes
88、2);</p><p> I3=I1-I2;%減去模糊圖像</p><p> imshow(I3,[]);</p><p> 比較原始圖像和經拉氏算子運算的圖像,可以發(fā)現(xiàn),圖像的模糊部分得到了銳化,特別是模糊的邊緣部分得到了增強,邊界更加明顯。但是,圖像顯示清楚的地方,經濾波后發(fā)生了失真,這也是拉氏算子增強的一大缺點。</p><p>
89、 6.5.6、銳化非線性濾波</p><p> 對一幅圖像施加梯度模算子,可以增強灰度變化的幅度,因此我們可以采用梯度模算子作為圖像的銳化算子,而且梯度模算子還具有方向同性和位移不變性。Sobel算子的特點是對稱的一階差分,對中心加權,具有一定的平滑作用。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> H=fspecial(
90、39;sobel');%梯度模算子</p><p> axes(handles.axes2);</p><p> J=filter2(H,im);%濾波</p><p> imshow(J);</p><p><b> 6.6、直方圖統(tǒng)計</b></p><p> 該按鈕包含了R
91、GB三基色的直方圖統(tǒng)計功能,灰度直方圖是表示一幅圖像灰度分布情況的統(tǒng)計表。直方圖的橫坐標是灰度級,縱坐標是具有該灰度級的像素個數(shù)或出現(xiàn)這個灰度級的概率。所以說,直方圖統(tǒng)計提供了原圖的灰度值分布情況,也可說給出了一幅圖所有灰度值的整體描述。我們可以根據(jù)一幅圖的灰度直方圖情況來判斷其質量,并可以通過一定的變換使原來偏暗或偏亮的圖像變換到動態(tài)范圍正常的區(qū)域,如直方圖的規(guī)定化。</p><p> 6.6.1、R直方圖&
92、lt;/p><p> 灰度和彩色圖形都有R直方圖。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> x=imhist(im(:,:,1));%統(tǒng)計圖片每個灰度值個數(shù) </p><p> x1=x(1:10:256);</p><p> horz=1
93、:10:256;</p><p> bar(horz,x1);%柱狀圖顯示</p><p> 6.6.2、G直方圖</p><p> 對于彩色圖形沒有G直方圖。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> x=imhist(im(:,:,2));%統(tǒng)計圖片每個灰度值個數(shù)
94、 </p><p> x1=x(1:10:256);</p><p> horz=1:10:256;</p><p> bar(horz,x1);%柱狀圖顯示</p><p> 6.6.3、B直方圖</p><p> 對于彩色圖形沒有B直方圖。</p><p&
95、gt; 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> x=imhist(im(:,:,3));%統(tǒng)計圖片每個灰度值個數(shù) </p><p> x1=x(1:10:256);</p><p> horz=1:10:256;</p><p> bar(horz,x1);%柱狀圖顯示<
96、/p><p><b> 6.7、圖像增強</b></p><p> 該菜單包含灰度圖像的偽彩色增強,彩色圖像的真彩色增強,圖像的直方圖均衡,彩色圖像的NTSC,YCbCr,HSV顏色模型轉換。在圖像的生產,傳輸或變換的過程中,由于多種因素的影響,總要造成圖像質量的下降,這就需要進行圖像增強,改善圖像的視覺效果,提高圖像的清晰度。</p><p>
97、; 6.7.1、偽彩色增強</p><p> 對于灰度圖像,人眼分辨的灰度級只有十幾到二十幾,而對不同的亮度和色彩圖像則可以達到幾百甚至上千,因此偽彩色增強是將一個波段或單一的黑白圖像變換為彩色圖像,從而把人眼不能區(qū)分的微小的灰度差別顯示為明顯的色彩差異,更便于解譯和提取有用信息。</p><p> 偽彩色增強的方法主要有以下三種:亮度切割技術,灰度彩色變換,頻域濾波法。 </
98、p><p> 我采用的是亮度切割技術,亮度切割技術是偽彩色增強中最簡單的一種方法,它是對圖像亮度范圍進行分割,使一定亮度間隔對應于某一顏色。對于切割平面以下的分配一中顏色,平面以上的再分配一種顏色。這樣,便可以把一幅灰度圖像變成一幅偽彩色圖像,此法比較直觀簡單,缺點使變換出的彩色數(shù)目有限而且顏色生硬不夠調和,量化噪聲大。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p
99、><p> c=zeros(size(a)); %a為原灰度圖像矩陣</p><p> pos=find(a<100);%找到灰度值小于100的</p><p> c(pos)=a(pos); </p><p> b(:,:,3)=c;%變?yōu)樗{色</p><p> %對于其它顏色的變換思路同上,最后顯示偽
100、彩色變換后的圖像b</p><p> imshow(b);</p><p> 6.7.2、真彩色增強</p><p> 真彩色增強時從彩色到彩色的一種變換。通過一定的映射函數(shù)變換成新的三基色分量,彩色合成使得增強圖像中各目標呈現(xiàn)出與原圖像不同的彩色。通過真彩色增強我們可以達到變換圖像引起人們的特別關注,以及通過人眼對不同顏色的靈敏度的不同,使景物呈現(xiàn)出與人眼色
101、覺相匹配的顏色,以提高人眼對目標的分辨力。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> im(:,:,1)=immultiply(im(:,:,1),0.3);%對R基色每個元素乘以0.3</p><p> im(:,:,2)=immultiply(im(:,:,2),0.2);%對G基色每個元素乘以0.2</p>
102、<p> im(:,:,3)=immultiply(im(:,:,3),0.5);%對B基色每個元素乘以0.5</p><p> axes(handles.axes2);</p><p> imshow(im);%最后顯示處理變換后的RGB圖像</p><p> 6.7.3、直方圖均衡</p><p> 如果獲得的一幅圖
103、像的直方圖效果不理想,可以通過直方圖均衡化處理技術作適當?shù)男薷模瑢崿F(xiàn)圖像清晰的目的。這種方法的基本思想是對原始圖像中的像素灰度做某種映射變換,是變換后的圖像灰度概率密度是均勻分布的。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> if isrgb(im) %對灰度圖像和彩色圖像分別處理</p><p> a=histeq(im(
104、:,:,1)); %對每一種基色直方圖均衡</p><p> b=histeq(im(:,:,2));</p><p> c=histeq(im(:,:,3));</p><p> k(:,:,1)=a;</p><p> k(:,:,2)=b;</p><p> k(:,:,3)=c;</p>
105、<p> imshow(k); </p><p><b> else</b></p><p> h=histeq(im); %對灰度圖像直方圖均衡 </p><p> imshow(h);</p><p><b> end</b></
106、p><p> 通過變換,圖像灰度的動態(tài)范圍得到了增加,從而提高圖像的對比度,但是他是以減少圖像的灰度等級為代價的,而且均衡化在增加圖像反差的同時,也增加了圖像的顆粒感,感覺好像圖像時由許多細小顆粒組成的。</p><p> 6.7.4、NTSC顏色模型</p><p> NTSC模型廣泛應用于美國等國家的電視信號,它的特點是信號的強度信息相分離,同一個信號可以方便
107、地同時表示彩色圖像和黑白圖像。在NTSC格式中,圖像由三個分量表示:亮度(luminance)用Y表示,色度(hue)用I表示,飽和度(saturation)用Q表示。第一個分量Y,表示灰度信息,后兩個分量表示彩色信息。因此NTSC模型使用的是Y—I—Q色彩坐標軸,NTSC模型的色彩空間又稱YIQ空間。通過執(zhí)行相關函數(shù)我們可以分析彩色圖像的每一個分量的情況。</p><p> 執(zhí)行的相關程序和處理后的效果如下所
108、示:</p><p><b> global im</b></p><p> y=rgb2ntsc(im);%將rgb顏色模型轉化為ntsc顏色模型</p><p> subplot(1,3,1); </p><p> imshow(y(:,:,1));%Y亮度 ;xlabel('luminance
109、');</p><p> subplot(1,3,2);</p><p> imshow(y(:,:,2));%I色調 ;xlabel('hue');</p><p> subplot(1,3,3);</p><p> imshow(y(:,:,3)); %Q飽和度 ;xlabel('satura
110、tion');</p><p> 6.7.5、YCbCr顏色模型</p><p> 在DVD、攝像機、數(shù)字電視等消費類視頻產品中,常用的色彩編碼方案是YCbCr,其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量后,肉眼將察覺不到的圖像質量的變化。通過函數(shù)變換我們可以比較兩種顏色的差異。<
111、;/p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=rgb2ycbcr(im);</p><p> imshow(y);</p><p> 6.7.6、HSV顏色模型</p><p> HSV(hue,saturation,value)顏色空間的模型對應于圓柱坐標系中的一個圓錐形子集,
112、圓錐的頂面對應于V=1. 它包含RGB模型中的R=1,G=1,B=1 三個面,所代表的顏色較亮。色彩H由繞V軸的旋轉角給定。紅色對應于 角度0° ,綠色對應于角度120°,藍色對應于角度240°。在HSV顏色模型中,每一種顏色和它的補色相差180° 。 飽和度S取值從0到1,所以圓錐頂面的半徑為1。在圓錐的頂點(即原點)處,V=0,H和S無定義, 代表黑色。圓錐的頂面中心處S=0,V=1,H無定義
113、,代表白色。通過函數(shù)變換我們可以比較兩種顏色的差異。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p> y=rgb2hsv(im);</p><p> imshow(y);</p><p><b> 6.8、閾值分割</b></p><p> 一幅圖像包括目標,
114、背景和噪聲,怎樣從灰度圖像中取出對象物?灰度閾值法就是把圖像的灰度分成不同的等級,然后用設置灰度閾值的方法確定有意義的區(qū)域或欲分割物體的邊界。設定某一閾值T,對圖像進行二值化處理。</p><p> 執(zhí)行的相關程序和處理后的效果如下所示:</p><p><b> global im</b></p><p><b> I=im;
115、</b></p><p> I=double(I(:,:,1));%只對灰度進行處理</p><p> fxy=zeros(1,256);</p><p> [m,n]=size(I);</p><p> for i=1:m %統(tǒng)計每個灰度值的個數(shù)</p><p><b> f
116、or j=1:n</b></p><p><b> c=I(i,j);</b></p><p> fxy(c+1)=fxy(c+1)+1;</p><p><b> end</b></p><p><b> end </b></p><
117、p> figure(1);plot(fxy);%畫出灰度直方圖</p><p> p1={'Input Num:'};%設置個對話框,選擇閾值</p><p> p2={'180'};</p><p> p3=inputdlg(p1,'Input Num:1~256',1,p2);</p>
118、<p> p=str2num(p3{1});</p><p> for i=1:m %小于閾值的為黑,大于閾值的為白</p><p><b> for j=1:n</b></p><p> if I(i,j)<p</p><p> image1(i,j)=0;</p>
119、<p><b> else</b></p><p> image1(i,j)=1;</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p>&
120、lt;p> axes(handles.axes2);</p><p> imshow(image1); </p><p> 如果處理目標或背景內部相鄰見得灰度值是高度相關的,但處于目標和背景交界處兩邊的像素在灰度值上有很大的差別,則它的灰度直方圖基本可以看做是分別對應目標和背景的兩個單峰直方圖混合成,如上圖。我們選取波谷作為閾值分割點,就可以將目標和背景分離開了,將目標顯示出
121、來。如下圖: </p><p> 閾值分割在交通系統(tǒng)中的車牌識別中扮演著重要的角色,由于車牌的材料有反光的性能,當抓拍到車牌后,對圖像進行閾值分割可以得到不錯的效果。</p><p> 如下圖,對一幅添加了高斯噪聲的車牌進行閾值分割:</p><p> 通過對灰度直方圖的統(tǒng),可以看到大致的兩個波峰,取其波谷為分割點,灰度值大概在190左右,大于190的為白,小
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- matlab課程設計--圖像處理
- matlab課程設計--圖像處理
- 數(shù)字圖像處理-課程設計報告-matlab
- matlab課程設計圖像處理
- matlab課程設計--應用圖像處理
- mtalab課程設計 matlab圖像處理
- matlab課程設計--gui圖像處理
- matlab課程設計報告-數(shù)字圖像處理研究
- matlab軟件課程設計-- 應用圖像處理
- 圖像處理課程設計--基于matlab的數(shù)字圖像處理
- 基于matlab的圖像處理的課程設計
- 基于matlab的圖像處理的課程設計
- matlab課程設計(基于matlab的圖像處理的基本運算)
- 數(shù)字圖像處理課程設計--基于matlab的數(shù)字圖像處理
- 圖像處理課程設計--應用matlab語言編制圖像處理軟件
- 數(shù)字圖像處理課程設計--基于matlab的數(shù)字圖像處理
- matlab課程設計報告
- matlab課程設計報告
- 課程設計報告---基于matlab的圖像放縮技術
- matlab課程設計報告--基于matlab有噪聲語音信號處理
評論
0/150
提交評論