圖像代數(shù)運算與邏輯運算課件_第1頁
圖像代數(shù)運算與邏輯運算課件_第2頁
圖像代數(shù)運算與邏輯運算課件_第3頁
圖像代數(shù)運算與邏輯運算課件_第4頁
圖像代數(shù)運算與邏輯運算課件_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章圖像代數(shù)運算與

邏輯運算

3.1圖像的加減乘除運算3.2圖像的特征值與奇異值

3.3圖像邏輯運算

例3-1利用矩陣的加減運算增加或減少圖像中的某種顏色成分。A=imread('0045.jpg');s=size(A);B=double(A);C(:,:,1)=B(:,:,1)+B(:,:,2);C(:,:,2)=B(:,:,2);C(:,:,3)=B(:,:,3)-B(:,:,2);fori=1:s(1)forj=1:s(2)fork=1:s(3)ifC(i,j,k)<0C(i,j,k)=0;endifC(i,j,k)>255C(i,j,k)=255;endendendendC=uint8(C);subplot(1,2,1);imshow(A)subplot(1,2,2);imshow(C)3.1圖像的加減乘除運算例3-2A=imread('0045.jpg');s=size(A);B=double(A);Q1=zeros(s(1),s(2));Q2=zeros(s(1),s(2));form=s(1):-1:1forn=s(2):-1:1Q1(m,n)=m;Q2(m,n)=n;endendC(:,:,1)=B(:,:,1);C(:,:,2)=B(:,:,2)-Q2;C(:,:,3)=B(:,:,3)+Q1/3;fori=1:s(1)forj=1:s(2)fork=1:s(3)ifC(i,j,k)<0C(i,j,k)=0;endifC(i,j,k)>255C(i,j,k)=255;endendendendC=uint8(C);subplot(1,2,1);imshow(A)subplot(1,2,2);imshow(C)程序的運行結果為圖3-3。程序中,為了把兩個圖像變?yōu)榇笮∠嗤?,使用了語句A1=imresize(A,[mn])。語句C1=uint8(C)是為了繪圖才使用的,作者在實驗時發(fā)現(xiàn)不使用語句C1=uint8(C),程序繪制不出圖3-3(c)。

前景圖0043.jpg(b)背景圖125.jpg(c)合成圖像

圖3-3為圖像添加背景

【思考題】如何修改上面例3-3中的程序,使背景圖象清楚一些。

【例3-4】動畫效果。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程序中,語句B(100:250,250:380)=i是把矩陣B中的一塊賦值為i,隨著i的增加,矩陣B中的這一塊的值也在增加。然后利用語句A1(:,:,3)=A1(:,:,3)-B讓花附近的藍顏色逐漸減少。

(a)i=1(b)i=150(c)i=250圖3-4圖像局部塊藍色逐漸消失【思考題】如何修改上面例3-4中的程序,使花附近的綠顏色逐漸漸少。

程序運行結果是一個花顏色逐漸改變的動畫,為了方便觀察分析,取其中幾幀放在圖3-4中。

2圖像矩陣與圖像矩陣進行逐元素對應乘除運算在Matlab中,兩個數(shù)組進行逐元素對應相乘使用語句A.*B,即在前一個數(shù)組的右下角加上一個點。這種乘法要求A與B兩個數(shù)組維數(shù)相同,運算完后得到相同維數(shù)的數(shù)組。在這本書中,我們把這種乘法叫做矩陣(元素)對應相乘。

3兩個圖像矩陣按照數(shù)學上定義的乘法進行運算兩個圖像矩陣按照數(shù)學上定義的乘法進行運算以后,得到的新圖像已經(jīng)完全失去了原圖像的形狀,得到的新圖像往往是不可思議的。

【例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ù)乘除可以改變圖像的亮度

設計左面程序,程序運行結果是圖3-5。

【例3-6】利用矩陣對應相乘把兩個圖像合成在一起。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)

設計左面程序,實現(xiàn)兩個矩陣對應相乘運算。【例3-7】利用矩陣乘法計算并且比較手寫數(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)利用上面程序,更換讀入的圖像,可以得到圖3-7所示圖形。(a)實驗用的4個圖像(b)一個0與一個1的乘積

(c)一個0與另一個0的乘積(d)一個1與另一個1的乘積

圖3-7不同圖像實行矩陣乘法以后得到的乘積圖像比較在這個例題中,完全可以先把圖像變?yōu)榛叶葓D像。這樣的話,就可以簡化程序。不過,上面程序是針對任意彩色圖像編寫的,所以可以使用該程序對其他彩色圖像進行實驗??梢岳美?-7的方法對手寫數(shù)字與手寫漢字等進行識別。

3.2圖像的特征值與奇異值

圖像矩陣的特征值1圖像矩陣特征值矩陣特征值是這樣定義的:設A是[nn]矩陣,如果數(shù)λ與n維非零向量X滿足方程(3-1)則稱數(shù)λ為矩陣A的特征值,稱非零向量X為矩陣A的特征向量。

Matlab提供了求取特征值的函數(shù)eig(A),其中A是參數(shù),是要求取特征值的矩陣。

(b)(c)(d)圖3-84個手寫數(shù)字圖像(a)的文件名為0.bmp,(b)的文件名為00.bmp,(c)的文件名為1.bmp,(d)的文件名為11.bmp從數(shù)值上能夠觀察出幾個圖像的特征值的差別。為了更準確的分析幾個圖像特征值之間的相近與差別,編寫左面程序:fori=1:4k=input('請輸入文件名:');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程序運行時,需要四次輸入4個圖像文件名。程序的運行結果如圖3-9所示。圖3-9中的4個曲線從上到下分別對應著圖像0.bmp、00.bmp、1.bmp、11.bmp,是把這4個圖像的特征值求出,然后取絕對值(復數(shù)取模),最后把絕對值繪制出來。從圖3-9可以看出兩個0的特征值分布曲線比較接近,兩個1的特征值分布曲線比較接近,所以可以使用這種方法對手寫數(shù)字圖像進行識別。語句k=input('請輸入文件名:')運行后,函數(shù)input將在命令窗口顯示提示行“請輸入文件名:”,輸入文件名時,要把路徑與文件名加上單引號。

圖3-9四個手寫數(shù)字圖像的特征值分布

2圖像矩陣特征向量在式3-1中,X就是矩陣的特征向量。因為一個方矩陣的特征值個數(shù)等于該矩陣的階數(shù),即[nn]矩陣的特征值有n個,所以特征向量至少有n個。求特征值時,需要用二維方陣,在研究特征向量時也必須把圖像化為灰度圖像,或者單獨使用彩色圖像的紅色陣、綠色陣、藍色陣等。

【例3-10】求圖像矩陣的特征向量。A=imread('D:\shizi1.bmp');A1=rgb2gray(A);A2=double(A1);[GT]=eig(A2);G使用左面程序可以求出并且在命令窗口顯示出圖像的特征向量。變量G中存儲的就是灰度圖像A1的特征向量。【例3-13】計算人臉圖像的奇異值。設計如下程序,目的是給出一個人臉圖像的5種變化,然后求這5個圖像的奇異值,觀察奇異值的變化情況。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)程序的運行結果是圖3-11。(a)(b)(c)(d)(e)(a)為原圖像,(b)為旋轉2度后圖像,(c)為顏色調整后圖像(d)為擴大1.8倍后圖像,(e)為加入噪音后圖像

圖3-11一個人臉圖像的5種改變

函數(shù)imwrite(A1,'0551.jpg')是向硬盤存儲文件用的,該語句把數(shù)組A1存儲為0551.jpg,默認是存儲在Matlab的work子目錄中。該例題是存儲在C:\MATLAB6p5\work中。在程序運行之前,機器中沒有0551-0554.jpg這幾個文件,程序運行后,這幾個文件才被生成并且存儲在C:\MATLAB6p5\work中。函數(shù)imnoise是用來產(chǎn)生噪音的,為了實驗的需要,在圖像中加入噪音。

3.3圖像邏輯運算

二值圖像邏輯運算【例3-14】使用函數(shù)im2bw()把灰度圖像、索引圖像、RGB圖像等轉化為二值圖像并顯示結果。(level=graythresh(I))

編寫下面程序,運行后的結果如圖3-14所示。

A1=imread('D:\0011.jpg');B1=im2bw(A1,0.39);A2=imread('D:\flower1.bmp');B2=im2bw(A2);A3=imread('D:\125.jpg');B3=im2bw(A3,0.4);subplot(2,3,1);imshow(A1)subplot(2,3,2);imshow(A2)subplot(2,3,3);imshow(A3)subplot(2,3,4);imshow(B1)subplot(2,3,5);imshow(B2)subplot(2,3,6);imshow(B3)

圖像0011.jpg是彩色RGB圖像,flower1.bmp是灰度圖像,125.jpg是索引圖像。(a)圖像0011.jpg(b)圖像flower1.bmp(c)圖像125.jpg

(d)圖像0011的二值圖像(e)圖像flower1的二值圖像(f)圖像125的二值圖像

圖3-14把灰度圖像、索引圖像、RGB圖像等轉化為二值圖像【例3-16】對二值圖像實施膨脹運算。

設計如下程序,結果顯示在圖3-16中。A=imread('C:\MATLAB6p5\work\bc.bmp');B=~A;M=[1;1;1];N=[110];P=[001;010;000];Q=[001;000;100];C1=imdilate(B,M);C2=imdilate(B,N);C3=imdilate(B,P);C4=imdilate(B,Q);subplot(1,5,1);imshow(B)subplot(1,5,2);imshow(C1)subplot(1,5,3);imshow(C2)subplot(1,5,4);imshow(C3)subplot(1,5,5);imshow(C4)

(a)(b)(c)(d)(e)圖3-16二值圖像的膨脹運算

M、N、P、Q是4個算子,M是一個列向量,N是一個行向量。P、Q都是[33]矩陣,P、Q分別為:

算子由0、1構成,有1的位置用來定義算子覆蓋區(qū)域的鄰域。這里的(算子覆蓋)鄰域概念很重要,算子覆蓋時,算子上有1的地方稱為中心點處的鄰域。在對二值圖像進行膨脹運算時,也使用算子在圖像上滑動。如果圖像的算子覆蓋鄰域內有1,那么覆蓋區(qū)域中心的輸出值就為1,也就是新圖像在覆蓋區(qū)域中心的值為1。否則為0。

程序中讀入的圖像bc.bmp是白色背景黑色字體,使用語句B=~A把圖像bc.bmp變?yōu)楹谏尘鞍咨煮w,如圖3-16(a)所示。該圖像是二值圖像,所有數(shù)據(jù)顯示在圖3-17中。字體b與c所在范圍用灰色標出。

圖3-17二值圖像bc.bmp的顏色數(shù)據(jù)

為了節(jié)省篇幅,這里只研究字母b被膨脹后的變化情況。下圖中的4個圖像都是字母b的變化情況。

(a)使用M膨脹后的結果

(b)使用N膨脹后的結果

(c)使用P膨脹后的結果

(d)使用Q膨脹后的結果

下面以圖3-19為例詳細講解二值圖像膨脹運算規(guī)則。圖3-19使用的是算子Q。對于算子Q,只要覆蓋區(qū)域的左下角與右上角至少有一個為1(兩個為1也可以),那么在覆蓋區(qū)域的中心位置的返回值就是1。所以,當算子移動到位置“1”時,因為右上角處顏色值為1,所以在覆蓋區(qū)域中心(5,3)處輸出顏色值1,如圖3-19(b)位置“1”所示。當算子移動到位置“2”時,因為右上角處顏色值為1(其他處為1不起作用),所以在覆蓋區(qū)域中心(8,7)處輸出顏色值1,如圖3-19(b)位置“2”所示。當算子移動到位置“3”時,因為左下角與右上角處顏色值都不為1,所以在覆蓋區(qū)域中心(12,9)處輸出顏色值0,如圖3-19(b)位置“3”所示。

(a)圖像3-16(a)的一部分,即有字母b的那部分,圖3-17左邊的一部分數(shù)據(jù)

(b)圖(a)使用Q膨脹后的部分結果,即3-18(d)的放大。圖3-19二值圖像膨脹運算規(guī)則

其他算子的運算規(guī)則都與上面所述相同。運算結果與原圖像有關,算子形狀與圖像的鄰域情況決定了運算結果。另外,從上面描述情況看,二值圖像膨脹運算本質上是邏輯運算。數(shù)學上,二值圖像膨脹運算可以用集合定義如下:其中,A為原圖像,B為算子。就是上面描述的那種覆蓋操作,是空集,是計算后的輸出值。

2二值圖像腐蝕運算二值圖像腐蝕運算本質上也是邏輯運算,可以用如下數(shù)學定義描述二值圖像腐蝕運算:

其中,A為原圖像,B為算子。Ac是A的補集。是移動覆蓋操作,是空集,是計算后的輸出值。在進行腐蝕運算時,算子移動一下,輸出一個新值賦給算子覆蓋處的中心位置。計算輸出值的方法是:如果算子覆蓋鄰域內圖像像素值有為0的,那么中心位置的輸出值為0,否則為1。根據(jù)上面定義與說明,結合下面例3-17來理解圖像腐蝕運算規(guī)則。

【例3-17】對二值圖像實施腐蝕運算。把3-16中程序語句:C1=imdilate(B,M);C2=imdilate(B,N);C3=imdilate(B,P);C4=imdilate(B,Q);修改為:C1=imerode(B,M);C2=imerode(B,N);C3=imerode(B,P);C4=imerode(B,Q);其他語句不變,程序運行的結果是圖3-20。

圖3-20二值圖像腐蝕運算

程序中的函數(shù)imerode是用來進行腐蝕運算的。腐蝕運算后,原來圖像一般會變細變小。

【例3-18】對二值圖像實施腐蝕運算,并且與膨脹運算進行比較。設計下面程序:A=imread('0370.bmp');B=im2bw(A);B=~B;M=strel('diamond',3);C1=imerode(B,M);C2=imdilate(B,M);subplot(1,3,1);imshow(B)subplot(1,3,2);imshow(C1)subplot(1,3,3);imshow(C2)

程序運行結果如圖3-21所示。

(a)原圖像(b)腐蝕后的圖像(c)膨脹后的圖像圖3-21二值圖像腐蝕與膨脹比較

函數(shù)strel是專門用來生成算子模板的,strel('diamond',3)生成的算子模板為:0001000001110001111101111111011111000111000001000函數(shù)strel還可以生成‘square’、‘line’、‘disk’、‘periodicline’、‘pair’、‘octagon’等模板。該算子模板呈菱形結構,一共有25個1。該算子覆蓋區(qū)域呈菱形。3灰度圖像膨脹與腐蝕灰度圖像膨脹腐蝕定義分平坦與非平坦兩種,關于灰度圖像非平坦膨脹腐蝕定義,可以參考其他資料。這里提到灰度圖像膨脹腐蝕都是指平坦的灰度圖像膨脹腐蝕。灰度圖像膨脹腐蝕的定義與二值圖像膨脹腐蝕的定義有些區(qū)別,一般定義灰度圖像膨脹為定義灰度圖像腐蝕為灰度圖像膨脹實質上是求鄰域內最大值作為輸出;灰度圖像腐蝕是求鄰域內最小值作為輸出。鄰域仍然是由各種算子模板來定義的?!纠?-19】對灰度圖像實施膨脹腐蝕運算。設計下面程序A=imread('D:\flower1.bmp');A1=rgb2gray(A);se=strel('square',3);A2=imdilate(A1,se);A3=imerode(A1,se);subplot(1,3,1),imshow(A1);subplot(1,3,2),imshow(A2);subplot(1,3,3),imshow(A3);程序運行結果是圖3-22(見下頁圖)。因為膨脹是取最大值,所以膨脹后圖象白色成分增多;腐蝕取最小值,所以黑色成分增加。

(a)原圖像(b)膨脹

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論