欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      基于MATLAB的數(shù)字圖像處理

      時(shí)間:2019-05-12 01:56:51下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《基于MATLAB的數(shù)字圖像處理》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《基于MATLAB的數(shù)字圖像處理》。

      第一篇:基于MATLAB的數(shù)字圖像處理

      目 錄 引言.................................................................................................................1 2 設(shè)計(jì)使用軟件....................................................................................................2 2.1MATLAB簡介.........................................................................................2 2.2matlab基本操作.......................................................................................2 3 圖像幾何變換設(shè)計(jì)原理....................................................................................4 3.1圖像幾何變換設(shè)計(jì)說明..........................................................................4 3.2 圖像平移理論基礎(chǔ).................................................................................4 3.3圖像縮放的理論基礎(chǔ)..............................................................................5 3.4雙線性插值法..........................................................................................5 3.5最鄰近差值法..........................................................................................6 4圖像變換總體設(shè)計(jì).............................................................................................7 4.1基于MATLAB的GUI設(shè)計(jì)..................................................................7 4.2插入圖像..................................................................................................8 4.3圖像的平移變換......................................................................................9 4.3.1圖像右下方平移...........................................................................9 4.3.3圖像左上方平移.........................................................................10 4.4圖像的縮放變換....................................................................................12 4.4.1基于雙線性插值法的圖像縮放.................................................12 4.4.2鄰近插值法的圖像縮放.............................................................13 5心得體會...........................................................................................................14 參考文獻(xiàn)..............................................................................................................15 附錄一..................................................................................................................16

      課程設(shè)計(jì)說明書 引言

      數(shù)字圖像處理技術(shù)是20世界60年代發(fā)展起來的一門新興學(xué)科,隨著圖像處理理論和方法的進(jìn)一步完善,使得數(shù)字圖像處理技術(shù)在各個(gè)領(lǐng)域得到了廣泛應(yīng)用,并顯示出廣闊的應(yīng)用前景。MATLAB既是一種直觀、高效的計(jì)算機(jī)語言,同時(shí)又是一個(gè)科學(xué)計(jì)算平臺。它為數(shù)據(jù)分析和數(shù)據(jù)可視化、算法和應(yīng)用程序開發(fā)提供了最核心的數(shù)學(xué)和高級圖形工具。根據(jù)它提供的500多個(gè)數(shù)學(xué)和工程函數(shù),工程技術(shù)人員和科學(xué)工作者可以在它的集成環(huán)境中交互或變成以完成各自的計(jì)算。MATLAB中集成了功能強(qiáng)大的圖像處理工具箱。由于MATLAB語言的語法特征與C語言極為相似,而且更加簡單,更加符合科技人員對數(shù)學(xué)表達(dá)式的書寫格式,而且這種語言可移植性好、可擴(kuò)展性強(qiáng),再加上其中有豐富的圖像處理函數(shù),所以MATLAB在圖像處理的應(yīng)用中具有很大的優(yōu)勢。

      MATLAB是一種以矩陣運(yùn)算為基礎(chǔ)的交互式程序語言,能夠滿足科學(xué)、工程計(jì)算和繪圖的要求,與其它計(jì)算機(jī)語言相比,其特點(diǎn)是簡潔和智能化,適應(yīng)科技專業(yè)人員的思維方式和書寫習(xí)慣,使得編程和調(diào)試效率大大提高。我們學(xué)習(xí)掌握MATLAB,也可以說是在科學(xué)工具上與國際接軌。

      課程設(shè)計(jì)說明書 設(shè)計(jì)使用軟件

      2.1MATLAB簡介

      MATLAB是由美國mathworks公司發(fā)布的主要面對科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。

      MATLAB和Mathematica、Maple并稱為四大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連

      接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。

      MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實(shí)用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用,此外許多的MATLAB愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進(jìn)行下載就可以用。

      2.2matlab基本操作

      Matlab中基本變量都是以矩陣的形式保存的。一幅圖像即是一個(gè)二維的矩陣。變量名區(qū)分大小寫,如a和A表示兩個(gè)不同的變量。圖像I中第i行第j列的像素用I(i,j)表示,其中行號和列號都從1開始計(jì)數(shù)。要了解更多關(guān)于Matlab的基本知識,可看Matlab help下的Matlab目錄。

      本實(shí)驗(yàn)可能用到的matlab函數(shù)有:zeros,imwrite,imread,imshow,F(xiàn)FT2,abs,log,min,max,查詢具體的函數(shù)用法可以在Matlab help中查找,或在Matlab command window中打(空格)函數(shù)名。

      課程設(shè)計(jì)說明書

      在Matlab command window中的命令在打回車后直接執(zhí)行。也可以在m-file editor中編寫程序,存盤為.m文件后,按Debug菜單下的Run,自動逐條執(zhí)行命令。Debug菜單下還提供了設(shè)置斷點(diǎn)逐行執(zhí)行等調(diào)試命令。做本實(shí)驗(yàn)時(shí)可先在command window中熟悉Matlab命令與函數(shù),最后所有命令應(yīng)保存在一個(gè)m文件中,便于檢查和調(diào)試。

      每次畫圖前可用figure命令新開一個(gè)圖像窗口,否則前一次顯示的圖像會被新的圖像覆蓋。也可用figure(n)命令規(guī)定當(dāng)前圖像窗口序號。

      課程設(shè)計(jì)說明書

      圖像幾何變換設(shè)計(jì)原理

      3.1圖像幾何變換設(shè)計(jì)說明

      數(shù)字圖像幾何變換是一種用途廣泛的圖像處理技術(shù),在圖像校正、圖像匹配、圖像變形等方面有廣泛用途。圖像的幾何變換需要兩個(gè)過程:空間變換和灰度插值,需要對離散數(shù)據(jù)組成的象素位置和間距進(jìn)行重新采樣,以構(gòu)成幾何變換后的新圖像,即根據(jù)離散的數(shù)字圖像重建二維連續(xù)函數(shù),再按新的像素位置和間距進(jìn)行采樣。

      要求編程實(shí)現(xiàn)圖像的平移、縮放兩種幾何變換,插值分別采用最近鄰插值和雙線性插值。

      在圖像的幾何變換中,通常包括圖像的平移、圖像的轉(zhuǎn)置、圖像的鏡像變換、圖像的縮放和圖像的旋轉(zhuǎn)等。

      幾種圖像幾何變換中都是1:1的變換,而圖像的縮放操作會改變圖像的大小,產(chǎn)生的圖像中的像素可能在原圖中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行近似處理。一般的方法是直接賦值為和它最相近的像素值,但也可以通過一些插值算法來計(jì)算。下面的代碼直接采用了前一種做法。

      3.2 圖像平移理論基礎(chǔ)

      圖像平移就是將圖像中所有的點(diǎn)都按照指定的平移量水平、垂直移動。設(shè)(x0,y0)為原圖像上的一點(diǎn),圖像水平平移量為tx,垂直平移量為ty,則平移后點(diǎn)(x0,y0)坐標(biāo)將變?yōu)椋▁1,y1)。

      顯然(x0,y0)和(x1,y1)的關(guān)系如下:

      ?x1???y1?x0?txy0?ty

      用矩陣表示如下:

      ?x1??10tx??x0??y1???01ty??y0??????? ??1????001????1??

      對該矩陣求逆,可以得到逆變換:

      課程設(shè)計(jì)說明書

      ?x0??10?tx??x1??y0???01?ty??y1?

      即?x0?????????y0???????10011??????x1?txy1?ty

      這樣,平移后的圖像上的每一點(diǎn)都可以在原圖像中找到對應(yīng)的點(diǎn)。例如,對于新圖中的(0,0)像素,代入上面的方程組,可以求出對應(yīng)原圖中的像素(-tx,-ty)。如果tx或ty大于0,則(-tx,-ty)不在原圖中。對于不在原圖中的點(diǎn),可以直接將它的像素值統(tǒng)一設(shè)置為0或則255(對于灰度圖就是黑色或白色)。同樣,若有點(diǎn)不在原圖中,也就說明原圖中有點(diǎn)被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴(kuò)大|tx |,高度擴(kuò)大| ty |。

      3.3圖像縮放的理論基礎(chǔ)

      假設(shè)圖像x軸方向縮放比率為fx,y軸方向縮放比率為fy,那么原始圖中點(diǎn)(x0,y0)對應(yīng)與新圖中的點(diǎn)(x1,y1)的轉(zhuǎn)換矩陣為:

      ?x1??fx?y1???0?????1????00??x0??y0? fy0????01????1??0

      其逆運(yùn)算如下:

      00??x1??x0??1/fx?y0???0??y1?

      即?x0?1/fy0???????y0????????01??1??1??0x1/fxy1/fy

      例,當(dāng)fx=fy=0.5時(shí),圖像被縮一半大小,此時(shí)縮小后圖像中的(0,0)像素對應(yīng)于原圖中的(0,0)像素;(0,1)像素對應(yīng)于原圖中的(0,2)像素;(1,0)像素對應(yīng)于原圖中的(2,0)像素,以此類推。在原圖基礎(chǔ)上,每行隔一個(gè)像素進(jìn)行取點(diǎn),每隔一行進(jìn)行操作。其實(shí)是將原圖每行中的像素取值重復(fù)一遍,然后每行重復(fù)一次。

      3.4雙線性插值法

      雙線性插值[是利用了需要處理的原始圖像像素點(diǎn)周圍的四個(gè)像素點(diǎn)的相關(guān)陛,通過雙線眭算法計(jì)算得出的。對于一個(gè)目的坐標(biāo),通過向后映射法得到其在原始圖像的對應(yīng)的浮點(diǎn)坐標(biāo)(i+u,j+v),其中i,j均為非負(fù)整數(shù),u,v為[0,l]區(qū)間的浮點(diǎn)數(shù),則這個(gè)像素的值f(i+u,j+v)可由原圖像中坐標(biāo)為(i,j)、(i+l,j)、課程設(shè)計(jì)說明書

      (i,j+1)、(i+1,j+1)所對應(yīng)的周圍四個(gè)像素的值決定,即:

      f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×V× f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源圖像(i,j)處的的像素值,這就是雙線性內(nèi)插值法。

      如圖3.1所示,已知(0,0)、(0,1)、(1,0)、(1,1)四點(diǎn)的的灰度,可以由相鄰像素的灰度值f(0,0)和f(1,0)在X方向線性插值求出(x,0)的灰度f(x,0),由另外兩個(gè)相鄰像素f(0,1)和f(1,1)在X方向上線性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y方向上進(jìn)行線性插值就可以得到(x,y)的灰度f(x,y)。

      在同一行內(nèi)根據(jù)待插值像素點(diǎn)與其前后的原圖像像素點(diǎn)的位置距離進(jìn)行加權(quán)線性插值,即離原圖像像素點(diǎn)越近的待插值像素點(diǎn),原圖像像素的加權(quán)系數(shù)就越大;行間根據(jù)待插值行與其上下的原圖像行間的距離進(jìn)行加權(quán)線性插值,即離原圖像行越近的待插值行,原圖像行的加權(quán)系數(shù)就越大。

      圖3.1 雙線性插值原理

      3.5最鄰近差值法

      最簡單的插值算法是最鄰近插值,也稱為零階插值。它輸出的像素灰度值就等于距離它映射到的位置最近的輸入像素的灰度值,最鄰近插值算法簡單,在許多情況下都能得到令人滿意的結(jié)果,但是當(dāng)圖像中包含像素之間灰度級有變化的細(xì)微結(jié)構(gòu)時(shí),最鄰近算法會在圖像中產(chǎn)生人為加工的痕跡。雙線性插值算法計(jì)算

      課程設(shè)計(jì)說明書

      量比零階插值大,但縮放后圖像質(zhì)量高,不會出現(xiàn)像素值不連續(xù)的的情況,這樣就可以獲得一個(gè)令人滿意的結(jié)果[2,6]。

      最鄰近點(diǎn)插值[6]取插值點(diǎn)的4個(gè)鄰點(diǎn)中距離最近的鄰點(diǎn)灰度值作為該點(diǎn)的灰度值。設(shè)插值點(diǎn)(i,j)到周邊4個(gè)鄰點(diǎn)fk(i,j)(k = 1,2,3,4)的距離為dk(k = 1,2,3,4),則:g(i,j)=fk(i,j),dl = min{d1,d2,d3,d4},l= 1,2,3,4。

      4圖像變換總體設(shè)計(jì)

      4.1基于MATLAB的GUI設(shè)計(jì)

      圖形用戶界面(GUI)是用戶與計(jì)算機(jī)程序之間的交互方式,是用戶與計(jì)算機(jī)進(jìn)行信息交流的方式。計(jì)算機(jī)在屏幕顯示圖形和文本,若有揚(yáng)聲器還可產(chǎn)生 聲音。用戶通過輸入設(shè)備,如:鍵盤、鼠標(biāo)、跟蹤球、繪制板或麥克風(fēng),與計(jì)算機(jī)

      課程設(shè)計(jì)說明書

      通訊。用戶界面設(shè)定了如何觀看和如何感知計(jì)算機(jī)、操作系統(tǒng)或應(yīng)用程序。通常,多是根據(jù)悅目的結(jié)構(gòu)和用戶界面功能的有效性來選擇計(jì)算機(jī)或程序。圖形用戶界面或GUI是包含圖形對象,如:窗口、圖標(biāo)、菜單和文本的用戶界面。以某種方式 選擇或激活這些對象,通常引起動作或發(fā)生變化。最常見的激活方法是用鼠標(biāo)或其它點(diǎn)擊設(shè)備去控制屏幕上的鼠標(biāo)指針的運(yùn)動。

      圖4.1GUI界面設(shè)計(jì)

      通過MATLAB里面GUI功能自己設(shè)計(jì)出的關(guān)于本次課程設(shè)計(jì)的GUI界面,在這個(gè)界面中有預(yù)覽圖像,圖像平移,圖像縮放三個(gè)選項(xiàng)以及四個(gè)數(shù)據(jù)填充空格,來填寫關(guān)于圖像平移的長度與寬度,以及縮放的比例。

      4.2插入圖像

      單擊GUI界面的預(yù)覽圖像按鈕,就可以選擇將自己想要進(jìn)行平移或縮放的圖片插入到這個(gè)程序里面去,并顯示出來。在這次課程設(shè)計(jì)當(dāng)中將“l(fā)ena.bmp”這張圖片插入到所做的程序當(dāng)中,如圖所示。

      圖4.2預(yù)覽的圖片

      課程設(shè)計(jì)說明書

      插入的“l(fā)ena.bmp”圖片在MTALAB中所做的GUI圖形用戶界面中顯示了出來。

      4.3圖像的平移變換

      在所設(shè)計(jì)的GUI界面當(dāng)中,首先設(shè)定所要平移的像素長度以及寬度,并且在設(shè)計(jì)當(dāng)中用正負(fù)符號來表示圖像的方向,設(shè)置完成之后,單擊圖片平移按鈕,就會彈出窗口當(dāng)中顯示出兩張圖片。通過左右兩張的圖片對比可以清楚的看到右邊圖片是經(jīng)過平移處理之后的。

      4.3.1圖像右下方平移

      圖4.3圖像右下方向移動

      如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長度為100,平移寬度為100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向右下方向移動了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的對比結(jié)果。

      4.3.2圖像左下方平移

      課程設(shè)計(jì)說明書

      圖 4.4圖像的左下方向移動

      如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長度為-100,平移寬度為100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向左下方向移動了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對比。

      4.3.3圖像左上方平移

      圖4.5圖像向左上方向移動

      課程設(shè)計(jì)說明書

      如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長度為-100,平移寬度為-100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向左上方向移動了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對比。

      4.3.4圖像右上平移

      圖4.6圖像向右上方向移動

      如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長度為100,平移寬度為-100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向右上方向移動了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對比

      課程設(shè)計(jì)說明書

      4.4圖像的縮放變換

      在所設(shè)計(jì)的GUI界面當(dāng)中,首先設(shè)定所要縮放的像素長度以及寬度比例系數(shù),設(shè)置完成之后,單擊雙線性差值法縮放按鈕,就會彈出窗口,在當(dāng)中顯示出兩張圖片。通過左右兩張的圖片對比可以清楚的看到右邊圖片是經(jīng)過縮放處理之后的,在長度寬度的比例上有所變化

      4.4.1基于雙線性插值法的圖像縮放

      課程設(shè)計(jì)說明書

      圖4.6雙線性差值法的圖像縮放

      如圖所示,在所設(shè)計(jì)的GUI界面中將參數(shù)設(shè)置成長度縮放比例系數(shù)為2,寬度縮放比例系數(shù)為3之后,單擊雙線性插值法按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片相比較左邊的圖片,在長度上是要比寬度上要放大了所設(shè)置的比例系數(shù)的,由于對應(yīng)的系數(shù)為2倍3倍,所以可以清楚明了的看到縮放效果。所以當(dāng)設(shè)置為長寬系數(shù)形同時(shí),縮放效果是不明顯的。

      4.4.2鄰近插值法的圖像縮放

      課程設(shè)計(jì)說明書

      圖4.7鄰近插值法的圖像縮放

      如圖所示,在所設(shè)計(jì)的GUI界面中將參數(shù)設(shè)置成長度縮放比例系數(shù)為2,寬度縮放比例系數(shù)為3之后,單擊鄰近插值法按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片相比較左邊的圖片,在長度上是要比寬度上要放大了所設(shè)置的比例系數(shù)的,由于對應(yīng)的系數(shù)為2倍3倍,所以可以清楚明了的看到縮放效果。

      5心得體會

      通過這次課程設(shè)計(jì),使得我更加的掌握了在數(shù)字圖像處理方面的知識,以及

      課程設(shè)計(jì)說明書

      加強(qiáng)了我對數(shù)字圖像處理這一門學(xué)科的興趣與愛好。此外還掌握了相關(guān)MATLAB的一些基本操作與應(yīng)用,能夠在以后的學(xué)習(xí)生活之中進(jìn)行一些簡單的設(shè)計(jì)。雖然在這次設(shè)計(jì)實(shí)踐過程之中,遇到了重重困難,但是在經(jīng)過一次次的更正,一次次的修改之后,以及經(jīng)過網(wǎng)絡(luò)上多方面材料的查找與老師的悉心指導(dǎo),終于能夠最終的完成這次課程設(shè)計(jì)的題目要求。

      兩周的時(shí)間不算很長,但是在這兩周的時(shí)間里面,我們卻學(xué)習(xí)到了很多之前多不能學(xué)習(xí)到的東西。在這次課程設(shè)計(jì)中不僅培養(yǎng)了獨(dú)立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對于我們的將來也有很大的幫助。

      實(shí)驗(yàn)過程中,此次設(shè)計(jì)也讓我明白了有什么不懂不明白的地方要及時(shí)請教或上網(wǎng)查詢,只要認(rèn)真鉆研,動腦思考,動手實(shí)踐,就沒有弄不懂的知識,收獲頗豐。也對團(tuán)隊(duì)精神的進(jìn)行了考察,讓我們在合作起來更加默契,在成功后一起體會喜悅的心情。

      參考文獻(xiàn)

      [1]章毓晉.《圖像處理和分析教程》,人們郵電出版社,2009。

      課程設(shè)計(jì)說明書

      [2]龔聲蓉.《數(shù)字圖像處理與分析》,清華大學(xué)出版社,2006 [3]余成波.《數(shù)字圖像處理及MATLAB實(shí)現(xiàn)》,重慶大學(xué)出版社,2003 [4]姚敏.《數(shù)字圖像處理》,機(jī)械工業(yè)出版社,2006 [5]李顯宏.《MATLAB7.x界面設(shè)計(jì)與編程技巧》電子工業(yè)出版社,2006 [6]Kenneth R.Castleman著,朱志剛等譯,《數(shù)字圖像處理》,電子工業(yè)出版社,2006

      1.MATLAB圖像平移程序

      附錄

      課程設(shè)計(jì)說明書

      N1 = get(handles.cc,'String');N2 = get(handles.kk,'String');Tx = str2double(N1);Ty = str2double(N2);[m, n] = size(I);H = uint8(zeros(m+abs(Ty), n+abs(Tx)));if(Tx>0&&Ty>0)

      H(1+Ty:m+Ty,1+Tx:n+Tx)= I;else if(Tx<0&&Ty<0)

      H(1:m,1:n)= I;

      else if(Tx<0&&Ty>0)

      H(1+Ty:m+Ty,1:n)= I;

      else

      H(1:m,1+Tx:n+Tx)= I;

      end

      end end figure,subplot(1,2,1);imshow(I);title('原圖像');subplot(1,2,2);imshow(H);title('輸出圖像');2.MATLAB圖像雙線性插值法圖像縮放 I=imread('lena.bmp');[rows,cols]=size(I);N1=get(handles.chang,'String');N2=get(handles.kuan,'String');K1=str2double(N1);K2=str2double(N2);width = K1 * rows;

      課程設(shè)計(jì)說明書

      height = K2 * cols;Out = uint8(zeros(width,height));widthScale = rows/width;heightScale = cols/height;for x = 2:width2

      oldX = x * widthScale;

      oldY = y * heightScale;

      if(oldX/double(uint16(oldX))== 1.0)&(oldY/double(uint16(oldY))== 1.0)

      Out(x,y)= I(int16(oldX),int16(oldY));

      else

      a = double(uint16(oldX));

      b = double(uint16(oldY));

      x11 = double(I(a,b));

      x12 = double(I(a,b+1));

      x21 = double(I(a+1,b));

      x22 = double(I(a+1,b+1));

      Out(x,y)= uint8((b+1-oldY)*((oldX-a)*x21 +(a+1-oldX)*x11)+(oldY-b)*((oldX-a)*x22 +(a+1-oldX)* x12));

      end

      end end figure,subplot(1,2,1);imshow(I);title('原圖像')subplot(1,2,2);imshow(Out);title('輸出圖像');2.MATLAB圖像最鄰近差值法圖像縮放 I=imread('lena.bmp');[rows,cols]=size(I);

      課程設(shè)計(jì)說明書

      N1 = get(handles.chang,'String');N2 = get(handles.kuan,'String');K1 = str2double(N1);K2 = str2double(N2);width = K1 * rows;

      height = K2 * cols;im2 = uint8(zeros(width,height));widthScale = rows/width;heightScale = cols/height;for x = 2:width2

      oldX = x * widthScale;

      oldY = y * heightScale;

      if(oldX/double(uint16(oldX))== 1.0)&(oldY/double(uint16(oldY))== 1.0)

      im2(x,y)= I(int16(oldX),int16(oldY));

      else

      a = double(round(oldX));

      b = double(round(oldY));

      im2(x,y)= I(a,b);

      end

      end end figure,subplot(1,2,1);imshow(I);title('原圖像')subplot(1,2,2);imshow(im2);title('輸出圖像')

      第二篇:matlab數(shù)字圖像處理 膨脹和腐蝕

      基于Matlab的腐蝕和膨脹的邊緣檢測

      一、實(shí)驗(yàn)?zāi)康? 掌握運(yùn)用Matlab軟件對灰度與二值圖像的膨脹與腐蝕的處理方法。

      二、實(shí)驗(yàn)環(huán)境(軟件條件):

      Windws2000/XP

      MATLAB 7.x

      三、實(shí)驗(yàn)內(nèi)容:

      1、圖像膨脹的Matlab實(shí)現(xiàn) ① 實(shí)驗(yàn)原理:

      膨脹:給圖像中的對象邊界添加像素。

      在操作中,輸出圖像中所有給定像素的狀態(tài)都是通過對輸入圖像的相應(yīng)像素及鄰域使用一定的規(guī)則進(jìn)行確定。在膨脹操作時(shí),輸出像素值是輸入圖像相應(yīng)像素鄰域內(nèi)所有像素的最大值。在二進(jìn)制圖像中,如果任何像素值為1,那么對應(yīng)的輸出像素值為1。

      可以使用imdilate函數(shù)進(jìn)行圖像膨脹,imdilate函數(shù)需要兩個(gè)基本輸入?yún)?shù),即待處理的輸入圖像和結(jié)構(gòu)元素對象。結(jié)構(gòu)元素對象可以是strel函數(shù)返回的對象,也可以是一個(gè)自己定義的表示結(jié)構(gòu)元素鄰域的二進(jìn)制矩陣。此外,imdilate還可以接受兩個(gè)可選參數(shù):PADOPT(padopt)——影響輸出圖片的大小、PACKOPT(packopt).——說明輸入圖像是否為打包的二值圖像(二進(jìn)制圖像)。② 實(shí)驗(yàn)步驟:

      A、首先創(chuàng)建一個(gè)包含矩形對象的二值圖像矩陣。R=zeros(9,10);R(4:6,4:7)=1 R = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B、使用一個(gè)3×3的正方形結(jié)構(gòu)元素對象對創(chuàng)建的圖像進(jìn)行膨脹。

      C=strel('square',3)C = Flat STREL object containing 9 neighbors.Neighborhood: 1 1 1 1 1 1 1 1 1 C、將圖像R和結(jié)構(gòu)元素C傳遞給imdilate函數(shù)。R1=imdilate(R,C)R1 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D、顯示結(jié)果: imshow(R,'notruesize')imshow(R1,'notruesize')③ 實(shí)驗(yàn)結(jié)果: 膨脹前后效果圖:

      2、圖像腐蝕的Matlab實(shí)現(xiàn) ① 實(shí)驗(yàn)原理:

      腐蝕:刪除對象邊界某些像素。

      在操作中,輸出圖像中所有給定像素的狀態(tài)都是通過對輸入圖像的相應(yīng)像素及鄰域使用一定的規(guī)則進(jìn)行確定。在腐蝕操作中,輸出像素值是輸入圖像相應(yīng)像素鄰域內(nèi)所有像素的最小值。在二進(jìn)制圖像中,如果任何一個(gè)像素值為0,那么對應(yīng)的輸出像素值為0。

      可以使用imerode函數(shù)進(jìn)行圖像腐蝕。imerode函數(shù)需要兩個(gè)基本輸入?yún)?shù):待處理的輸入圖像以及結(jié)構(gòu)元素對象。此外,imerode函數(shù)還可以接受3個(gè)可選參數(shù):PADOPT(padopt)——影響輸出圖片的大小、PACKOPT(packopt).——說明輸入圖像是否為打包的二值圖像(二進(jìn)制圖像)。M——指定原始圖像的行數(shù)。② 實(shí)驗(yàn)內(nèi)容及步驟:

      A、讀取圖像cameraman.tif(該圖像是Matlab當(dāng)前目錄下自帶的圖片)R=imread('cameraman.tif');B、創(chuàng)建一個(gè)任意形狀的結(jié)構(gòu)元素對象 C=strel('arbitrary',eye(5));C、以圖像R和結(jié)構(gòu)元素C為參數(shù)調(diào)用imerode函數(shù)進(jìn)行腐蝕操作。R1=imerode(R,C);D、顯示操作結(jié)果 imshow(R); figure,imshow(C); ③ 實(shí)驗(yàn)結(jié)果:

      圖像cameraman.tif 腐蝕前后的效果對比:

      3、膨脹和腐蝕聯(lián)合操作 ① 實(shí)驗(yàn)內(nèi)容及步驟: A、創(chuàng)建結(jié)構(gòu)元素: clear;close all C= strel('rectangle',[40 30]);

      %結(jié)構(gòu)元素必須具有適當(dāng)?shù)拇笮?既可以刪電流線又可以刪除矩形.B、使用結(jié)構(gòu)元素腐蝕圖像:

      %將會刪除所有直線,但也會縮減矩形 R=imread('circbw.tif');R1=imerode(R,C);imshow(R1);figure,imshow(R);C、恢復(fù)矩形為原有大小,使用相同的結(jié)構(gòu)元素對腐蝕過的圖像進(jìn)行膨脹.R2=imdilate(R1,C);figure,imshow(R2);② 實(shí)驗(yàn)結(jié)果: 最終效果如下圖: 原始圖像 腐蝕后的圖像 膨脹后的圖像

      4、邊緣檢測 ① 實(shí)驗(yàn)原理:

      對于一副灰度二進(jìn)制圖像,如果圖像像素值為1,則該像素的狀態(tài)為ON,如果其像素值為0,則該像素的狀態(tài)為OFF。在一副圖像中,如果圖像某個(gè)像素滿足以下兩個(gè)條件:

      1.該像素狀態(tài)為ON; 2.該像素鄰域中有一個(gè)或多個(gè)像素狀態(tài)為OFF。則認(rèn)為該像素為邊緣像素。

      Matlab中提供了專門的函數(shù)bwperim,可以用于判斷一副二進(jìn)制圖像中的哪些像素為邊緣像素。② 實(shí)驗(yàn)內(nèi)容及步驟:

      以下程序代碼示例就是利用bwperim函數(shù),對圖像circbw.tif進(jìn)行邊緣檢測,其邊緣像素檢測效果如尾圖。clear;close all R=imread('circbw.tif');R1=bwperim(R);

      imshow(R); figure,imshow(R1); ② 實(shí)驗(yàn)結(jié)果:

      心得體會:

      本次實(shí)驗(yàn)利用形態(tài)學(xué)運(yùn)算—腐蝕和膨脹對圖像進(jìn)行了處理。數(shù)學(xué)形態(tài)學(xué)的基本思想是:用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中的對應(yīng)形狀,以達(dá)到圖像分析和識別的目的。它的優(yōu)點(diǎn)有:有效濾除噪聲、保留圖像中原有信息、算法易于用并行處理方法有效實(shí)現(xiàn)等等。

      總的來說,在此次實(shí)驗(yàn)中遇到了較多問題,經(jīng)過對相關(guān)知識的復(fù)習(xí)以及對相關(guān)資料的查詢,才逐個(gè)地解決了。在今后的實(shí)驗(yàn)課中要有充分的準(zhǔn)備與預(yù)習(xí),不懂的問題要提前查資料,這樣在實(shí)驗(yàn)中才會胸有成竹,才不會手忙腳亂。

      第三篇:基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)

      基于MATLAB 數(shù)字圖像處理平臺設(shè)計(jì)

      摘要

      數(shù)字圖像處理技術(shù)在各個(gè)行業(yè)得到廣泛的應(yīng)用,其交互式的圖形界面是操作者方便使用這些技術(shù)的途徑。本文主要介紹了基于MATLAB的圖形用戶界面(GUI)來設(shè)計(jì)一個(gè)簡單實(shí)用的圖像處理軟件平臺,其中具備圖像處理的常用功能,以滿足用戶的使用。文章詳細(xì)闡述了一下圖像處理軟件平臺的設(shè)計(jì)過程。本文的GUI設(shè)計(jì)所制作的圖像處理軟件平臺可以實(shí)現(xiàn)的功能有五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。其中也講述了GUI的基本常用操作及文件的打開、保存及退出。文章基本介紹了以上的內(nèi)容,關(guān)于軟件還有許多未能實(shí)現(xiàn)的功能有待于日后的逐步開發(fā)和學(xué)習(xí)。關(guān)鍵詞:GUI;圖像變換;圖像增強(qiáng);圖像分割;圖像變形;圖像處理

      ABSTRACT Digital image processing technology has been widely used in various industries, their interactive graphical interface is the way of the operator ease of use of these technologies.This article mainly introduced the graphical user interface(GUI)based on MATLAB to design a simple and practical platform for the image processing software, Which have commonly used image processing function, in order to meet the user's use.The article expounds the design process of the image processing software platform.This paper made the GUI design of image processing software platform can realize the function of five modules: image transformation, image enhancement, image segmentation, image distortion and other commonly used processing.The basic common operations of which also tells the story of GUI and file open, save, and exit.The content of the article introduces the above basic, about software and many fail to realize the function of the subject to the gradual development and learning in the future.Key words: GUI;Image transformation;Image enhancement;Image segmentation;Image deformation;The image processing

      目錄 緒論................................................................................................................................................................1 1.1設(shè)計(jì)要求及目的....................................................................................................................................1 1.2 課題分析...............................................................................................................................................1 1.3 總體設(shè)計(jì)...............................................................................................................................................2 2 具體設(shè)計(jì).......................................................................................................................................................2 2.1 菜單設(shè)計(jì)...............................................................................................................................................2 2.2 圖像的打開、保存及退出...................................................................................................................3 2.2.1 圖像打開....................................................................................................................................3 2.2.2 圖像保存....................................................................................................................................4 2.2.3程序退出.....................................................................................................................................4 2.3 圖像變換...............................................................................................................................................4 2.3.1 傅里葉變換................................................................................................................................4 2.3.3 離散余弦變換............................................................................................................................5 2.4 圖像增強(qiáng)...............................................................................................................................................5 2.4.1 空間域增強(qiáng)................................................................................................................................5 2.4.2 頻率域增強(qiáng)................................................................................................................................6 2.5 圖像分割...............................................................................................................................................7 2.5.1 閾值分割....................................................................................................................................8 2.5.2 梯度分割....................................................................................................................................8 2.6 圖像變形...............................................................................................................................................9 2.6.1 翻轉(zhuǎn)............................................................................................................................................9 2.6.2 旋轉(zhuǎn)..........................................................................................................................................10 2.7 其它常用處理.....................................................................................................................................10 2.7.1 亮度..........................................................................................................................................10 2.7.2 對比度.......................................................................................................................................11 2.7.3 截圖...........................................................................................................................................11 2.7.4 底片效果..................................................................................................................................12 2.7.5 二值處理..................................................................................................................................12 3 結(jié)果分析.....................................................................................................................................................13 4 心得體會.....................................................................................................................................................13 附錄...................................................................................................................................................................14 基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)

      MATLAB是近幾年來國內(nèi)外使用最為廣泛的優(yōu)秀科技軟件之一。其語法結(jié)構(gòu)簡單,具有極強(qiáng)的數(shù)值計(jì)算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能。具有高質(zhì)量的圖形可視化效果和強(qiáng)大的界面設(shè)計(jì)能力。因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu)勢。圖形用戶界面(GUI)是提供人機(jī)交互的工具和方法。利用GUI制作圖像處理軟件能夠?qū)崿F(xiàn)圖像處理的各個(gè)內(nèi)容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操作;線性濾波和濾波器設(shè)計(jì);變換域處理;圖像分析和增強(qiáng);圖像恢復(fù);圖像壓縮;形態(tài)學(xué)運(yùn)算等。緒論

      1.1設(shè)計(jì)要求及目的

      設(shè)計(jì)要求:以MATLAB作為工具,開發(fā)一個(gè)圖像處理軟件。主要進(jìn)行圖像處理的常用算法。由以下模塊組成:圖像變換;圖像增強(qiáng);圖像分割。按各個(gè)模塊進(jìn)行功能擴(kuò)充,也可加入其它常用的圖像處理功能。

      設(shè)計(jì)目的:MATLAB 軟件為數(shù)字圖像處理提供了功能豐富的工具,應(yīng)用MATLAB友好的界面和實(shí)用高效的指令及模塊,可以使人較快地認(rèn)識、理解圖像處理的相關(guān)概念,逐步掌握圖像處理的基本方法。此課題的設(shè)計(jì)目的是綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì),學(xué)會和掌握GUI的圖像處理平臺設(shè)計(jì)。

      1.2 課題分析

      此課題利用MATLAB的GUI程序設(shè)計(jì)一個(gè)簡單實(shí)用的圖像處理程序。該程序具備

      數(shù)字圖像處理平臺設(shè)計(jì)功能圖 像 變 換圖 像 增 強(qiáng)圖 像 分 割圖 像 變 形其它常用處理空間域增強(qiáng)頻率域增強(qiáng)閾 值分 割梯 度分 割旋 轉(zhuǎn)翻 轉(zhuǎn)傅里葉變換離散余弦變換灰度變換直方圖均衡化低通濾波器高通濾波器roberts算子canny算子sobel算子上下翻轉(zhuǎn)左右翻轉(zhuǎn)亮度對比度底截圖片效果二值圖1.1 整體功能框圖 圖像處理的常用功能,以滿足用戶的使用。程序?qū)崿F(xiàn)的圖像處理功能分為五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。如圖1.1所示。

      除以上的數(shù)字圖像處理的功能外,該程序還要實(shí)現(xiàn)圖像的讀取顯示、圖像的保存及退出等基本功能。從而實(shí)現(xiàn)完整的數(shù)字圖像平臺設(shè)計(jì),具有更好的交互性。

      1.3 總體設(shè)計(jì)

      軟件的總體設(shè)計(jì)界面主要分為兩個(gè)部分:顯示區(qū)域與操作區(qū)域。具體界面布局如圖1.2所示。

      圖1.2 界面布局

      顯示區(qū)域:定義兩個(gè)圖形區(qū)域,左面為待處理圖片來顯示載入的原圖像,右面為通過處理后的圖像。

      操作區(qū)域:通過菜單欄的編輯實(shí)現(xiàn)對圖像的各種處理,分為文件和編輯兩大部分。通過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個(gè)圖像處理功能后,將在已處理圖片下就會顯示出處理后的圖片。具體設(shè)計(jì)

      2.1 菜單設(shè)計(jì)

      通過Menu Editor創(chuàng)建菜單欄如圖2.1所示。菜單的設(shè)計(jì)主要分為兩大部分:文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能的五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形及其它常用處理,還有各個(gè)模塊的分支。通過此菜單來控制顯示或隱藏功能鍵。

      以圖2.1的傅里葉變換為例,當(dāng)添加上某一菜單后,修改名稱為傅里葉變換,句柄為FFT,從而會在M文件中自動生成傅里葉變換的功能函數(shù)function FFT_Callback(hObject, eventdata, handles),在此函數(shù)下編寫能夠?qū)崿F(xiàn)傅里葉變換的程序便能實(shí)現(xiàn)對圖像的傅里葉 變換。

      圖2.1 菜單欄

      2.2 圖像的打開、保存及退出

      2.2.1 圖像打開

      圖像的打開主要是通過以下程序來實(shí)現(xiàn)的:

      “[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像');” 選擇相應(yīng)路徑打開圖像;

      “file=[pathname,filename];x=imread(file);”讀取選中的圖像; “imshow(x);”在顯示區(qū)域上顯示圖像。

      具體操作如圖2.2所示,選擇“文件”菜單中的“打開”后,出現(xiàn)“載入圖像”,選中想要處圖2.2 圖像的打開

      理的圖片后點(diǎn)擊“打開”,即可在顯示區(qū)域中顯示出處理前的圖片。

      2.2.2 圖像保存

      圖像的保存主要是通過以下程序來實(shí)現(xiàn)的:

      “[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');” 選擇圖像文件保存的路徑與格式;

      “sfilefullname=[sfilepath ,sfilename];imwrite(handles.img,sfilefullname);”實(shí)現(xiàn)對圖像的保存。

      具體操作如圖2.3所示,選擇“文件”菜單中的“保存”后,出現(xiàn)“保存圖像文件”,修改文件名后點(diǎn)擊“保存”,即可將處理后的圖像保存到keshe的文件夾下。

      圖2.3 圖像的保存

      2.2.3程序退出

      程序的退出是通過“clc;”,“close all;”,“close(gcf);”,“clear;”這些指令來清除指令窗,窗口,內(nèi)存變量及函數(shù)。

      具體操為選擇“文件”菜單中的“退出”后,便關(guān)閉了執(zhí)行界面的窗口并清除了指令窗的所有指令。

      2.3 圖像變換

      2.3.1 傅里葉變換

      傅里葉變換(FFT)實(shí)際上是將信號f(t)與一組不同頻率的復(fù)正弦作內(nèi)積,這一組復(fù)正弦是變換的基向量,傅里葉系數(shù)或傅里葉變換是f(t)在這一組基向量上的投影。在圖像處理技術(shù)的發(fā)展過程中,F(xiàn)FT起著十分重要的作用。它是線性系統(tǒng)分析的一個(gè)有力工具,它能夠定量地分析諸如數(shù)字圖像之類的數(shù)字化系統(tǒng)。FFT主要分為連續(xù)傅里葉變換和離散傅里葉變換,在數(shù)字圖像處理中經(jīng)常用到的是二維離散傅里葉變換。

      程序中主要是通過二維離散傅里葉變換函數(shù)fft2(),變換后四個(gè)角部分對應(yīng)于低頻成分,中央部分對應(yīng)于高頻成分。若想使低頻成分出現(xiàn)在中央位置,則通過函數(shù)fftshift()將圖像頻譜中心從矩陣的原點(diǎn)移到矩陣中心。從而實(shí)現(xiàn)圖像的二維傅里葉變換。具體程序見 附錄。原圖像及傅里葉變換后的圖像如圖2.4所示。

      圖2.4 傅里葉變換

      2.3.3 離散余弦變換

      離散余弦變換(DFT)在圖像處理中占有重要的位置,它實(shí)際上是傅里葉變換的實(shí)數(shù)部分,但是它比傅里葉變換有更強(qiáng)的信息集中能力。對于大多數(shù)自然圖像,DCT能將大多數(shù)的信息放到較少的系數(shù)上去,因此就更能提高編碼的效率。

      程序中主要是通過灰度變換函數(shù)rgb2gray()及二維離散余弦變換函數(shù)dct2()來實(shí)現(xiàn)對圖像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區(qū)域,而向著右下角方向,頻率越來越高。原圖像及離散余弦變換后的圖像如圖2.5所示。

      圖2.5 離散余弦變換

      2.4 圖像增強(qiáng)

      圖像增強(qiáng)是圖像處理中的一類基本技術(shù),其主要的目的改善圖像的視覺效果,提高圖像的清晰度。圖像增強(qiáng)能夠擴(kuò)展對比度,增強(qiáng)圖像中對象的邊緣,消除或抑制噪聲或保留圖像中感興趣的某些特性而抑制另一些特性等。圖像增強(qiáng)方法按其處理所進(jìn)行的空間不同,可分為空間域法和頻率域法。2.4.1 空間域增強(qiáng)

      空間域法是在空間域內(nèi)直接對像素灰度值進(jìn)行運(yùn)算處理,常用的空間域法有圖像的直接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強(qiáng)方法。(1)灰度變換

      通過灰度變換可使圖像動態(tài)范圍加大,圖像對比度擴(kuò)展,圖像清晰,特征明顯,大大改善人眼的視覺效果。

      程序中主要通過灰度處理函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,將彩色圖像轉(zhuǎn)換成灰度圖像。原圖像及灰度圖像如圖2.6所示。

      圖2.6 灰度變換

      (2)直方圖均衡化

      直方圖均衡化是對原始圖像中的像素灰度作某種映射變換,使變換后的圖像灰度的概率密度是均勻分布的,即變換后圖像是一幅灰度級均勻分布圖像,這意味著圖像灰度的動態(tài)范圍得到了增加,從而可提高圖像的對比度。

      程序中主要通過灰度處理函數(shù)rgb2gray()先對圖像進(jìn)行灰度變換,然后通過直方圖均衡化處理函數(shù)histeq()對灰度圖像進(jìn)行直方圖均衡化處理。原圖像及直方圖均衡化后的圖像如圖2.7所示。

      圖2.7 直方圖均衡化

      2.4.2 頻率域增強(qiáng)

      頻率域法就是在圖像的某種變換域內(nèi),對圖像的變換值進(jìn)行運(yùn)算,然后通過逆變換獲得圖像增強(qiáng)效果。這是一種間接處理方法,一般采用二維數(shù)字濾波方法來進(jìn)行頻率域的圖像增強(qiáng)。(1)低通濾波

      圖像的邊緣以及噪聲干擾在圖像的頻域上對應(yīng)于圖像傅里葉變換中的高頻部分,而圖像的背景區(qū)則對應(yīng)于低頻部分,因此可以用頻域低通濾波法去除圖像的高頻成分,以去掉噪聲,使圖像平滑。

      程序中采用二階巴特沃斯低通濾波器,先用函數(shù)fft2()對圖像進(jìn)行二維離散傅里葉變換,然后通過低通濾波器進(jìn)行濾波后,再對濾波后的圖像數(shù)據(jù)通過ifft2()進(jìn)行傅里葉反變換,從而得到低通濾波后的圖像。如圖2.8所示。

      圖2.8 低通濾波器

      (2)高通濾波

      圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應(yīng),因此采用高通濾波器讓高頻分量順利通過,可以使圖像的邊緣或線條變得更清楚,可實(shí)現(xiàn)圖像的銳化。

      程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進(jìn)行傅里葉變換,然后通過高通濾波器,再進(jìn)行傅里葉反變換,從而得到高通濾波后的圖像,具體程序見附錄。原圖像及濾波后的圖像如圖2.9所示。

      圖2.9 高通濾波器

      2.5 圖像分割

      圖像分割是一種重要的圖像分析技術(shù)。為了識別和分析圖像中的目標(biāo),需要將它們從圖像中分離提取出來,在此基礎(chǔ)上才有可能進(jìn)一步對目標(biāo)進(jìn)行測量和對圖像進(jìn)行利用。圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標(biāo)的技術(shù)和過程。2.5.1 閾值分割

      灰度閾值法是把圖像的灰度分成不同的等級,然后用設(shè)置灰度閾值的方法確定有意義的區(qū)域或欲分割物的邊界,該方法中最簡單的就是二值化的閾值分割。

      程序中先通過函數(shù)graythresh()即用Otsu方法計(jì)算出全局圖像閾值,再通過函數(shù)im2bw(,)基于一定閾值將圖像轉(zhuǎn)換成二值圖像。原圖像及閾值分割后的圖像如圖2.10所示。

      圖2.10 閾值分割

      2.5.2 梯度分割

      梯度分割即對圖像進(jìn)行邊緣檢測,圖像邊緣對圖像識別和計(jì)算機(jī)分析十分有用。邊緣能勾劃出目標(biāo)物體,使觀察者一目了然。邊緣蘊(yùn)含了豐富的內(nèi)在信息,是圖像識別中抽取圖像特征的重要屬性。

      (1)Roberts算子

      程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge(,'roberts')即用Roberts算子識別灰度圖像的輪廓,從而實(shí)現(xiàn)對圖像的邊緣檢測。如圖2.11所示。

      圖2.11 Roberts算子

      (2)Canny算子

      程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge(,'canny')即用Canny算子識別灰度圖像的輪廓,如圖2.12所示。(3)Sobel算子

      程序中先通過函數(shù)rgb2gray()進(jìn)行灰度變換,再通過函數(shù)edge(,'sobel')即用Sobel算 子識別灰度圖像的輪廓,從而實(shí)現(xiàn)對圖像的邊緣檢測。如圖2.13所示。

      圖2.12 Canny算子

      圖2.13 Sobel算子

      2.6 圖像變形

      2.6.1 翻轉(zhuǎn)

      上下翻轉(zhuǎn):程序中通過函數(shù)flipud()對圖像數(shù)據(jù)矩陣進(jìn)行上下翻轉(zhuǎn),由于彩色圖像不能直接進(jìn)行矩陣翻轉(zhuǎn),因此需要先將彩色圖像通過灰度變換處理后再進(jìn)行翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.14所示。

      圖2.14 上下翻轉(zhuǎn) 左右翻轉(zhuǎn):與上下翻轉(zhuǎn)相同,先將圖像進(jìn)行灰度變換后,通過函數(shù)fliplr()將圖像數(shù)據(jù)矩陣進(jìn)行左右翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.15所示。

      圖2.15 左右翻轉(zhuǎn)

      2.6.2 旋轉(zhuǎn)

      打開圖片后,選擇“編輯”菜單“圖像變形”中的“旋轉(zhuǎn)”后,執(zhí)行界面會出現(xiàn)調(diào)整角度的輸入對話框,在對話框中輸入任意角度,則原圖像將會旋轉(zhuǎn)任意角度,輸入正數(shù)逆時(shí)針旋

      。轉(zhuǎn),輸入負(fù)數(shù)順時(shí)針旋轉(zhuǎn)。以90為例,在對話框中輸入90,則圖像逆時(shí)針旋轉(zhuǎn)90,如圖2.16所示。

      在程序中由prompt={'調(diào)整角度'};來顯示輸入對話框,函數(shù)inputdlg()創(chuàng)建對話框和輸入框,輸入角度后通過函數(shù)imrotate()進(jìn)行相應(yīng)的旋轉(zhuǎn)。

      圖2.16 圖像旋轉(zhuǎn)

      2.7 其它常用處理

      2.7.1 亮度

      當(dāng)在“編輯”菜單中選擇“亮度”后,會出現(xiàn)調(diào)整倍數(shù)的輸入對話框,默認(rèn)值為1,在對話框中輸入數(shù)值后圖像便會相應(yīng)變換亮度。輸入數(shù)值小于1時(shí),圖像變亮,輸入數(shù)值大于1時(shí),圖像變暗。程序中通過函數(shù)imadjust()來實(shí)現(xiàn),即將原圖像的亮度值以輸入數(shù)值描述的曲線關(guān)系映射到新的數(shù)值中,從而實(shí)現(xiàn)亮度的變化。以輸入值0.5為例,變換后的圖像如圖2.17所示。

      圖2.17 亮度調(diào)整

      2.7.2 對比度

      對比度增強(qiáng):選擇菜單中“對比度增強(qiáng)”后,彈出輸入?yún)?shù)的對話框,以輸入?yún)?shù)2為例,對比度增強(qiáng)后的圖像如圖2.18所示。程序中通過乘法函數(shù)immultiply()將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)圖像的對比度。

      圖2.18 對比度增強(qiáng)

      對比度減弱:選擇菜單中“對比度減弱”后,彈出輸入?yún)?shù)的對話框,同樣以輸入?yún)?shù)2為例,對比度減弱后的圖像如圖2.19所示。程序中通過除法函數(shù)imdivide()將原圖像數(shù)據(jù)與輸入數(shù)值相除,從而減弱圖像的對比度。

      圖2.19 對比度減弱

      2.7.3 截圖 當(dāng)選擇完菜單中的“截圖”后,鼠標(biāo)箭頭會變成一個(gè)十字,能夠選擇想要截取的圖像部分,選中后就會直接顯示出截取后的圖像,如圖2.20所示。程序中通過函數(shù)imcrop()來實(shí)

      圖2.20 截圖

      現(xiàn)的,即返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方式使用鼠標(biāo)選定要剪切的區(qū)域。2.7.4 底片效果

      程序中通過函數(shù)imcomplement()對圖像數(shù)據(jù)矩陣進(jìn)行取反運(yùn)算,即可實(shí)現(xiàn)底片效果,原圖像及底片效果的圖像如圖2.21所示。

      圖2.21 底片效果

      2.7.5 二值處理

      二值化即將彩色圖像轉(zhuǎn)換成只有0和1兩個(gè)數(shù)值的圖像,程序中通過二值轉(zhuǎn)換函數(shù)im2bw()將彩色圖像轉(zhuǎn)換為二值圖像。原圖像及轉(zhuǎn)換后的二值圖像如圖2.22所示。

      圖2.22 二值處理 3 結(jié)果分析

      經(jīng)過我們小組的不斷調(diào)試,軟件已經(jīng)得到了完善,達(dá)到了課設(shè)的基本要求,基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)能實(shí)現(xiàn)的全部功能如下:(1)設(shè)計(jì)圖形用戶界面,實(shí)現(xiàn)了圖像的打開、保存及退出

      (2)實(shí)現(xiàn)了對圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對灰度圖像處理。(3)實(shí)現(xiàn)了圖像空間域增強(qiáng)包括灰度變換和直方圖均衡化,還有圖像頻率域增強(qiáng)包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均只支持對灰度圖像處理。

      (4)實(shí)現(xiàn)了圖像分割:閾值分割和梯度分割,梯度分割有Roberts算子、Canny算子、Sobel算子。其中梯度分割需要對圖像先進(jìn)行灰度變換。(5)實(shí)現(xiàn)了圖像的翻轉(zhuǎn)和旋轉(zhuǎn)。圖像的翻轉(zhuǎn)只支持灰度圖像。

      (6)實(shí)現(xiàn)了圖像的亮度,對比度的調(diào)整,能夠?qū)D像截圖、做出底片效果及二值化處理。

      實(shí)驗(yàn)程序雖然基本實(shí)現(xiàn)了以上這些功能,但遺憾的是有些功能只支持對灰度的圖像處理,還不能直接對彩色圖像進(jìn)行處理。心得體會

      通過兩周的MATLAB課程設(shè)計(jì)實(shí)踐,使我對MATLAB的使用有了進(jìn)一步的了解和熟悉。還記得當(dāng)初我們小組抽到這個(gè)題目的時(shí)候,每個(gè)人看到這個(gè)題目都無所適從。雖然曾經(jīng)學(xué)過關(guān)于數(shù)字圖像處理的課程,但對于MATLAB的數(shù)字圖像處理的實(shí)際運(yùn)用并不是很熟悉,特別是對此次GUI設(shè)計(jì)更是沒有絲毫接觸過的。

      雖然對課題感到很懵懂,但在指導(dǎo)老師的提示與指導(dǎo)后,我們開始找到了解決問題的路徑。我們到圖書館借了幾本相關(guān)的書,又從網(wǎng)上收集了大量的資料,為這次課設(shè)做了較為充分的準(zhǔn)備,在參考了相關(guān)材料及程序后,我對自己要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對MATLAB的使用有了更深的體會。

      當(dāng)然,在課設(shè)的進(jìn)行過程中,我們還是遇到了不少問題。例如,起初由于我對句柄使用以及一些函數(shù)使用的不恰當(dāng),使得在對圖像文件的保存上就遇到了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設(shè)的進(jìn)行,對matlab的的熟悉度逐步加深。在基本功能已經(jīng)完成的基礎(chǔ)上,我們開始進(jìn)行一些擴(kuò)張功能的嘗試,比如圖像的旋轉(zhuǎn)、翻轉(zhuǎn),圖像亮度、對比度的調(diào)整,截圖等功能,也實(shí)現(xiàn)了較為理想的結(jié)果。

      雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課程設(shè)計(jì),不但鞭策著我去鞏固MATLAB的理論知識,還提高了我對MATLAB的實(shí)際操作運(yùn)用,使得理論與實(shí)踐相結(jié)合,為進(jìn)一步學(xué)MATLAB打下了堅(jiān)實(shí)的基礎(chǔ)。附錄

      function varargout = keshe(varargin)gui_Singleton = 1;gui_State = struct('gui_Name',mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @keshe_OpeningFcn,...'gui_OutputFcn', @keshe_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback',[]);if nargin && ischar(varargin{1})

      gui_State.gui_Callback = str2func(varargin{1});end if nargout

      [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else

      gui_mainfcn(gui_State, varargin{:});end %----------function keshe_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);%--------function varargout = keshe_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;%--------function open_Callback(hObject, eventdata, handles)% hObject

      handle to open(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)[sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');

      %返回要保存的圖像文件

      if ~isequal([sfilename,sfilepath],[0,0])

      %如果不是取消保存

      sfilefullname=[sfilepath ,sfilename];

      %將文件名和目錄名組合成一個(gè)完整的路徑

      imwrite(handles.img,sfilefullname);

      %保存圖像

      else

      msgbox('取消保存?','保存圖像文件');%彈出一個(gè)名為保存圖像文件的對話框,內(nèi)

      容為“取消保存?”

      end %--------function exit_Callback(hObject, eventdata, handles)% hObject

      handle to exit(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);i1=handles.img;

      %獲取圖像

      i2=im2double(i1);

      %圖像矩陣轉(zhuǎn)換成雙精度浮點(diǎn)類型 f1=fft2(i2);

      %對圖像進(jìn)行二維離散傅里葉變換

      fc1=fftshift(f1);

      %將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心 i=log(1+abs(fc1));

      %對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù) imshow(i);

      xlabel('傅里葉變換圖像');handles.img=i;guidata(hObject,handles);

      %把handles句柄更新

      %--------function DCT_Callback(hObject, eventdata, handles)% hObject

      handle to DCT(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)global T

      %定義全局變量

      axes(handles.axes2);

      %定義圖形區(qū)域axes2 T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù)

      x=rgb2gray(handles.img);%利用 rgb2gray函數(shù)對源圖像進(jìn)行灰度處理

      imshow(x);

      %顯示圖像

      xlabel('灰度圖像');

      % x軸名為“灰度圖像” handles.img=x;

      %把圖像發(fā)給handles.img guidata(hObject,handles);

      %把handles句柄更新

      %--------function zhifangtu_Callback(hObject, eventdata, handles)% hObject

      handle to zhifangtu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);y1=handles.img;

      %獲取圖像 x=rgb2gray(handles.img);

      %灰度變換

      f=double(x);

      %數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值 g=fft2(f);

      %二維離散傅里葉變換

      g=fftshift(g);

      %將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心 [M,N]=size(g);

      %返回矩陣g的大小,即M為行數(shù),N為列數(shù) nn=2;

      %二階巴特沃斯低通濾波器 d0=50;

      %截止頻率50Hz m=fix(M/2);n=fix(N/2);

      %取矩陣g的行數(shù)和列數(shù)一半的整數(shù) for i=1:M

      for j=1:N

      % 循環(huán)

      d=sqrt((i-m)^2+(j-n)^2);

      h=1/(1+0.414*(d/d0)^(2*nn));

      %計(jì)算低通濾波器傳遞函數(shù)

      result(i,j)=h*g(i,j);

      %結(jié)果返回到result

      end end result=ifftshift(result);

      %將圖象頻譜中心從矩陣的中心移到矩陣的原點(diǎn) y2=ifft2(result);

      %二維離散傅里葉反變換

      y3=uint8(real(y2));

      %把矩陣y2實(shí)部轉(zhuǎn)換成8位無符號數(shù)據(jù) imshow(y3);

      %顯示低通濾波后的圖像 xlabel('低通濾波圖像');handles.img=y3;guidata(hObject,handles);

      %把handles句柄更新

      %--------function high_Callback(hObject, eventdata, handles)% hObject

      handle to high(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù)

      level=graythresh(T);

      %用Otsu方法計(jì)算全局圖像閾值

      BW=im2bw(T,level);

      %基于一定閾值把圖像轉(zhuǎn)換為二值圖像 imshow(BW);

      %顯示閾值分割后的圖像 xlabel('閾值分割圖像');handles.img=BW;guidata(hObject,handles);

      %把handles句柄更新

      %--------function tidu_Callback(hObject, eventdata, handles)function kongyu_Callback(hObject, eventdata, handles)function pinyu_Callback(hObject, eventdata, handles)function bianxing_Callback(hObject, eventdata, handles)function qita_Callback(hObject, eventdata, handles)function duibidu_Callback(hObject, eventdata, handles)%--------function roberts_Callback(hObject, eventdata, handles)% hObject

      handle to roberts(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù) C1=rgb2gray(T);

      %灰度變換

      C2=edge(C1,'canny');

      %用canny算子識別灰度圖像的輪廓 imshow(C2);xlabel('Canny算子圖像');handles.img=C2;guidata(hObject,handles);

      %把handles句柄更新

      %--------function sobel_Callback(hObject, eventdata, handles)% hObject

      handle to sobel(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù)

      prompt={'調(diào)整角度'};

      %用于顯示可提示用戶進(jìn)行輸入角度的對話框 defans={'0'};

      %對話框內(nèi)顯示默認(rèn)數(shù)值為0 p=inputdlg(prompt,'input',1,defans);

      %創(chuàng)建并打開標(biāo)題為input的輸入對話框,包含

      “調(diào)整角度”,輸入框?yàn)?行,對話框中默認(rèn)顯示數(shù)值為0 p1=str2num(p{1});

      %將字符串轉(zhuǎn)換為數(shù)值

      f=imrotate(handles.img,p1,'bilinear','crop');%將圖像handles.img饒圖像的中心點(diǎn)旋轉(zhuǎn)p1

      度,p1為正數(shù)逆時(shí)針旋轉(zhuǎn),為負(fù)數(shù)順時(shí)針旋轉(zhuǎn),bilinear為使用雙線性插值法,crop為旋19

      轉(zhuǎn)后輸出圖像尺寸與原圖像尺寸一樣

      imshow(f);

      %顯示旋轉(zhuǎn)后圖像 xlabel('旋轉(zhuǎn)后的圖像');handles.img=f;guidata(hObject,handles);

      %把handles句柄更新

      %--------function shangxia_Callback(hObject, eventdata, handles)% hObject

      handle to shangxia(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)

      axes(handles.axes2);

      T= getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù)

      f=fliplr(handles.img);

      %將圖像矩陣左右翻轉(zhuǎn)

      imshow(f);

      %顯示翻轉(zhuǎn)后的圖像

      xlabel('左右翻轉(zhuǎn)后的圖像');

      handles.img=f;

      guidata(hObject,handles);

      %把handles句柄更新

      %--------function liangdu_Callback(hObject, eventdata, handles)% hObject

      handle to liangdu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù)

      prompt={'輸入?yún)?shù)'};

      %用于顯示可提示用戶進(jìn)行輸入?yún)?shù)的對話框

      defans={'1'};

      %對話框內(nèi)顯示默認(rèn)數(shù)值為1 p=inputdlg(prompt,'input',1,defans);%創(chuàng)建并打開標(biāo)題為input的輸入對話框,包含“輸入

      參數(shù)”,輸入框?yàn)?行,對話框中默認(rèn)顯示數(shù)值為1 p1=str2num(p{1});

      %將字符串轉(zhuǎn)換為數(shù)值

      f=immultiply(handles.img,p1);

      %將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)對比度

      imshow(f);

      %顯示對比度增強(qiáng)后的圖像 xlabel('對比度增強(qiáng)的圖像');handles.img=f;guidata(hObject,handles);

      %把handles句柄更新

      %--------function jianruo_Callback(hObject, eventdata, handles)% hObject

      handle to jianruo(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù) x=imcrop(handles.img);

      % 返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方式使用

      鼠標(biāo)選定要剪切的區(qū)域

      imshow(x);

      %顯示裁剪后的圖像 xlabel('裁剪后的圖像');handles.img=x;guidata(hObject,handles);

      %把handles句柄更新

      %--------function dipian_Callback(hObject, eventdata, handles)% hObject

      handle to dipian(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles

      structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;

      %從坐標(biāo)軸獲取圖像數(shù)據(jù) BW=im2bw(handles.img);

      %將圖像轉(zhuǎn)換為二值圖像 imshow(BW);

      %顯示二值圖像 xlabel('二值圖像');handles.img=BW;guidata(hObject,handles);

      %把handles句柄更新

      第四篇:《數(shù)字圖像處理》

      實(shí)驗(yàn)五 圖像的幾何變換

      一.實(shí)驗(yàn)?zāi)康募耙?/p>

      掌握圖像幾何變換的基本原理,熟練掌握數(shù)字圖像的縮放、旋轉(zhuǎn)、平移、鏡像和轉(zhuǎn)置的基本原理及其MATLAB編程實(shí)現(xiàn)方法。

      二、實(shí)驗(yàn)內(nèi)容

      (一)研究以下程序,分析程序功能;輸入執(zhí)行各命令行,認(rèn)真觀察命令執(zhí)行的結(jié)果。熟悉程序中所使用函數(shù)的調(diào)用方法,改變有關(guān)參數(shù),觀察試驗(yàn)結(jié)果。

      1.圖像縮放 clear all, close all I = imread('cameraman.tif');Scale = 1.35;

      % 將圖像放大1.35倍

      J1 = imresize(I, Scale, 'nearest');

      % using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');

      % using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');help imresize

      % 查看imresize使用幫助

      1.95倍

      I = imread('cameraman.tif');Scale = 1.96;

      % 將圖像放大1.96倍

      J1 = imresize(I, Scale, 'nearest');

      % using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');

      % using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');

      說明:

      ?注意觀察不同插值方法的圖像表現(xiàn); ?改變圖像縮放因子Scale,重做上述實(shí)驗(yàn)。2.圖像旋轉(zhuǎn)

      clear all, close all I = imread('cameraman.tif');Theta = 45;

      % 將圖像逆時(shí)針旋轉(zhuǎn)45?。

      J1 = imrotate(I, Theta, 'nearest');

      % using the nearest neighbor interpolation Theta =-45;

      % 將圖像順時(shí)針旋轉(zhuǎn)45?。

      J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');% 查看imrotate使用幫助 help imrotate %-------

      圖像旋轉(zhuǎn)30順時(shí)針逆時(shí)針

      clear all, close all I = imread('cameraman.tif');Theta = 30;

      % 將圖像逆時(shí)針旋轉(zhuǎn)30。

      J1 = imrotate(I, Theta, 'nearest');

      % using the nearest neighbor interpolation Theta =-30;

      % 將圖像順時(shí)針旋轉(zhuǎn)30。

      J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');7 說明:

      ?注意觀察不同插值方法和輸出圖像后處理方法的圖像表現(xiàn); ?改變旋轉(zhuǎn)角度大小和方向,重做上述實(shí)驗(yàn)。

      3.圖像水平鏡象

      clear all, close all I = imread('cameraman.tif');I1 = flipdim(I,2);

      I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);subplot(1,2,2), imshow(I1);figure(2), subplot(2,1,1), imshow(I);subplot(2,1,2), imshow(I2);%----

      (二)用MATLAB編程實(shí)現(xiàn)以下圖像幾何變換(參考自編講義相關(guān)章節(jié))

      1.圖像扭曲變換 2.球面變換

      三、實(shí)驗(yàn)設(shè)備

      1.PIII以上微機(jī); 2.MATLAB6.5;

      四、預(yù)習(xí)與思考

      1.預(yù)習(xí)實(shí)驗(yàn)內(nèi)容,閱讀教材熟悉實(shí)驗(yàn)原理;

      2.查閱資料,熟悉實(shí)驗(yàn)中涉及的有關(guān)MATLAB函數(shù);

      3.利用課余時(shí)間,采用MATLAB底層函數(shù)編程實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容

      (二)中的圖像平移、圖像轉(zhuǎn)置等幾何變換。

      五、實(shí)驗(yàn)報(bào)告要求

      1.簡述試驗(yàn)的目的和試驗(yàn)原理;

      2.?dāng)⑹龈鞫纬绦蚬δ埽淖冇嘘P(guān)函數(shù)的參數(shù),分析比較實(shí)驗(yàn)結(jié)果; 3.打印出所編寫的實(shí)驗(yàn)程序。4.寫出本實(shí)驗(yàn)的心得體會及意見。

      實(shí)驗(yàn)六

      數(shù)字圖像處理應(yīng)用

      一.實(shí)驗(yàn)?zāi)康募耙?/p>

      1.利用MATLAB提供的圖像處理函數(shù)實(shí)現(xiàn)圖像中物體屬性的測量; 2.訓(xùn)練綜合運(yùn)用MATLAB圖像處理函數(shù)的能力; 3.了解數(shù)字圖像處理基本應(yīng)用。

      二、實(shí)驗(yàn)內(nèi)容

      以大米粒特性測量為例,綜合應(yīng)用課程中圖像分割、形態(tài)學(xué)濾波、圖像增強(qiáng)、圖像特征提取等圖像處理方法,實(shí)現(xiàn)大米粒特性自動測量。實(shí)驗(yàn)過程簡述:

      1. 讀取和顯示圖像 2. 估計(jì)圖像背景 3. 獲取背景均勻的圖像 4. 圖像增強(qiáng) 5. 圖像二值化分割 6. 區(qū)域標(biāo)記及為彩色處理

      7. 測量圖像中的區(qū)域特性(面積、質(zhì)心等)

      8.統(tǒng)計(jì)大米粒的特性分布規(guī)律。

      (一)研究以下程序,分析程序功能;輸入執(zhí)行各命令行,認(rèn)真觀察命令執(zhí)行的結(jié) 果。熟悉程序中所使用函數(shù)的調(diào)用方法,改變有關(guān)參數(shù),觀察試驗(yàn)結(jié)果。

      % Read and Display an Image clear, close all,close all;I = imread('rice.png');

      figure, imshow(I)

      % Use Morphological Opening to Estimate the Background

      background = imopen(I,strel('disk',15));

      figure, imshow(background);

      %Display the Background Approximation as a Surface

      figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');% Subtract the Background Image from the Original Image I2 = imsubtract(I,background);figure, imshow(I2)% Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]);figure, imshow(I3);% Apply Thresholding to the Image level = graythresh(I3);bw = im2bw(I3,level);figure, imshow(bw)% Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);

      % Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');figure, imshow(RGB_label);% Measure Object Properties in the Image graindata = regionprops(labeled,'basic')allgrains = [graindata.Area];% Compute Statistical Properties of Objects in the Image max(allgrains);biggrain = find(allgrains==695)mean(allgrains);figure, hist(allgrains,20);12

      (詳見MATLAB IPT的 幫助文檔demo中的Correcting Nonuniform Illumination)

      (二)查看MATLAB IPT 幫助文檔,研究其它應(yīng)用演示

      三、實(shí)驗(yàn)設(shè)備 1.PIII以上微機(jī); 2.MATLAB6.5;

      四、預(yù)習(xí)與思考

      1.預(yù)習(xí)實(shí)驗(yàn)內(nèi)容,閱讀教材熟悉實(shí)驗(yàn)原理; 2.查閱資料,熟悉實(shí)驗(yàn)中涉及的有關(guān)函數(shù)。

      3.利用課余時(shí)間,采用MATLAB函數(shù)編程實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容

      (二)。

      五、實(shí)驗(yàn)報(bào)告要求

      1.簡述試驗(yàn)的目的和試驗(yàn)原理;

      2.?dāng)⑹龈鞫纬绦蚬δ埽淖冇嘘P(guān)函數(shù)的參數(shù),分析比較實(shí)驗(yàn)結(jié)果; 3.打印出所編寫的實(shí)驗(yàn)程序。4.寫出本實(shí)驗(yàn)的心得體會及意見。

      第五篇:數(shù)字圖像處理

      中南大學(xué)

      數(shù)字圖像處理實(shí)驗(yàn) 實(shí)驗(yàn)名稱:空間濾波和頻域?yàn)V波

      班級:電子信息0802班

      姓名:李哲 學(xué)號:0909080609 實(shí)驗(yàn)日期:2010年12月22日

      目錄

      一,實(shí)驗(yàn)?zāi)康???????????????????????3 二,給圖像添加噪聲????????????????????4 三,對被噪聲污染的圖像進(jìn)行中值濾波和均值濾波???????5 四,對圖像進(jìn)行空間域的銳化????????????????6 五,MATLAB以外函數(shù)空間濾波和圖像銳化??????????7 六,自帶函數(shù)傅立葉變換和反變換??????????????8 七,低通濾波器程序????????????????????9 八,心得體會 ??????????????????????10 九,參考文獻(xiàn) ??????????????????????10

      一、實(shí)驗(yàn)?zāi)康?1,空間濾波:

      圖像平滑主要目的是減少噪聲。噪聲有很多種類,不同的噪聲有不同的抑制措施。本實(shí)驗(yàn)要求用平滑線性濾波和中值濾波2種最典型、最常用的處理算法進(jìn)行程序設(shè)計(jì),學(xué)習(xí)如何對已被噪聲污染的圖像進(jìn)行“凈化”。通過平滑處理,對結(jié)果圖像加以比較,得出自己的實(shí)驗(yàn)結(jié)論。學(xué)習(xí)如何用銳化處理技術(shù)來加強(qiáng)圖像的目標(biāo)邊界和圖像細(xì)節(jié),對圖像進(jìn)行梯度算子、拉普拉斯算子,使圖像的某些特征(如邊緣、輪廓等)得以進(jìn)一步的增強(qiáng)及突出。本實(shí)驗(yàn)銳化處理主要在空間域中進(jìn)行 2,頻域?yàn)V波:

      掌握傅里葉變換的基本性質(zhì); 掌握傅里葉正變換和反變換; 通過實(shí)驗(yàn)了解二維頻譜的分布特點(diǎn); 掌握怎樣利用傅立葉變換進(jìn)行頻域?yàn)V波

      利用MATLAB程序數(shù)字圖像的傅立葉變換并且進(jìn)行頻域?yàn)V波

      二,給圖像添加椒鹽噪聲或者高斯噪聲: 原理:利用MATLAB自帶函數(shù)添加噪聲 程序代碼:A=imread('onion.png');I=rgb2gray(A);imshow(I);J = imnoise(I,'salt & pepper',0.05);figure,imshow(J),title('椒鹽噪聲');%添加椒鹽噪聲 K = imnoise(I,'gaussian',0,0.03);

      figure,imshow(K),title('高斯噪聲');%添加高斯噪聲

      三,對被噪聲污染的圖像進(jìn)行中值濾波和均值濾波: 原理:自帶函數(shù)進(jìn)行中值濾波和均值濾波 源程序:A=imread('onion.png');I=rgb2gray(A);J = imnoise(I,'salt & pepper',0.05);k2=medfilt2(J,[5 5]);k3=medfilt2(J,[7 7]);imshow(J),title('原圖');figure,imshow(k2),title('中值濾波5*5模板');figure,imshow(k3),title('中值濾波7*7模板');

      四,對圖像進(jìn)行空間域的銳化: 原理:自帶函數(shù)進(jìn)行空間銳化。源程序:I=imread('coins.png');subplot(121),imshow(I),title('原圖像');H=fspecial('sobel');I2=filter2(H ,I);subplot(122),imshow(I2),title('sobel算子銳化圖像');

      五,MATLAB以外函數(shù)空間濾波和圖像銳化:

      源程序:I = imread('eight.tif');J = imnoise(I,'salt & pepper',0.02);K = medfilt2(J);imshow(J);title('噪聲干擾圖像')figure, imshow(K);title('medfilt2濾波圖像')X=J;a=2;b=2;k=floor(a*b/2)+1;[M,N]=size(X);uint8 Y=zeros(M,N);funBox=zeros(a,b);temp=zeros(a*b);

      for i=1:M-a

      for j=1:N-b

      funBox=X(i:i+a,j:j+b);

      temp=funBox(:);

      tempSort=sort(temp);

      Y(i,j)=tempSort(k);

      end;end;figure, imshow(Y);title('濾波圖像')

      六,利用Matlab的圖像處理工具箱中提供的函數(shù)實(shí)現(xiàn)圖像的傅立葉變換和反變換: 源程序:

      A=imread('onion.png');f=rgb2gray(A);subplot(131),imshow(f),title('原圖');F=fft2(f);% 快速傅立葉變換

      subplot(132),imshow(F),title('傅里葉變換')Fabs=abs(F);% 求幅頻絕對值 Fc=fftshift(Fabs);% 中心移位 SFc=log(1+Fc);% 對數(shù)變換

      iFc1=ifftshift(Fc);% 中心移位的逆變換,絕對值 iF2=ifft2(iFc1);% 快速傅立葉變換的逆變換

      subplot(133),imshow(iF2),title('快速傅立葉變換的逆變換')

      七,低通濾波器程序:

      I=imread('testpat1.png');subplot(221),imshow(I);title('原始圖像')J1=imnoise(I,'gaussian',0.02);% 疊加高斯白噪聲

      subplot(222),imshow(J1);title('添加高斯白噪聲的圖像')f=double(J1);

      % 數(shù)據(jù)類型轉(zhuǎn)換 g=fft2(f);

      % 傅立葉變換 g=fftshift(g);

      [M,N]=size(g);nn=2;

      % 二階巴特沃斯(Butterworth)低通濾波器 d0=50;

      % 設(shè)置截止頻率 m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N

      d=sqrt((i-m)^2+(j-n)^2);

      h=1/(1+0.414*(d/d0)^(2*nn));% 計(jì)算低通濾波器傳遞函數(shù)

      result(i,j)=h*g(i,j);end end result=ifftshift(result);J2=ifft2(result);J3=uint8(real(J2));subplot(223),imshow(J3);title('低通濾波后圖像')

      心得體會

      1,進(jìn)一步熟悉了Matlab軟件、編程以及圖像處理工具箱 2,學(xué)會利用自帶函數(shù)對圖像做簡單的處理,例如:均值化等。3,熟練了一些基本函數(shù)的運(yùn)用,例如fspecial,imfilter等。4,加深了對MATLAB編程的理解。

      5,對于試驗(yàn)中的出現(xiàn)的一些問題,懂得怎樣去處理。6,通過實(shí)際操作,增強(qiáng)了自己的動手能力,把理論用于實(shí)踐。

      參考文獻(xiàn):數(shù)字圖像處理第二版

      MATLAB教程

      下載基于MATLAB的數(shù)字圖像處理word格式文檔
      下載基于MATLAB的數(shù)字圖像處理.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)字圖像matlab結(jié)課作業(yè)[模版]

        clear all; close all; I=imread('e:5.tif'); imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_gray_hist=imhist(I_gray); figure,imshow(I_gray_hist); Ibw=im......

        數(shù)字圖像處理_邊緣檢測算子與銳化算子(含MATLAB代碼)

        數(shù)字圖像處理實(shí)驗(yàn)五 15生醫(yī) 一、實(shí)驗(yàn)內(nèi)容 對某一灰度圖像,進(jìn)行如下處理: (1)分別用Roberts、Prewitt和Sobel邊緣檢測算子進(jìn)行邊緣檢測; (2)將Roberts、Prewitt和Sobel邊緣檢測算子......

        數(shù)字圖像處理讀書筆記

        數(shù)字圖像處理讀書筆記 本學(xué)期的數(shù)字圖像處理課程已經(jīng)進(jìn)行了3周了,通過這3周的學(xué)習(xí)讓我對數(shù)字圖像處理有了一定的認(rèn)知和理解。數(shù)字圖像處理又稱為計(jì)算機(jī)圖像處理,它是指將圖像......

        數(shù)字圖像處理實(shí)驗(yàn)報(bào)告

        實(shí) 驗(yàn) 報(bào) 告 書 系部學(xué)生專業(yè)班實(shí)驗(yàn) 名稱姓名名稱 級時(shí)間:: : : : 實(shí)驗(yàn)一 直方圖均衡 一、實(shí)驗(yàn)?zāi)康?在學(xué)習(xí)圖像直方圖的概念、計(jì)算方法、性質(zhì)和相關(guān)應(yīng)用基礎(chǔ)上,生成、繪制圖像......

        數(shù)字圖像處理實(shí)驗(yàn)報(bào)告

        數(shù)字圖像處理 實(shí)驗(yàn)報(bào)告 目錄 1. 數(shù)字圖像處理簡介2. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容4. 實(shí)驗(yàn)結(jié)果及代碼展示5. 算法綜述6. Matlab優(yōu)勢7. 總結(jié)8. 存在問題 一、 數(shù)字圖像處理簡介......

        數(shù)字圖像處理實(shí)驗(yàn)報(bào)告

        數(shù)字圖像處理 實(shí)驗(yàn)報(bào)告 班級:通信103 學(xué)號:201027201 姓名:計(jì)富威 指導(dǎo)教師:孫潔 實(shí)驗(yàn)一 MATLAB數(shù)字圖像處理初步 一、實(shí)驗(yàn)?zāi)康呐c要求 1.熟悉及掌握在MATLAB中能夠處理哪些格......

        數(shù)字圖像處理實(shí)驗(yàn)報(bào)告

        實(shí)驗(yàn)一 數(shù)字圖像的獲取 一、實(shí)驗(yàn)?zāi)康?1、了解圖像的實(shí)際獲取過程。 2、鞏固圖像空間分辨率和灰度級分辨率、鄰域等重要概念。 3、熟練掌握圖像讀、寫、顯示、類型轉(zhuǎn)換等 mat......

        數(shù)字圖像處理心得體會

        數(shù)字圖像處理心得體會 姓名: 學(xué)號: 201203284 班級: 計(jì)科11202 序號: 31 院系: 計(jì)算機(jī)科學(xué)學(xué)院 在這一學(xué)期,我選修了《數(shù)字圖像處理》這門專業(yè)選修課,同時(shí),老師還講授了一些......