圖形圖像處理-圖像的幾何變換Matlab實(shí)現(xiàn)_第1頁(yè)
圖形圖像處理-圖像的幾何變換Matlab實(shí)現(xiàn)_第2頁(yè)
圖形圖像處理-圖像的幾何變換Matlab實(shí)現(xiàn)_第3頁(yè)
圖形圖像處理-圖像的幾何變換Matlab實(shí)現(xiàn)_第4頁(yè)
圖形圖像處理-圖像的幾何變換Matlab實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、湖南商學(xué)院課程設(shè)計(jì) 課程名稱圖形圖像處理題目圖像的幾何變換系部數(shù)學(xué)與統(tǒng)計(jì)學(xué)院專業(yè)信息與計(jì)算科學(xué)班級(jí)信息與計(jì)算科學(xué)1301學(xué)號(hào)學(xué)生姓名任課教師王勇2016年月日目錄第一章緒論§1 非彩色圖像在Matlab中的矩陣 (3§2 彩色圖像在Matlab中的矩陣 (4第二章圖像的鏡像變換§1 圖像的水平方向鏡像 (5§2 圖像的垂直方向鏡像 (8第三章圖像的旋轉(zhuǎn)變換§1 圖像的旋轉(zhuǎn)變換 (10第四章圖像的轉(zhuǎn)置變換§1 非彩色圖像的轉(zhuǎn)置變換 (13§3 彩色圖像的轉(zhuǎn)職變換 (13第五章圖像的縮放變換§1 雙線性內(nèi)插法簡(jiǎn)介 (1

2、5§2 圖像的縮放 (16第六章圖像的平移變換§1 圖像的平移變換 (19第一章 緒論§1 非彩色圖像在Matlab 中的矩陣非彩色圖像可以定義為一個(gè)二維函數(shù)(,f x y ,其中x 和y 是Euclid 空間(平面坐標(biāo),任意一個(gè)二元組(,x y 處的值f 稱為該點(diǎn)處的強(qiáng)度或者灰度。當(dāng)x ,y 和灰度值f 是離散的數(shù)值時(shí),我們稱改圖像為數(shù)字圖像。每一個(gè)非彩色圖像在Matlab 中都是一個(gè)二維矩陣n m A ,而我們知道變換是指集合自身到自身的映射,所以對(duì)非彩色圖像的變換其實(shí)質(zhì)就是對(duì)二維矩陣n m A 進(jìn)行變換得到另一個(gè)二維矩陣n m B 的過程。例如圖像1.1 圖

3、1.1其在Matlab 中的表示:>> A=imread('Fig3.24.jpg' >> size(Aans = 298 252 %A 是一個(gè)298行252列的矩陣。§2 彩色圖像在Matlab 中的矩陣不同于非彩色圖像,每一個(gè)彩色圖像在Maltab 中都是三維矩陣n m s A 。例如圖像2.1 圖2.1>> A=imread('Koala.jpg' >> size(A ans =768 1024 3A 是一個(gè)三維矩陣,768行1024列3層,3層是RGB 三色的數(shù)值。示意圖:第二章 圖像的鏡像變換&

4、#167;1圖像的水平方向鏡像1.1 對(duì)于非彩色圖像實(shí)現(xiàn)水平鏡像操作,我們每次只需提取一列,使其與對(duì)稱的列交換位置即可:1122j i j i ni nj a a a a a a 其中1j m i =-+原圖像經(jīng)過變換后為:1,1,11,12,2,12,1,1,1 m m m m n m n m n a a a a a a A a a a -=例1:對(duì) 132 152 210 99 172 10 23 110 5進(jìn)行水平方向鏡像。132 99 23 A =, 152 172, 110A A =, 210 10, 5A A =210 152 132 10 172 99 5 110 23A = 1

5、.2 對(duì)于彩色圖像的水平鏡像類比二維的操作,我們每次按行選取一個(gè)面,將每個(gè)面與其列對(duì)稱的位置交換即可:1,32,3,31,32,3,31,22,2,21,22,2,21,12,1,11,12,1,1 j j n j i i n i j j n j i i n i i i n i j j n j a a a a a a a a a a a a a a a a a a = 其中1j m i =-+原圖像經(jīng)過變換后得:1,2,3223231323311321313122221,2,22222211221212112111112111,2,122121 , , n m m nm n m m nm n

6、n m m nm n n a a a a a a a a a A a a a a a a a a a a a a a a a a a a = 111.3 Matlab 實(shí)現(xiàn) Matlab 源程序disp('Horizontal image by inversion;(水平鏡像' str=input('請(qǐng)輸入圖片名稱(例如:Koala.jpg :n','s' imA=imread(str; originalA=size(imA; n=size(originalA; rowA=originalA(1; colA=originalA(2; if n(2

7、=3imB=zeros(rowA,1,3; for i=1:colAimB=imA(:,i,:,imB; end endif n(2=2imB=zeros(rowA,1; for i=1:colAimB=imA(:,i,imB;endendsubplot(1,2,1;imshow(imA;subplot(1,2,2;imshow(imB; Command Window運(yùn)行: §2圖像的垂直方向鏡像2.1 與第一節(jié)類似的對(duì)于非彩色圖像實(shí)現(xiàn)垂直鏡像操作,我們每次只需提取一行,使其與對(duì)稱的列交換位置即可:1212 j j jn i i in a a a a a a 其中1j m i =-+

8、原圖像經(jīng)過變換后為:,1,2,1,11,21,11,11,21, n n n n n n n n a a a a a a A a a a -=2.2 對(duì)于彩色圖像的垂直鏡像我們每次按列選取一個(gè)面,將每個(gè)面與其行對(duì)稱的位置交換即可:,1,3,2,3,3,1,3,2,3,3,1,2,2,2,2,1,2,2,2,2,1,1,2,1,1,1,1,2,1,1 j j j n i i i n j j j n i i i n i i i n j j j n a a a a a a a a a a a a a a a a a a = 其中1j m i =-+原圖像經(jīng)過變換后得:,1,3,2,3,3,1,2,2

9、,2,2,1,1,2,1,12,1,32,2,32,32,1,22,2,22,22,1,12,2,12,11,1,31,2,3 n n n m n n n m n n n m m m m a a a a a a a a a a a a A a a a a a aa a = 1,31,1,21,2,21,21,1,11,2,11,1 m m m a a a a a a a 2.3Matlab實(shí)現(xiàn):Matlab源程序:disp('Vertical image by inversion(垂直鏡像'str=input('請(qǐng)輸入圖片名稱(例如:Koala.jpg:n',&

10、#39;s' imA=imread(str;originalA=size(imA;n=size(originalA;rowA=originalA(1;colA=originalA(2;if n(2=3imB=zeros(1,colA,3;for i=1:rowAimB=imA(i,:,:;imB;endendif n(2=2imB=zeros(1,colA;for i=1:rowAimB=imA(i,:;imB;endendsubplot(2,1,1;imshow(imA;subplot(2,1,2;imshow(imB;CommandWindow運(yùn)行 第三章 圖像的旋轉(zhuǎn)變換§

11、;1 圖像的旋轉(zhuǎn)變換對(duì)于任意n m 的圖像矩陣,我們首先創(chuàng)建一個(gè)假想矩陣,大小是原矩陣對(duì)角線的長(zhǎng)度。原矩陣中的中心點(diǎn)為:00,22col row x y =(處理時(shí)需取整 假想圖像的中心: 00''22x y =(處理時(shí)需取整在原圖中,點(diǎn)(,x y 關(guān)于原點(diǎn)的坐標(biāo):00(,x x y y - 假想圖中,點(diǎn)(','x y 關(guān)于原點(diǎn)的坐標(biāo):00(','x x y y -當(dāng)算法取原矩陣中y 行x 列時(shí)進(jìn)行旋轉(zhuǎn)變換:00'cos sin 'sin cos x x x y y y -=-得到的假想圖中的相對(duì)坐標(biāo)再轉(zhuǎn)化為'y 行

12、9;x 列。這時(shí)把對(duì)應(yīng)的行列賦值于假想圖中:',',y x y x a a = 模型圖3.1.1Matlab源程序disp('旋轉(zhuǎn)變換'str=input('請(qǐng)輸入圖片名稱(例如:Koala.jpg:n','s'theta=input('請(qǐng)輸入角度theta(單位:度;旋轉(zhuǎn)為逆時(shí)針'theta=pi/180*theta;imA=imread(str;originalA=size(imA;n=size(originalA;rowA=originalA(1;colA=originalA(2;maxsize=floor(

13、sqrt(rowA2+colA2;if n(2=2 %如果圖像矩陣是2維,進(jìn)行非彩色圖像旋轉(zhuǎn)B=zeros(maxsize,maxsize;x0=colA/2;y0=rowA/2; %獲取原圖像中心點(diǎn)xe0=maxsize/2;ye0=maxsize/2; %獲取假想圖像中心點(diǎn)for y=1:rowAfor x=1:colAC=cos(theta,-sin(theta;sin(theta,cos(theta*x-x0;y-y0;xe=floor(C(1;ye=floor(C(2;B(ye+ye0,xe+xe0=imA(y,x;endendendif n(2=3; %如果圖像矩陣是3維,進(jìn)行彩色

14、圖像旋轉(zhuǎn)B=zeros(maxsize,maxsize,3;x0=colA/2;y0=rowA/2; %獲取原圖像中心點(diǎn)xe0=maxsize/2;ye0=maxsize/2; %獲取假想圖像中心點(diǎn)for y=1:rowAfor x=1:colAC=cos(theta,-sin(theta;sin(theta,cos(theta*x-x0;y-y0;xe=floor(C(1;ye=floor(C(2;B(ye+ye0,xe+xe0,:=imA(y,x,:;endendendsubplot(1,2,1;imshow(imA;hold onsubplot(1,2,2;imshow(uint8(B;

15、CommandWindow 缺陷分析:輸出圖中出現(xiàn)許多規(guī)則分布的空洞,可知在旋轉(zhuǎn)過程中非整數(shù)的點(diǎn)被化為整數(shù)點(diǎn)時(shí)失去一部分點(diǎn)的灰度值,這些灰度值其實(shí)可以通過插值彌補(bǔ),為了使程序較為簡(jiǎn)單,筆者就沒有進(jìn)行修正。第四章 圖像的轉(zhuǎn)置變換§1 非彩色圖像的轉(zhuǎn)置(Transpose 變換非彩色圖像的轉(zhuǎn)置變換非常簡(jiǎn)單只需把原圖像矩陣轉(zhuǎn)置即可:111212122212m m n n nm a a a a a a A a a a = ,T B A =§2 彩色圖像的轉(zhuǎn)置變換因?yàn)椴噬珗D像是三維矩陣,我們每次進(jìn)行一層的轉(zhuǎn)置,最后可以得到全圖的轉(zhuǎn)置。1,1,11,2,11,12,1,12,2,12,

16、111,1,1,2,1,1 m m T n n n m a a a a a a A A A a a a =1,1,21,2,21,22,1,22,2,22,222,1,2,2,2,2 m m T n n n m a a a a a a A A A a a a =1,1,31,2,31,32,1,32,2,32,333,1,3,2,3,3 m m T n n n m a a a a a a A A A a a a =Matlab 程序disp('Transpose Of A Image'str=input('請(qǐng)輸入圖片名稱(例如:Koala.jpg :n',

17、9;s' imA=imread(str; originalA=size(imA; n=size(originalA; rowA=originalA(1; colA=originalA(2; if n(2=3imB=zeros(colA,rowA,3;imB(:,:,1=imA(:,:,1'imB(:,:,2=imA(:,:,2'imB(:,:,3=imA(:,:,3' endif n(2=2imB=imA'endsubplot(1,2,1;imshow(imA;subplot(1,2,2;imshow(uint8(imB; CommandWindow 第

18、五章 圖像的縮放變換§1 雙線性內(nèi)插法簡(jiǎn)介在放大、收縮等變換和幾何校正的任務(wù)重內(nèi)插是被廣泛應(yīng)用的基本工具。這一節(jié)我們主要介紹雙線性內(nèi)插法,為接下來圖像的縮放做鋪墊。在雙線性內(nèi)插法中,我們用4個(gè)最近鄰去估計(jì)給定位置的灰度。令x ,y 表示想要賦以灰度值的位置,令v 表示灰度值。對(duì)于雙線性內(nèi)插,類似線性插值,我們同時(shí)對(duì)兩個(gè)自變量進(jìn)行插值,賦值公如下:11212212212121211222211121212121(,(,(,(,(,(f x y f x y f x y x x y y x x y y x x y y x x y y f x y f x y x x y y x x y y

19、x x y y x x y y -+-+-+-事實(shí)上:考慮如下坐標(biāo)系下四點(diǎn): 要通過11(,x y ,12(,x y ,21(,x y ,22(,x y 四個(gè)點(diǎn)的數(shù)值11(,f x y ,12(,f x y ,21(,f x y ,22(,f x y 來表示(,f x y 的值。我們先對(duì)x 做2個(gè)數(shù)據(jù)的拉格朗日插值:回憶兩個(gè)點(diǎn)時(shí)的拉格朗日插值(線性插值:12212121(x x x xf x f x f x x x x x -=+- (3.1.1此時(shí)f 的值與兩個(gè)變量有關(guān),我們先選定一個(gè)變量為常數(shù),于是 令1y y =,帶入(3.1.1 :12121112121(,(,(,x x x xf x

20、 y f x y f x y x x x x -=+- (3.1.2令2y y =,帶入(3.1.1:12222122121(,(,(,x x x xf x y f x y f x y x x x x -=+- (3.1.3 再令 (1,2i x x i =:12212121(,(,(,i i i y y y yf x y f x y f x y y y y y -=+- (3.1.4最后把(3.1.2(3.1.3帶入(3.1.4得:11212212212121211222211121212121(,(,(,(,(,(f x y f x y f x y x x y y x x y y x x

21、y y x x y y f x y f x y x x y y x x y y x x y y x x y y -+-+-+-這樣通過鄰近四個(gè)點(diǎn)的灰度值可以對(duì)目標(biāo)點(diǎn)估計(jì)灰度值。§2 圖像的縮放2.1有了雙線性內(nèi)插法作為工具,我們下面來進(jìn)行圖像的縮放變換。假設(shè)一個(gè)大小500*500的像素的圖像要放大1.5倍到750*750的像素。一種簡(jiǎn)單的思想是,先創(chuàng)建一個(gè)假想的750*750網(wǎng)格,它與原始圖像有相同的間隔(一般是1,然后將其收縮、壓縮,使它精確地與原圖像匹配成500*500。顯然,收縮后的假想圖像的間隔比原圖像的間隔要小。每個(gè)假想圖像的相同間隔的灰度值應(yīng)該與原圖像相等,而假想圖像間隔

22、小,所以存在未被賦灰度值的像素點(diǎn),這時(shí)我們采取雙線性內(nèi)插法進(jìn)行賦值。 2.2Matlab源程序I=imread('Koala .jpg' %讀入原圖像,只需將此處的文件換成要變換的圖片即可rows,cols=size(I;K1 = str2double(inputdlg('請(qǐng)輸入行縮放倍數(shù)', 'INPUT scale factor', 1, '0.5'K2 = str2double(inputdlg('請(qǐng)輸入列縮放倍數(shù)', 'INPUT scale factor', 1, '0.4'

23、; width = K1 * rows;height = K2 * cols;Out = uint8(zeros(width,height; %創(chuàng)建輸出圖像矩陣widthScale = rows/width;heightScale = cols/height;for x = 6:width - 6 % 6是為了防止矩陣超出邊界溢出for y = 6:height - 6oldX = x * widthScale; % oldX,oldY為原坐標(biāo),x,y為新坐標(biāo)oldY = y * heightScale;if (oldX/double(uint16(oldX = 1.0 &&

24、(oldY/double(uint16(oldY = 1.0Out(x,y = I(int16(oldX,int16(oldY;%若oldX,oldY為整數(shù),直接賦值elsea = double(uint16(oldX;b = double(uint16(oldY;x11 = double(I(a,b; % x11 賦值為I(a,bx12 = double(I(a,b+1; % x12 賦值為I(a,b+1x21 = double(I(a+1,b; % x21 賦值為I(a+1,bx22 = double(I(a+1,b+1; % x22 賦值為I(a+1,b+1Out(x,y =uint8(b+1-oldY*(oldX-a*x21+(a+1-oldX*x11+(oldY-b*(oldX-a*x22+(a+1-ol dX*x12; % 用雙線性插值計(jì)算公式計(jì)算endendendimshow(I;figure;imshow(O

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論