




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)字圖像處理
DigitalImageProcessing主講:廖朝陽(yáng)E_mail:62886210@163.comaliao660815@QQ:397388511Tel南科技學(xué)院電子信息教研室1.3基于圖像的動(dòng)畫(huà)制作
序列圖像序列圖像,JPG圖像格式,GIF圖像(靜態(tài)GIF和動(dòng)畫(huà)GIF),MPEG圖像(包括
MPEG-1、MPEG-2、MPEG-4、MPEG-7等)圖1-19逐幅顯示的GIF圖像
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例1-15】讀取GIF動(dòng)畫(huà)圖像并逐幅顯示出來(lái)。GIF動(dòng)畫(huà)圖像lanqiu.gif存儲(chǔ)在D盤(pán)根目錄下,編寫(xiě)如下程序,讀取該圖像并逐幅顯示,顯示的結(jié)果在圖1-19中。m=uint8(zeros(127,91,4));forfr=1:4[m(:,:,fr),map]=imread('d:\lanqiu.gif',fr);m1(:,:,:,fr)=ind2rgb(m(:,:,fr),map);subplot(1,4,fr)imshow(m1(:,:,:,fr))axisoffend數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com
該程序首先使用uint8(zeros(127,91,1,4))創(chuàng)建了一個(gè)四維全零數(shù)組,數(shù)據(jù)類(lèi)型為無(wú)符號(hào)整型,數(shù)組名為m。在編寫(xiě)程序前,事先查看圖像lanqiu.gif的屬性,得知該圖像的高為127,寬為91,一共四幅,所以創(chuàng)建的數(shù)組大小為(127,91,4)。在循環(huán)語(yǔ)句中,順序讀出四幅圖像的數(shù)據(jù),然后使用subplot(1,4,fr)把四幅圖像顯示在一個(gè)圖形窗口中。語(yǔ)句[m(:,:,fr),map]=imread(‘d:\lanqiu.gif’,fr)讀出每一幅圖像的數(shù)據(jù)矩陣與映射矩陣。語(yǔ)句m1(:,:,:,fr)=ind2rgb(m(:,:,fr),map)是把讀出的索引圖像變?yōu)镽GB彩色圖像。axisoff是不顯示坐標(biāo)軸。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像播放
使用圖像顯示函數(shù)播放圖像使用pause函數(shù)與image函數(shù)等順次播放圖像。使用movie函數(shù)播放圖像【例1-17】使用movie函數(shù)播放圖像。編寫(xiě)如下程序,能夠?qū)崿F(xiàn)圖像播放fori=1:4k=int2str(i);k1=strcat('e:\ziranjingguan',k,'.bmp');a1=imread(k1);image(a1);m(:,i)=getframe;endmovie(m,15)
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com在這個(gè)程序中,使用了圖像播放函數(shù)movie(m,15),該函數(shù)能夠按照固定時(shí)間間隔播放存儲(chǔ)在多維數(shù)組m中的圖像。k=int2str(i)是把i從數(shù)值形式變成字符形式,然后賦給變量k;
k1=strcat(‘e:\ziranjingguan’,k,‘.bmp’)是把字符串e:\ziranjingguan
與k連接后再連接.bmp,得到了圖像文件存儲(chǔ)的位置;a1=imread(k1)是讀入圖像數(shù)據(jù)賦給數(shù)組變量a1;然后在圖形窗口中使用image(a1)顯示數(shù)組a1所代表的圖像;m(:,i)=getframe是從圖形窗口上取當(dāng)前圖形(圖像),把數(shù)據(jù)賦給數(shù)組變量m的第i頁(yè)。movie(m,15)是連續(xù)播放15次。
上面例1-17程序中的語(yǔ)句image(a1)是不可缺少的,因?yàn)間etframe需要從圖形窗口中獲得圖像數(shù)據(jù)。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com基于圖像的動(dòng)畫(huà)制作
繪制圖像制作動(dòng)畫(huà):【例1-18】繪制序列圖像制作動(dòng)畫(huà)。下面圖1-20中的3個(gè)圖象是用畫(huà)圖工具繪制出來(lái)的,分別命名為1.jpg、2.jpg與3.jpg,存儲(chǔ)在E盤(pán)根目錄下。圖1-20制作動(dòng)畫(huà)的三幅圖像
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com下面程序使用getframe函數(shù)裝載這幾幅圖像,使用movie函數(shù)播放這幾幅圖像就是完成了一個(gè)動(dòng)畫(huà)制作。fori=1:3k=int2str(i);k1=strcat('e:\',k,'.jpg');a1=imread(k1);image(a1);m(:,i)=getframe;endmovie(m,10)
目前一些動(dòng)畫(huà)制作就是使用這種方式,先手動(dòng)繪制大量的具有連續(xù)內(nèi)容的圖片,然后掃描(或利用其他輸入方式)輸入到機(jī)器中,最后把這些圖像組織到一起,進(jìn)行播放。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com切割圖像制作動(dòng)畫(huà):
Matlab提供了函數(shù)imcrop(A,[i,j,m,n])用來(lái)對(duì)圖像進(jìn)行切割,其中參數(shù)A是被切割圖像矩陣,(i,j)表示被切割區(qū)域的左上角頂點(diǎn),(m,n)表示被切割區(qū)域的右下角頂點(diǎn)?!纠?-19】使用切割圖像函數(shù)制作動(dòng)畫(huà)。A=imread('D:\111.jpg');a=50;b=50;fori=1:50a=a-1;b=b+1;A1=imcrop(A,[a,a,b,b]);imshow(A1)end右面程序使用imcrop函數(shù),利用一幅圖像制作出了動(dòng)畫(huà)效果。程序運(yùn)行后,先從圖像中間開(kāi)始顯示小塊,逐漸向四周擴(kuò)大顯示范圍,連續(xù)起來(lái)形成了動(dòng)畫(huà)。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com完整的圖像如圖1-21(a)所示。
圖1-21(b)是當(dāng)i=5時(shí)切割出來(lái)的圖像(c)是當(dāng)i=15時(shí)切割出來(lái)的圖像(d)是當(dāng)i=30時(shí)切割出來(lái)的圖像(e)是當(dāng)i=50時(shí)切割出來(lái)的圖像。
(a)(b)(c)(d)(e)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com利用圖像顏色與亮度變化制作動(dòng)畫(huà):【例1-21】逐漸減少RGB圖像的綠色成分,完成一個(gè)顏色漸變的動(dòng)畫(huà)。編寫(xiě)程序如下:I=imread('D:\114.jpg');I1=I(:,:,2);s=size(I1);a=ones(s(1),s(2));I2=double(I1);fori=1:50I2(:,:)=I2(:,:)-a*i;I(:,:,2)=I2(:,:);
imshow(I)end程序的運(yùn)行結(jié)果是一個(gè)顏色漸變的動(dòng)畫(huà)。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com為了把顏色漸變情況在一個(gè)窗口中展示出來(lái),下面程序繪制出一些中間幀,如圖1-23所示。I=imread('D:\111.jpg');I1=I(:,:,2);s=size(I1);a=ones(s(1),s(2));I2=double(I1);fori=1:8I2(:,:)=I2(:,:)-a*i*5;subplot(2,4,i)I(:,:,2)=I2(:,:);
imshow(I)end數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖1-23圖像的綠色成分逐漸減少
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com第2章圖像幾何操作
2.1圖像的縮放旋轉(zhuǎn)與裁剪
2.2圖像的幾何變換
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.1圖像的縮放旋轉(zhuǎn)與裁剪
圖像的裁剪imcrop函數(shù):該函數(shù)有兩個(gè)參數(shù),一個(gè)用來(lái)指定裁剪圖像,一個(gè)用來(lái)定義裁剪矩形。自定義區(qū)域?qū)D像進(jìn)行裁剪:Matlab中提供了定義多邊形區(qū)域的函數(shù)roipoly,可以使用該函數(shù)定義多邊形區(qū)域,然后實(shí)行裁剪操作。直接調(diào)用roipoly函數(shù)可以交互實(shí)現(xiàn)任意多邊形的區(qū)域選取。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像的縮放
imresize函數(shù)縮放圖像:【例2-2】使用imresize函數(shù)縮小或放大圖像。下面程序把圖像縮小到原來(lái)的0.5倍。c=imread('D:\earth.jpg');c2=imresize(c,0.5);imshow(c2)下面程序把原圖像變成100行100列圖像,行數(shù)增加,使用插值函數(shù)完成顏色的填補(bǔ)。c=imread('D:\earth.jpg');c2=imresize(c,[100,100]);imshow(c2)【思考題】把圖像放大到原來(lái)的3倍,如何修改程序?
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com三種插值方法最近鄰插值方法:最近鄰插值方法是imresize函數(shù)默認(rèn)的插值方法。雙線性插值方法雙立方插值方法Imresize函數(shù)就使用這三種插值方法。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像的旋轉(zhuǎn)
Matlab使用imrotate函數(shù)旋轉(zhuǎn)圖像。例如,使用下面命令段可以把圖像逆時(shí)針旋轉(zhuǎn)30度。>>B=imread('ic.tif');>>imshow(B)>>figure>>imrotate(B,30,'crop')這幾句命令繪制出圖2-4(a)與(b)圖。
(a)原圖像(b)逆時(shí)針旋轉(zhuǎn)30度(c)逆時(shí)針旋轉(zhuǎn)30度數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com調(diào)用語(yǔ)句imrotate時(shí),如果不寫(xiě)參數(shù)‘crop’,寫(xiě)為imrotate(B,30),那么旋轉(zhuǎn)后的圖像大小不變,而圖像的底板一般會(huì)變大,如圖2-4(c)所示。與圖像縮放一樣,這里的插值也是三種形式,最近鄰插值、雙線性插值與雙三次插值,默認(rèn)為最近鄰插值。
Imrotate函數(shù)調(diào)用的一般形式為:imrotate(A,Angle,Method,Bbox)其中參數(shù)Method為插值方法,調(diào)用函數(shù)時(shí),如果需要指定插值方式的話,在參數(shù)Method的位置上注明‘nearest’、‘bilinear’或者‘bicubic’。參數(shù)Bbox為‘loose’時(shí),旋轉(zhuǎn)圖形如2-4(c)所示,底板擴(kuò)大,為默認(rèn)形式;參數(shù)Bbox為‘crop’時(shí),旋轉(zhuǎn)圖形如2-4(b)所示,底板不變,圖像可能被切割?!舅伎碱}】修改命令,把圖像順時(shí)針旋轉(zhuǎn)90度。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.2圖像的幾何變換
圖像的幾何變換是指圖像幾何操作后,內(nèi)部結(jié)構(gòu)比例等發(fā)生變化,但整體布局與形狀沒(méi)有改變。包括圖像扭曲、圖像二維空間變換、距離變換等內(nèi)容。畫(huà)圖軟件中的圖像扭曲
在圖像處理軟件中,都提供了圖像扭曲的功能。例如,Windows中簡(jiǎn)單的畫(huà)圖軟件:打開(kāi)拉伸扭曲窗口,在扭曲組合框中修改水平參數(shù)為20,那么點(diǎn)擊確定后,白色畫(huà)板上的圖像就會(huì)水平扭曲20度。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像二維空間變換圖像二維仿射變換Matlab使用imtransform函數(shù)完成圖像空間變換。imtransform函數(shù)的調(diào)用形式為:imtransform(I,T),其中參數(shù)I是要變換的圖像,T是由maketform函數(shù)產(chǎn)生的變換結(jié)構(gòu)。在函數(shù)maketform('P',……)中,參數(shù)P可以是以下形式:affine仿射變換形式projective投影變換形式custom自定義函數(shù)進(jìn)行變換box依靠函數(shù)中的另外參數(shù)產(chǎn)生仿射變換結(jié)構(gòu)composite該參數(shù)實(shí)現(xiàn)多次調(diào)用tformfwd功能數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com函數(shù)maketform就是利用給定的參數(shù)建立變換結(jié)構(gòu),然后把該變換結(jié)構(gòu)賦給結(jié)構(gòu)體變量(例如賦給T)。根據(jù)得到的結(jié)構(gòu)體變量T,調(diào)用函數(shù)imtransform(I,T)進(jìn)行變換。
圖像二維投影變換
二維變換投影可以把一幅圖像按照近大遠(yuǎn)小的規(guī)律投影到一個(gè)平面上,產(chǎn)生立體的效果。運(yùn)用好函數(shù)maketform中的兩個(gè)向量,能夠繪制出很多特殊效果的圖形。【思考題】根據(jù)給定的函數(shù)maketform中的兩個(gè)向量求變換矩陣。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.3圖像的鄰域操作
鄰域操作
圖像小獅子的顏色數(shù)據(jù)詳見(jiàn)課教材,由于圖像很小,所以可以把數(shù)據(jù)顯示在一起,以便進(jìn)行比較。小獅子圖像是方形的,高與寬都為16。A1(:,:,1)、A1(:,:,2)與A1(:,:,3)分別代表圖像的紅色(R)、綠色(G)與藍(lán)色陣(B)。這個(gè)小圖像是使用RGB顏色形式表示顏色的。三個(gè)顏色矩陣合在一起形成了各種顏色,例如:A1(:,:,1)、A1(:,:,2)與A1(:,:,3)的左上角的數(shù)據(jù)都是255,所以合在一起左上角呈白色。教材中的數(shù)據(jù)是使用語(yǔ)句A1=imread(‘D:\shizi1.bmp’)讀入的,使用下面程序段能夠把小獅子圖像化為灰度圖像。A1=imread('D:\shizi1.bmp');A2=double(A1);A3=floor((A2(:,:,1)+A2(:,:,2)+A2(:,:,3))/3)
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-10】對(duì)小獅子圖像進(jìn)行鄰域操作,使小獅子圖像的輪廓變得清晰。編寫(xiě)如右面的程序,繪制出圖2-10(c)所示圖形。
A1=imread('D:\shizi1.bmp');A2=double(A1);A3=floor((A2(:,:,1)+A2(:,:,2)+A2(:,:,3))/3);C=[-1-1-1-18-1-1-1-1];fori=2:15forj=2:15L=A3(i-1:i+1,j-1:j+1).*C;A4(i,j)=sum(sum(L));endendA4imshow(A4)
圖2-10對(duì)小獅子圖像進(jìn)行鄰域操作后的結(jié)果
(a)(b)(c)(d)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com該程序中,首先把圖像讀入,然后使用語(yǔ)句A2=double(A1)把圖像數(shù)據(jù)變?yōu)楦↑c(diǎn)型數(shù)據(jù)。再通過(guò)語(yǔ)句A3=floor((A2(:,:,1)+A2(:,:,2)+A2(:,:,3))/3)把彩色圖像變?yōu)榛叶葓D像。變?yōu)榛叶葓D像的方法就是把三種顏色值加在一起然后除以3。floor函數(shù)用來(lái)實(shí)現(xiàn)取整功能。A3為二維數(shù)組,此時(shí)A3中存儲(chǔ)著灰度圖像數(shù)據(jù)。程序中定義了行數(shù)列數(shù)都為3的矩陣C,該矩陣稱(chēng)為滑動(dòng)塊矩陣,也叫做掩膜矩陣,很多書(shū)上都稱(chēng)之為濾波器。在例題2-10中,一共調(diào)用了滑動(dòng)塊矩陣C(15-2+1)*(15-2+1)=196次,總計(jì)得到了矩陣A4的196個(gè)元素。為了計(jì)算方便,i、j都是從2開(kāi)始循環(huán),所以矩陣A4的第一行元素與第一列元素都默認(rèn)為0,圖2-10(c)有黑色的左邊框與上邊框。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com下面利用圖2-11進(jìn)一步講解鄰域操作的過(guò)程。
圖2-11數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com運(yùn)行例2-10中程序后,在矩陣C上進(jìn)行滑動(dòng)的時(shí)候,首先從圖2-11左上角開(kāi)始,修改的是原圖像的(2,2)元素,修改該元素的方法是:1.使用滑動(dòng)塊矩陣C=與
(即以原圖像的(2,2)元素為中心的3*3鄰域矩陣)對(duì)應(yīng)元素相乘,得到了新的3*3矩陣D=2.把新得到的矩陣D的所有元素相加,和作為新圖像的(2,2)元素的值。程序中使用的語(yǔ)句為:A4(i,j)=sum(sum(L))。該例子中,新圖像的(2,2)元素的值為0。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com例題2-10修改的第2個(gè)元素是(2,3),然后是(2,4),…,(2,15)。(2,16)沒(méi)有修改。接著修改第3行(3,2)到(3,15)元素,如此下去,最后一行沒(méi)有修改。實(shí)際上就是圖像最外面一圈元素沒(méi)有修改,共記60個(gè)元素沒(méi)有修改。使用語(yǔ)言編寫(xiě)程序?qū)D像進(jìn)行鄰域操作時(shí),主要是利用多重循環(huán)語(yǔ)句實(shí)現(xiàn)。
【注】1.語(yǔ)句A3(i-1:i+1,j-1:j+1).*C中乘法是兩個(gè)大小一樣的矩陣對(duì)應(yīng)元素相乘。2.例題2-10得到的新矩陣A4有很多負(fù)值,使用imshow函數(shù)能夠自動(dòng)對(duì)矩陣數(shù)據(jù)按比例進(jìn)行調(diào)整。圖2-10(d)是在原程序語(yǔ)句A3=floor((A2(:,:,1)+A2(:,:,2)+A2(:,:,3))/3);后面加上語(yǔ)句A4=A3;(其他語(yǔ)句不變),運(yùn)行后得到的結(jié)果?!舅伎碱}】觀察圖2-10(c)與圖2-10(d)的區(qū)別,分析產(chǎn)生差別的原因。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.comMatlab鄰域操作函數(shù)
nlfilter函數(shù):該函數(shù)被調(diào)用的一般形式為:B=nlfilter(A,[MN],FUN),其中A是被處理的圖像,[MN]表示滑動(dòng)塊的高為M、寬為N。FUN是要對(duì)滑動(dòng)覆蓋區(qū)域進(jìn)行操作的函數(shù)名,該函數(shù)可以是各種濾波算子,可以是任意定義的矩陣。【例2-12】使用nlfilter函數(shù)對(duì)圖像進(jìn)行均值平滑鄰域操作。把例2-11程序改寫(xiě)如下:A=imread('D:\shizi.bmp');A1=rgb2gray(A);subplot(1,2,1);imshow(A1);fun=inline('mean(mean(x))');B=nlfilter(A1,[33],fun);subplot(1,2,2);image(B);axisoff數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com程序的運(yùn)行結(jié)果如圖2-13所示。在這個(gè)程序中,修改了操作函數(shù),把中值操作改為求[33]塊的均值。與max函數(shù)等一樣,當(dāng)x是矩陣時(shí),函數(shù)mean(x)是求矩陣每列的平均值,得到一個(gè)(均值)行向量,所以?xún)纱握{(diào)用函數(shù)mean,即使用mean(mean(x))來(lái)求[33]塊的均值。圖2-13(b)邊框變成深色,是由于邊界補(bǔ)0造成的。在調(diào)用函數(shù)nlfilter時(shí),如果使用[33]大小的滑動(dòng)塊操作,需要在圖像邊界外添加一行與一列,默認(rèn)情況下添加0。
調(diào)用函數(shù)nlfilter時(shí),如果參數(shù)FUN有參數(shù),那么需要使用下面格式:B=NLFILTER(A,[MN],FUN,P1,P2,...)進(jìn)行調(diào)用。P1,P2,...為函數(shù)FUN的實(shí)參,把值傳入函數(shù)體中。(a)(b)原灰度圖像
均值操作后圖像圖2-13使用nlfilter函數(shù)進(jìn)行均值鄰域操作
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.comcolfilt函數(shù):colfilt函數(shù)與nlfilter函數(shù)是有區(qū)別的,colfilt函數(shù)在處理圖像時(shí),先把滑動(dòng)塊遮住的圖像部分(與滑動(dòng)塊同樣大?。┡懦梢涣校幚碇笤倩謴?fù)原來(lái)大小。一般說(shuō)來(lái),colfilt函數(shù)處理圖象的速度要快,但是要占用較多的內(nèi)存空間。colfilt函數(shù)與nlfilter函數(shù)的另一個(gè)重要區(qū)別是colfilt函數(shù)在移動(dòng)的時(shí)候可以在'sliding'與'distinct'兩者中進(jìn)行選擇,而nlfilter函數(shù)只是執(zhí)行'sliding'操作。colfilt函數(shù)在選擇'distinct'時(shí),滑動(dòng)塊不再逐象素滑動(dòng),而是逐塊移動(dòng)?!纠?-13】使用colfilt函數(shù)進(jìn)行圖像鄰域操作。設(shè)計(jì)下面程序
A=imread('D:\qizhong.gif');subplot(1,2,1);imshow(A);B=uint8(colfilt(A,[55],'sliding','mean'));subplot(1,2,2);imshow(B)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com原圖像鄰域均值操作后圖2-14使用colfilt函數(shù)進(jìn)行圖像鄰域均值平滑操作
(a)(b)blkproc函數(shù)是專(zhuān)門(mén)進(jìn)行分離塊操作的函數(shù)?!纠?-15】使用blkproc函數(shù)進(jìn)行圖像分離塊操作。I=imread('D:\shizi.bmp');I1=rgb2gray(I);fun=@dct2;J=blkproc(I1,[88],fun);imagesc(J)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖2-16使用blkproc函數(shù)進(jìn)行圖像分離塊DCT操作
blkproc函數(shù)是專(zhuān)門(mén)進(jìn)行分離塊操作的函數(shù)。【例2-15】使用blkproc函數(shù)進(jìn)行圖像分離塊操作。I=imread('D:\shizi.bmp');I1=rgb2gray(I);fun=@dct2;J=blkproc(I1,[88],fun);imagesc(J)該程序中,使用語(yǔ)句fun=@dct2調(diào)用了函數(shù)dct2,這個(gè)函數(shù)是計(jì)算矩陣的離散余弦變換,每個(gè)[88]的分離塊都進(jìn)行離散余弦變換。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.4圖像區(qū)域選取
塊選取函數(shù)Matlab還提供了一個(gè)區(qū)域選取函數(shù)roipoly(),可以完成各種多邊形塊的選取功能。
曲線圍成的區(qū)域在計(jì)算機(jī)中沒(méi)有嚴(yán)格的連續(xù)曲線,所有的曲線都是多邊形。所以可以用roipoly函數(shù)選取近似的曲邊區(qū)域。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-17】圖像塊選取后進(jìn)行加運(yùn)算,完成圖像塊的標(biāo)注。
設(shè)計(jì)右面程序:在程序中,使用了C1與C2定義了一個(gè)三角形,然后使用語(yǔ)句BW=roipoly(I3,C1,C2)得到了一個(gè)二值圖像矩陣BW。因?yàn)榫仃嘊W是0-1矩陣,所以為了實(shí)現(xiàn)相加把矩陣BW擴(kuò)大256倍后變?yōu)榫仃嘊,然后使用語(yǔ)句AB=(I3+B)把原圖像I3與(遮罩矩陣)B加在一起,最后得到合成矩陣AB。[I1,m]=imread('D:\125.jpg');I2=rgb2gray(I1);I3=double(I2);subplot(1,2,1)imshow(I3,m)C1=[103080];C2=[2010068];BW=roipoly(I3,C1,C2);B=double(BW)*256;AB=(I3+B);subplot(1,2,2)imshow(AB,m)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com因?yàn)閳D像D:\125.jpg是以索引方式存儲(chǔ)的,程序中語(yǔ)句[I1,m]=imread('D:\125.jpg')與imshow(AB,m)都是用來(lái)讀取、顯示索引圖像的。另外,直接調(diào)用roipoly函數(shù),不使用參數(shù),可以在命令執(zhí)行后交互繪制區(qū)域。
BW(圖像)中,選擇區(qū)域的顏色為白,其他位置都是黑色。得到了矩陣BW后,可以根據(jù)BW的信息對(duì)選取的區(qū)域進(jìn)行處理。
(a)灰度圖像(b)選擇區(qū)域圖2-18圖像的塊操作后加運(yùn)算
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-18】使用正弦曲線圍成圖像塊。設(shè)計(jì)下面程序:A=imread('D:\1250.jpg');subplot(1,2,1)
imshow(A,m)C1=10:pi:180;C2=floor(20*sin(C1));BW=roipoly(A,C1,C2);B=double(BW)*256;AB=(A+B);subplot(1,2,2)
imshow(AB)
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com程序的運(yùn)行結(jié)果是圖2-19。語(yǔ)句C1=10:pi:180是相當(dāng)于求橫坐標(biāo)值賦給變量C1,pi是Matlab默認(rèn)的圓周率。語(yǔ)句C2=floor(20*sin(C1))是求對(duì)應(yīng)的函數(shù)值。AB是A與B的和。(C1,C2)對(duì)應(yīng)元素組成的點(diǎn)構(gòu)成了一個(gè)正弦曲線,如圖2-19(b)所示。仿照例2-18可以定義并選取其他形狀的曲線圍成的區(qū)域。
(a)(b)
圖2-19曲線圍成的圖像塊選取
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.5圖像增強(qiáng)
圖像增強(qiáng)是對(duì)圖像進(jìn)行操作,得到視覺(jué)效果更好或者更有用的新圖像。圖像增強(qiáng)是在原有圖像的基礎(chǔ)上進(jìn)行的,狹義上的圖像增強(qiáng)就是加強(qiáng)或減弱灰度圖像的明暗對(duì)比度,廣義上的圖像增強(qiáng)除了對(duì)灰度圖像進(jìn)行增強(qiáng)外,還包括彩色圖像增強(qiáng)等。在這一節(jié)中,簡(jiǎn)單介紹廣義的圖像增強(qiáng)。灰度調(diào)整:增加灰度圖像的明暗對(duì)比度,灰度圖像就變得更加清楚。增加明暗對(duì)比度的一種常用方法是灰度調(diào)整方法。灰度調(diào)整方法是基于灰度直方圖的一種圖像增強(qiáng)方法。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com根據(jù)圖像pout.tif顏色分布情況調(diào)整圖像灰度值,增強(qiáng)該圖像的明暗對(duì)比度。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2025/3/2041灰度調(diào)整函數(shù)imadjust
【例2-22】使用函數(shù)imadjust對(duì)圖像進(jìn)行灰度調(diào)整。編寫(xiě)如下程序:A1=imread('pout.tif');B1=imadjust(A1,[0.20.5],[0,1]);A2=imread('cameraman.tif');B2=imadjust(A2,[0,0.2],[0.5,1]);subplot(1,4,1);imshow(A1)subplot(1,4,2);imshow(B1)subplot(1,4,3);imshow(A2)subplot(1,4,4);imshow(B2)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2025/3/2042
(a)pout.tif(b)灰度調(diào)整后(c)cameraman.tif(d)灰度調(diào)整后
圖2-23使用imadjust函數(shù)對(duì)圖像進(jìn)行灰度調(diào)整
程序中語(yǔ)句B1=imadjust(A1,[0.20.5],[0,1])的第1個(gè)參數(shù)是要處理的矩陣,第2個(gè)參數(shù)用來(lái)限制輸入范圍,如果原來(lái)圖像的顏色值是0至255,那么把小于255*0.2的顏色值置為0,把大于255*0.5的值置為255,再把其他介于中間的值映射到第3個(gè)參數(shù)決定的區(qū)間。這個(gè)語(yǔ)句的第3個(gè)參數(shù)為[01],那么該例題就映射到0至255。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com函數(shù)stretchlim(A)是用來(lái)計(jì)算灰度矩陣A的最佳輸入?yún)^(qū)間
函數(shù)histeq能夠自動(dòng)完成圖像灰度調(diào)整,一般用來(lái)增強(qiáng)圖像的灰度對(duì)比度。
函數(shù)brighten增加灰度圖像的亮度
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com彩色圖像增強(qiáng)【例2-26】使用函數(shù)imadjust對(duì)RGB彩色圖像進(jìn)行顏色調(diào)整。
設(shè)計(jì)下面程序:RGB1=imread('flowers.tif');RGB2=imadjust(RGB1,[.2.30;.6.71]);subplot(1,2,1);imshow(RGB1)subplot(1,2,2);imshow(RGB2)(a)flowers.tif(b)顏色調(diào)整后
圖2-30imadjust函數(shù)對(duì)RGB彩色圖像的顏色進(jìn)行調(diào)整數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2025/3/2045
程序運(yùn)行結(jié)果如圖2-30所示。圖像文件flowers.tif存儲(chǔ)著一幅彩色圖像,把該文件讀入后使用imadjust函數(shù)進(jìn)行調(diào)整。調(diào)整后的范圍是默認(rèn)的范圍[000;111],也就是把[0.20.6]之間的紅色映射到[01]之間;把[0.30.7]之間的綠色映射到[01]之間;把[01]之間的藍(lán)色映射到[01]之間。映射后的結(jié)果為圖2-30(b),從圖形的效果上看,紅色與黃色成分有所增強(qiáng),而藍(lán)色成分沒(méi)有變。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-27】使用函數(shù)imadjust對(duì)HSV彩色圖像進(jìn)行顏色調(diào)整。設(shè)計(jì)下面程序:RGB1=imread('flowers.tif');HSV1=rgb2hsv(RGB1);HSV2=imadjust(HSV1,[.2.30;.6.71],[000;110]);HSV3=imadjust(HSV1,[.2.30;.6.71],[000;101]);HSV4=imadjust(HSV1,[.2.30;.6.71],[000;011]);subplot(2,2,1);imshow(HSV1)subplot(2,2,2);imshow(HSV2)subplot(2,2,3);imshow(HSV3)subplot(2,2,4);imshow(HSV4)程序運(yùn)行結(jié)果為圖2-32所示
HSV彩色圖像增強(qiáng)(1)(2)(3)(4)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2.6圖像濾波
濾波是一種應(yīng)用廣泛的圖像處理技術(shù),可以通過(guò)濾波來(lái)強(qiáng)調(diào)或刪除圖像的某些特征。濾波是一種鄰域操作,即處理后的圖像每個(gè)象素值是原來(lái)該象素周?chē)念伾到?jīng)過(guò)某種計(jì)算得到的。2.3節(jié)介紹的圖像鄰域操作就是一種圖像濾波。
濾波函數(shù)imfilter濾波器的定義數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com濾波函數(shù)imfilter函數(shù)imfilter是Matlab中使用較多的濾波函數(shù),基本調(diào)用形式為:B=IMFILTER(A,H,OPTION)其中A為要進(jìn)行濾波的圖像矩陣,可以為多維的彩色圖像矩陣(數(shù)組);H是已經(jīng)定義的濾波算子。這個(gè)函數(shù)本身也是基于鄰域滑動(dòng)設(shè)計(jì)實(shí)現(xiàn)的,所以也涉及到邊界如何填補(bǔ)的問(wèn)題,參數(shù)OPTION可以選擇邊界填補(bǔ)參數(shù)‘symmetric’、‘replicate’、‘circular’等。
【例2-27】使用函數(shù)imfilter對(duì)圖像進(jìn)行濾波,同時(shí)研究該函數(shù)的邊界參數(shù)的意義。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com設(shè)計(jì)下面程序:rgb=imread('D:125.jpg');h=ones(5,5)/25;rgb1=imfilter(rgb,h);rgb2=imfilter(rgb1,h,'replicate');subplot(1,3,1),imshow(rgb),title('Original')subplot(1,3,2),imshow(rgb1),title('Filtered')subplot(1,3,3),imshow(rgb2),title('boundaryreplication')
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-28】使用函數(shù)imfilter對(duì)圖像進(jìn)行濾波,分析幾個(gè)濾波器的區(qū)別。設(shè)計(jì)下面程序,程序運(yùn)行結(jié)果顯示在圖2-34中。
rgb=imread('D:003.bmp');h1=[000.00000.00210.00420.19580.19790.20000.19790.19580.00420.00210.000000];h2=[121000-1-2-1];h3=[0.16670.66670.16670.6667-3.33330.66670.16670.66670.1667];rgb1=imfilter(rgb,h1);rgb2=imfilter(rgb,h2);rgb3=imfilter(rgb,h3);
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.comsubplot(2,2,1),imshow(rgb),title('原圖像')subplot(2,2,2),imshow(rgb1),title('運(yùn)動(dòng)濾波')subplot(2,2,3),imshow(rgb2),title('水平邊緣增強(qiáng)')subplot(2,2,4),imshow(rgb3),title('拉普拉斯濾波')由于3個(gè)濾波器的構(gòu)造不同,所以滑動(dòng)濾波后的效果就不同。原圖像是自繪的圖像,背景色為白色,有三個(gè)線框矩形交疊在一起,左下角與右上角各有一個(gè)黑色填充圓形。運(yùn)動(dòng)濾波后圖像在接近水平的方向上變寬,并且模糊。水平邊緣增強(qiáng)濾波把背景變成了黑色,垂直邊緣消失,只剩下水平邊。拉普拉斯濾波后背景變成黑色,兩個(gè)圓形的內(nèi)部沒(méi)有改變顏色,不過(guò)圓形邊緣變成了白色。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖2-35為了研究h1的工作原理,在圖2-34(a)上截取一個(gè)小圖像“”,對(duì)該小圖像實(shí)行imfilter濾波操作(算子為h1),操作前后的數(shù)據(jù)在中。從這些數(shù)據(jù)不難看出圖像縱向邊緣拓寬變淺的原因。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com濾波器的定義fspecial函數(shù)生成線性空間濾波器
可以使用Matlab中的函數(shù)fspecial(T,P)產(chǎn)生一個(gè)由T指定的二維線性濾波器。參數(shù)T可以在下面選項(xiàng)中選取。'average'均值濾波器'disk'圓形均值濾波器'gaussian'高斯低通濾波器'laplacian'二維拉普拉斯濾波器'log'高斯拉普拉斯濾波器'motion'運(yùn)動(dòng)濾波器'prewitt'Prewitt水平邊緣增強(qiáng)濾波器'sobel'Sobel水平邊緣增強(qiáng)濾波器
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com
H=fspecial('disk',r)中,r表示圓形均值濾波器的半徑,濾波器的大小為2r+1的正方形;輸入命令fspecial('disk',3),得到下面圓形均值濾波器:00.00030.01100.01720.01100.000300.00030.02450.03540.03540.03540.02450.00030.01100.03540.03540.03540.03540.03540.01100.01720.03540.03540.03540.03540.03540.01720.01100.03540.03540.03540.03540.03540.01100.00030.02450.03540.03540.03540.02450.000300.00030.01100.01720.01100.00030
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com拉普拉斯濾波器如果把圖像作為二元函數(shù),那么函數(shù)的拉普拉斯算子定義為:數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.comfspecial('laplacian',ALPHA)產(chǎn)生的濾波器
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com非線性空間濾波
非線性濾波也是基于鄰域操作的,但是不象線性濾波那樣,濾波器與對(duì)應(yīng)元素相乘然后相加。非線性濾波不再用線性組合的方法得到新的元素,使用的是統(tǒng)計(jì)的方法或非線性組合的方法。fun=inline('median(x(:))');B=nlfilter(A1,[33],fun);median(x(:))這種排序取中值操作就是一種非線性濾波操作。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com其實(shí),Matlab提供了函數(shù)medfilt2()專(zhuān)門(mén)進(jìn)行二維中值濾波?!纠?-29】使用函數(shù)medfilt2進(jìn)行二維中值濾波。設(shè)計(jì)如下程序:A=imread('D:005.bmp');A1=rgb2gray(A);B=medfilt2(A1);subplot(1,2,1)imshow(A)subplot(1,2,2)imshow(B)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例2-30】使用函數(shù)ordfilt2進(jìn)行排序?yàn)V波。設(shè)計(jì)如下程序:A=imread('D:005.bmp');A1=rgb2gray(A);order=1;domain=[1001000000001001];B=ordfilt2(A1,order,domain);subplot(1,2,1);imshow(A)subplot(1,2,2);imshow(B)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com第三章圖像代數(shù)運(yùn)算與
邏輯運(yùn)算
3.1圖像的加減乘除運(yùn)算3.2圖像的特征值與奇異值
3.3圖像邏輯運(yùn)算
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com3.1圖像的加減乘除運(yùn)算
圖像加減運(yùn)算圖像的加減運(yùn)算實(shí)質(zhì)上就是兩個(gè)矩陣或者三維數(shù)組進(jìn)行加減運(yùn)算。
【例3-3】利用矩陣的加減運(yùn)算為圖像添加背景。A=imread('D:\0043.jpg');B=imread('D:\125.jpg');s1=size(A);s2=size(B);m=s2(1);n=s2(2);A1=imresize(A,[mn]);A2=double(A1);B1=double(B);C=A2+B1;C1=uint8(C);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(C1)合理的選擇兩個(gè)圖像,或者先對(duì)圖像進(jìn)行處理,然后把兩個(gè)圖象相加,使一個(gè)圖象成為背景。左面程序就是把圖像125.jpg作為背景。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com程序的運(yùn)行結(jié)果為圖3-3。程序中,為了把兩個(gè)圖像變?yōu)榇笮∠嗤?,使用了語(yǔ)句A1=imresize(A,[mn])。語(yǔ)句C1=uint8(C)是為了繪圖才使用的,作者在實(shí)驗(yàn)時(shí)發(fā)現(xiàn)不使用語(yǔ)句C1=uint8(C),程序繪制不出圖3-3(c)。
前景圖0043.jpg(b)背景圖125.jpg(c)合成圖像
圖3-3為圖像添加背景
【思考題】如何修改上面例3-3中的程序,使背景圖象清楚一些。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-4】動(dòng)畫(huà)效果。A=imread('D:\0010.jpg');s=size(A);m=s(1),n=s(2);B=zeros(m,n);A1=double(A);fori=1:10:255B(100:250,250:380)=i;A1(:,:,3)=A1(:,:,3)-B;A2=uint8(A1);imshow(A2)end程序中,語(yǔ)句B(100:250,250:380)=i是把矩陣B中的一塊賦值為i,隨著i的增加,矩陣B中的這一塊的值也在增加。然后利用語(yǔ)句A1(:,:,3)=A1(:,:,3)-B讓花附近的藍(lán)顏色逐漸減少。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com(a)i=1(b)i=150(c)i=250圖3-4圖像局部塊藍(lán)色逐漸消失【思考題】如何修改上面例3-4中的程序,使花附近的綠顏色逐漸漸少。
程序運(yùn)行結(jié)果是一個(gè)花顏色逐漸改變的動(dòng)畫(huà),為了方便觀察分析,取其中幾幀放在圖3-4中。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像的乘除運(yùn)算
圖像的乘除運(yùn)算主要指圖像矩陣與常數(shù)進(jìn)行乘除運(yùn)算、圖像矩陣與圖像矩陣對(duì)應(yīng)元素進(jìn)行乘除運(yùn)算、圖像矩陣與圖像矩陣進(jìn)行矩陣乘法運(yùn)算等。1圖像矩陣與常數(shù)進(jìn)行乘除運(yùn)算圖像矩陣與常數(shù)進(jìn)行乘除運(yùn)算就相當(dāng)于把矩陣所有元素都擴(kuò)大或縮小一定的倍數(shù)。當(dāng)矩陣(元素)乘以大于1的數(shù)時(shí),圖像亮度增加;乘以小于1的數(shù)時(shí),圖像變暗。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com2圖像矩陣與圖像矩陣進(jìn)行逐元素對(duì)應(yīng)乘除運(yùn)算在Matlab中,兩個(gè)數(shù)組進(jìn)行逐元素對(duì)應(yīng)相乘使用語(yǔ)句A.*B,即在前一個(gè)數(shù)組的右下角加上一個(gè)點(diǎn)。這種乘法要求A與B兩個(gè)數(shù)組維數(shù)相同,運(yùn)算完后得到相同維數(shù)的數(shù)組。在這本書(shū)中,我們把這種乘法叫做矩陣(元素)對(duì)應(yīng)相乘。
3兩個(gè)圖像矩陣按照數(shù)學(xué)上定義的乘法進(jìn)行運(yùn)算兩個(gè)圖像矩陣按照數(shù)學(xué)上定義的乘法進(jìn)行運(yùn)算以后,得到的新圖像已經(jīng)完全失去了原圖像的形狀,得到的新圖像往往是不可思議的。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-5】觀察分析圖像矩陣乘以或除以常數(shù)后圖像亮度的改變。A=imread('D:\0010.jpg');A1=double(A);A2=A1*1.5;A3=A1/1.5;A2=uint8(A2);A3=uint8(A3);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(A2)subplot(1,3,3);imshow(A3)原圖像
(b)乘以1.5后
(c)除以1.5后
圖3-5圖像與常數(shù)乘除可以改變圖像的亮度
設(shè)計(jì)左面程序,程序運(yùn)行結(jié)果是圖3-5。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-6】利用矩陣對(duì)應(yīng)相乘把兩個(gè)圖像合成在一起。A=imread('D:\0045.jpg');B=imread('D:\0041.jpg');s=size(A);m=s(1),n=s(2);B1=imresize(B,[mn]);A=double(A);C=double(B1);D=A.*C/128;D=uint8(D);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(D)
設(shè)計(jì)左面程序,實(shí)現(xiàn)兩個(gè)矩陣對(duì)應(yīng)相乘運(yùn)算。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com
程序運(yùn)行結(jié)果如圖3-6所示。
(a)圖像0045.jpg(b)圖像0041.jpg(c)對(duì)應(yīng)相乘以后圖3-6圖像對(duì)應(yīng)元素相乘得到新圖像的效果
程序中語(yǔ)句B1=imresize(B,[mn])是為了把數(shù)組B變?yōu)锳一樣大??;語(yǔ)句D=A.*C/128中除以128是為了縮小乘積元素的值;使用語(yǔ)句A=double(A)是把數(shù)組元素變?yōu)殡p精度數(shù)便于計(jì)算;使用語(yǔ)句D=uint8(D)是為了顯示的需要。圖3-6中實(shí)現(xiàn)的合成效果比較好,加法運(yùn)算出現(xiàn)不了這個(gè)效果。一般情況下,乘法能夠保留黑色,加法能夠保留白色?!舅伎碱}】為什么一般情況下,乘法能夠保留黑色,加法能夠保留白色?
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-7】利用矩陣乘法計(jì)算并且比較手寫(xiě)數(shù)字圖像乘積的特征。
A=imread('D:\00.jpg');B=imread('D:\11.jpg');s=size(A);m=s(1),n=s(2);B1=imresize(B,[nm]);A1=double(A);B2=double(B1);C(:,:,1)=(A1(:,:,1)*B2(:,:,1))/(160*n);C(:,:,2)=(A1(:,:,2)*B2(:,:,2))/(160*n);C(:,:,3)=(A1(:,:,3)*B2(:,:,3))/(160*n);C=uint8(C);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(C)設(shè)計(jì)左面程序:數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com利用上面程序,更換讀入的圖像,可以得到圖3-7所示圖形。(a)實(shí)驗(yàn)用的4個(gè)圖像(b)一個(gè)0與一個(gè)1的乘積
(c)一個(gè)0與另一個(gè)0的乘積(d)一個(gè)1與另一個(gè)1的乘積
圖3-7不同圖像實(shí)行矩陣乘法以后得到的乘積圖像比較在這個(gè)例題中,完全可以先把圖像變?yōu)榛叶葓D像。這樣的話,就可以簡(jiǎn)化程序。不過(guò),上面程序是針對(duì)任意彩色圖像編寫(xiě)的,所以可以使用該程序?qū)ζ渌噬珗D像進(jìn)行實(shí)驗(yàn)??梢岳美?-7的方法對(duì)手寫(xiě)數(shù)字與手寫(xiě)漢字等進(jìn)行識(shí)別。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com3.2圖像的特征值與奇異值
圖像矩陣的特征值1圖像矩陣特征值矩陣特征值是這樣定義的:設(shè)A是[nn]矩陣,如果數(shù)λ與n維非零向量X滿(mǎn)足方程(3-1)則稱(chēng)數(shù)λ為矩陣A的特征值,稱(chēng)非零向量X為矩陣A的特征向量。
在計(jì)算數(shù)學(xué)中,一般用迭代的方法求取矩陣的特征值。Matlab提供了求取特征值的函數(shù)eig(A),其中A是參數(shù),是要求取特征值的矩陣。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-9】比較相近圖像的特征值。
編寫(xiě)下面程序:k=input('請(qǐng)輸入文件名:');A=imread(k);s=size(A);s2=s(2);A1=rgb2gray(A);A2=double(A1);A3=imresize(A2,[s2s2]);T=eig(A3);T'程序的運(yùn)行結(jié)果是首先在命令窗口顯示:“請(qǐng)輸入文件名:”,然后在這個(gè)提示后面輸入’D:\0.jpg’,按Enter鍵,則可以計(jì)算出0.bmp(調(diào)整為方陣后)的特征值。因?yàn)閳D像0.bmp有白色邊緣,所以有一些行或者列線性相關(guān),求得的特征值中排在后面的有一些是0。比較起來(lái)1的手寫(xiě)圖像的特征值為0的比較多,因?yàn)?的手寫(xiě)圖像相同的行或者列比較多。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com(b)(c)(d)圖3-84個(gè)手寫(xiě)數(shù)字圖像(a)的文件名為0.bmp,(b)的文件名為00.bmp,(c)的文件名為1.bmp,(d)的文件名為11.bmp從數(shù)值上能夠觀察出幾個(gè)圖像的特征值的差別。為了更準(zhǔn)確的分析幾個(gè)圖像特征值之間的相近與差別,編寫(xiě)左面程序:fori=1:4k=input('請(qǐng)輸入文件名:');A=imread(k);s=size(A);A1=double(A);A2=imresize(A1,[s(2)s(2)]);T=eig(A2);T1=abs(T);subplot(4,1,i)plot(T1)end數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com程序運(yùn)行時(shí),需要四次輸入4個(gè)圖像文件名。程序的運(yùn)行結(jié)果如圖3-9所示。圖3-9中的4個(gè)曲線從上到下分別對(duì)應(yīng)著圖像0.bmp、00.bmp、1.bmp、11.bmp,是把這4個(gè)圖像的特征值求出,然后取絕對(duì)值(復(fù)數(shù)取模),最后把絕對(duì)值繪制出來(lái)。從圖3-9可以看出兩個(gè)0的特征值分布曲線比較接近,兩個(gè)1的特征值分布曲線比較接近,所以可以使用這種方法對(duì)手寫(xiě)數(shù)字圖像進(jìn)行識(shí)別。語(yǔ)句k=input('請(qǐng)輸入文件名:')運(yùn)行后,函數(shù)input將在命令窗口顯示提示行“請(qǐng)輸入文件名:”,輸入文件名時(shí),要把路徑與文件名加上單引號(hào)。
圖3-9四個(gè)手寫(xiě)數(shù)字圖像的特征值分布
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com
2圖像矩陣特征向量在式3-1中,X就是矩陣的特征向量。因?yàn)橐粋€(gè)方矩陣的特征值個(gè)數(shù)等于該矩陣的階數(shù),即[nn]矩陣的特征值有n個(gè),所以特征向量至少有n個(gè)。求特征值時(shí),需要用二維方陣,在研究特征向量時(shí)也必須把圖像化為灰度圖像,或者單獨(dú)使用彩色圖像的紅色陣、綠色陣、藍(lán)色陣等。
【例3-10】求圖像矩陣的特征向量。A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);[GT]=eig(A2);G使用左面程序可以求出并且在命令窗口顯示出圖像的特征向量。變量G中存儲(chǔ)的就是灰度圖像A1的特征向量。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com圖像矩陣的奇異值
矩陣的奇異值是這樣定義的:設(shè)m×n矩陣A的秩為r,則必存在一個(gè)m×m階正交矩陣Qm和一個(gè)n×n階正交矩陣Qn,使
QmTAQn=S右端矩陣S為n×n階對(duì)角矩陣,我們稱(chēng)S的主對(duì)角元為A的奇異值。矩陣的奇異值都是實(shí)數(shù),并且矩陣不必須是方陣。圖像矩陣的奇異值是圖像的一個(gè)比較重要的特征,在圖象識(shí)別研究中有著廣泛的應(yīng)用。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com【例3-13】計(jì)算人臉圖像的奇異值。
設(shè)計(jì)如下程序,目的是給出一個(gè)人臉圖像的5種變化,然后求這5個(gè)圖像的奇異值,觀察奇異值的變化情況。A=imread('D:\0550.jpg');A1=double(A);A2=imrotate(A,2);A3=imadjust(A,[00.5],[0.51]);A4=A1*1.8;A5=imnoise(A);A3=uint8(A3);A4=uint8(A4);imwrite(A1,'0551.jpg');imwrite(A2,'0552.jpg');imwrite(A3,'0553.jpg');imwrite(A4,'0554.jpg');subplot(1,5,1);imshow(A);subplot(1,5,2);imshow(A2);subplot(1,5,3);imshow(A3);subplot(1,5,4);imshow(A4);subplot(1,5,5);imshow(A5)數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com程序的運(yùn)行結(jié)果是圖3-11。
(a)(b)(c)(d)(e)(a)為原圖像,(b)為旋轉(zhuǎn)2度后圖像,(c)為顏色調(diào)整后圖像(d)為擴(kuò)大1.8倍后圖像,(e)為加入噪音后圖像
圖3-11一個(gè)人臉圖像的5種改變
函數(shù)imwrite(A1,'0551.jpg')是向硬盤(pán)存儲(chǔ)文件用的,該語(yǔ)句把數(shù)組A1存儲(chǔ)為0551.jpg,默認(rèn)是存儲(chǔ)在Matlab的work子目錄中。該例題是存儲(chǔ)在C:\MATLAB6p5\work中。在程序運(yùn)行之前,機(jī)器中沒(méi)有0551-0554.jpg這幾個(gè)文件,程序運(yùn)行后,這幾個(gè)文件才被生成并且存儲(chǔ)在C:\MATLAB6p5\work中。函數(shù)imnoise是用來(lái)產(chǎn)生噪音的,為了實(shí)驗(yàn)的需要,在圖像中加入噪音。
數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:62886210@163.com處理完這幾個(gè)圖像后,接著就求取這5個(gè)圖像的奇異值,并且進(jìn)行比較。使用下面程序:fori=1:5k=i-1;k1=int2str(k);k2=strcat('C:\MATLAB6p5\work\055',k1,'.jpg');A=imread(k2);A1=imresize(A,0.5);A2=double(A1);A3=rgb2gray(A2);T=svd(A3);subplot(2,3,i)plot(T(2:20))end程序使用循環(huán)語(yǔ)句一次性完成了求5個(gè)圖像奇異值的工作。數(shù)字圖像處理廖朝陽(yáng)TEL:6169976Email:628862
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高分秘技2024年CPMM試題及答案
- 國(guó)際冷鏈物流解決方案試題與答案
- 2017年遼寧省鞍山市中考化學(xué)試卷(解析)
- 餐飲美學(xué)基礎(chǔ) 課件全套 模塊1-4 餐飲美學(xué)概論 -餐廳民俗美學(xué)
- 真人分享2024年CPMM考試經(jīng)驗(yàn)試題及答案
- 燙傷急救與護(hù)理課件
- 植物對(duì)環(huán)境變化的適應(yīng)試題及答案
- 江蘇揚(yáng)州歷年中考作文題(2001-2024)
- 高效學(xué)習(xí)2024年CPMM的法門(mén)試題及答案
- SCMP全真模擬試題及答案分享
- 腹股溝疝區(qū)域神經(jīng)阻滯(“麻醉”文檔)共30張
- MSBR工藝設(shè)計(jì)(含計(jì)算書(shū))
- 久其軟件使用
- 配電房檢查保養(yǎng)記錄表
- 公安派出所建筑外觀形象設(shè)計(jì)規(guī)范1
- 一年級(jí)語(yǔ)文部編版上冊(cè)《ie üe er》課件
- 人民幣教具正反面完美打印版
- 勤奮與懶惰小學(xué)心理健康課教案——告別懶惰.doc
- 消費(fèi)者權(quán)益保護(hù)法培訓(xùn)課件
- 實(shí)現(xiàn)秸稈發(fā)酵飼料產(chǎn)業(yè)化--秸稈發(fā)酵飼料技術(shù)原理與應(yīng)用示范
- 膜分離工程第二章:膜材料與制備
評(píng)論
0/150
提交評(píng)論