圖像位置變換辯析_第1頁(yè)
圖像位置變換辯析_第2頁(yè)
圖像位置變換辯析_第3頁(yè)
圖像位置變換辯析_第4頁(yè)
圖像位置變換辯析_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、圖像位置變換圖像的位置變換是指圖像的大小和形狀不發(fā)生變換,只是將圖像進(jìn)行平移, 鏡像和旋轉(zhuǎn)的變換等,主要用于圖像目標(biāo)識(shí)別的目標(biāo)配準(zhǔn)。、圖像旋轉(zhuǎn)變換旋轉(zhuǎn)。一般圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn), 旋轉(zhuǎn)一定的角度,也就是將 圖像上的所有像素都旋轉(zhuǎn)一個(gè)相同的角度。旋轉(zhuǎn)后圖像的的大小一般會(huì)改變,即 可以把轉(zhuǎn)出顯示區(qū)域的圖像截去, 或者擴(kuò)大圖像范圍來(lái)顯示所有的圖像。 圖像的 旋轉(zhuǎn)變換也可以用矩陣變換來(lái)表示。 設(shè)點(diǎn)F0(xo, yo)逆時(shí)針旋轉(zhuǎn)9角后的對(duì)應(yīng)點(diǎn)為P(x, y)。那么,旋轉(zhuǎn)前后點(diǎn)F0(xo, yo)、P(x, y)的坐標(biāo)分別是:=r cosaiyo = r cosaX = r COS0 + 日)=

2、r cosa cos8 - r sina sin 日=xo cos9 - yo sin0y = rsin(a + 日)=rsina coM + rcosa sinT =xosin9 +yocos日寫成矩陣表達(dá)式為XyLkcos 8sin日I o sin 日cos日om其逆運(yùn)算為x cos 日 yLd L o-sin 日sin日cos日ooIXolodLi Jyo(3-9)利用上述方法進(jìn)行圖像旋轉(zhuǎn)時(shí)需要注意如下兩點(diǎn):(1)圖像旋轉(zhuǎn)之前,為了避免信息的丟失,一定要有坐標(biāo)平移。(2)圖像旋轉(zhuǎn)之后,會(huì)出現(xiàn)許多空洞點(diǎn)。對(duì)這些空洞點(diǎn)必須進(jìn)行填充處理,否則畫面效果不好,一般也稱這種操作為插值處理。以上所討論

3、的旋轉(zhuǎn)是繞坐標(biāo)軸原點(diǎn)(0,0)進(jìn)行的。如果圖像旋轉(zhuǎn)是繞一個(gè)指定 點(diǎn)(a,b)旋轉(zhuǎn),則先要將坐標(biāo)系平移到該點(diǎn),再進(jìn)行旋轉(zhuǎn),然后將旋轉(zhuǎn)后的圖象平 移回原來(lái)的坐標(biāo)原點(diǎn),這實(shí)際上是圖像的復(fù)合變換。如將一幅圖像繞點(diǎn)(a,b)逆時(shí) 針旋轉(zhuǎn)日度,首先將原點(diǎn)平移到(a,b),即1 00 10 0-a-b1然后旋轉(zhuǎn)cos 日sin 0I 0-sin 0COS001C =al1然后再平移回來(lái)00 10 0綜上所述,變換矩陣為T = C .B .A。在旋轉(zhuǎn)變換的Callback函數(shù)下添加代碼如下:function xua nzhua nbia nhua n_Callback(hObject, eve ntdata,

4、 han dies)% hObjecthan dle to xua nzhua nbia nhua n (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB% han dlesstructure with han dles and user data (see GUIDATA)axes(ha ndles.axes_2);promp t= Input An gle;title=I nput An gle;def=0;x=inpu tdlg( promp t,title,2,def);y=str2

5、 nu m(char(x);img_1=geta pp data(ha ndles.figure_by_me,img_1);img_2=imrotate(img_1,y, nearest);imshow(ui nt8(img_2);O uH Miei幾書(shū)tn09020608、原teB腐kKft皀二oe02二、圖像平移變換平移變換是幾何變換中最簡(jiǎn)單的一種變換,是將一幅圖像上的所有點(diǎn)都按照給定的偏移量在水平方向沿x軸、在垂直方向沿y軸移動(dòng)。設(shè)圖像中點(diǎn)P0(X0,y0) 進(jìn)行平移后已到P(x,y),其中x方向的平移量為 x,y方向的平移量為 y。那么,點(diǎn)P(x,y)的坐標(biāo)為:x=x0+A xy=y

6、o+A y利用齊次坐標(biāo)系,變換前后圖像上的點(diǎn)P0(x0,y0)和P(x,y)之間的關(guān)系可以 用如下的矩陣變換表示為:0y=01 AyXyoLko 01 .1 利用坐標(biāo)變換原理我們進(jìn)行編程。首先要設(shè)計(jì)一個(gè)GUI界面方便我們進(jìn)行圖像處理。文件打幵ifi岀09.aD.7D.e50.4D.3 2.10015 c.i a.e as 9.0l706a5140.3 2lIDL2 04 ae as首先讀入圖片,并將其顯示在第一個(gè)坐標(biāo)軸上,處理后的圖像顯示在第二個(gè) 坐標(biāo)軸上,形成對(duì)比。Matlab中讀入函數(shù)imread,打開(kāi)對(duì)話框函數(shù)為uigetfile。在打開(kāi)菜單的Callback函數(shù)下添加函數(shù)激活打開(kāi)命令。

7、fun ctio n dakai_Callback(hObject, eve ntdata, han dies)file name, path name=uigetfile(*.b mp ;* .pn g;*.j peg;*.j pg,lmage Files(*bm p,*jp g,* .pn g,*.j peg);.*.*, All Files(*.*),.卩 ick an image);if isequal(file name,O)|isequal( path name,0)return;endfp ath=p ath name file name;img_1=imread(fpath);

8、imshow(img_1);titled);seta pp data(ha ndles.figure_by_me,img_1,img_1);獲得圖片后,接下來(lái)就是對(duì)其進(jìn)行處理,以實(shí)現(xiàn)圖像幾何變換菜單下的平移變換。在平移變換的Callback函數(shù)下添加如下代碼:function pin gyibia nhua n_Callback(hObject, eve ntdata, han dles)% hObjecthan dle to pin gyibia nhua n (see GCBO)% eve ntdatareserved - to be defi ned in a future versi

9、on of MATLAB% han dlesstructure with han dles and user data (see GUIDATA)promp t=X(0-166),Y(0-166);title=pin gyibia nhua ndefaults=0,0;xy_cells=str2 nu m(char(i npu tdlg( promp t,title,1,defaults);if ise mp ty(xy_cells)msgboxC為您執(zhí)行平移操作,提示,help);elsex=xy_cells(1);y=xy_cells(2);axes(ha ndles.axes_2);im

10、g_1=geta pp data(ha ndles.figure_by_me,img_1);img_2=double(img_1);img_2_M=zeros(size(img_2);H=size(img_2);move_x=x;move_y=y;if(size(img_2,3)=1)img_2_M(rou nd(move_x)+1:rou nd(H(1),rou nd(move_y)+1:rou nd(H(2),1:roun d(H(3)=img_2(1:ro un d(H(1)-rou nd(move_x),1:ro un d(H(2)-rou nd(move_y),1 :round(H(

11、3);%此處利用矩陣直接進(jìn)行圖像平移操作, 其中move_x為在x方向平移尺度大小,move_y為在y軸方向平移的尺度大小H (1 )為圖像的行數(shù),H (2)為圖像的列數(shù),H (3)為圖像維數(shù),函數(shù)round為取整操作。elseimg_2_M(rou nd(move_x)+1:rou nd(H(1),rou nd(move_y)+1:rou nd(H(2)=img_2(1:rou nd(H(1)-rou nd(move_x),1:ro un d(H(2)-rou nd(move_y);%此處為利用矩陣直接進(jìn)行灰度圖像的平移的操作, 其中move_x為在x方向平移尺度的大小,move_y為在y軸

12、方向平移的尺度大小,H (1)為圖像的行數(shù),H(2)為圖像的列數(shù),函數(shù)round為取整操作。end imshow(ui nt8(img_2_M);end;I1口o zW U如S*幾何處理igyibidpkibJi-ier 661tflzi 陶CancelD20.40.6.B當(dāng)選擇“平移變換”菜單時(shí),則彈出如圖所示對(duì)畫框。設(shè)定水平平移30個(gè)D M像素,垂直平移65個(gè)像素,單擊0K,處理結(jié)果如下:三、圖像鏡像變換1、圖像水平鏡像圖像的水平鏡像操作是將圖像的左半部分和又半部分以圖像垂直中線為中心進(jìn)行鏡像對(duì)換。設(shè)點(diǎn)Po(xo,yo)進(jìn)行鏡像后的對(duì)應(yīng)點(diǎn)為P(x,y),圖像高度為fH,寬度為fw,原圖像中

13、Po(xo,yo)經(jīng)過(guò)水平鏡像后坐標(biāo)將變?yōu)?fw-xo,yo),其代數(shù)表達(dá)式為:x=fw-xo y=y0矩陣表達(dá)式為:-1 0在水平鏡像的Callback函數(shù)下添加如下代碼:function shu ipingjin gxia ng_Callback(hObject, eve ntdata, han dies)% hObjecthan dle to shu ipin gji ngxia ng (see GCBO)% eve ntdatareserved - to be defi ned in a future versi on of MATLAB% han diesstructure with

14、 han dies and user data (see GUIDATA)axes(ha ndles.axes_2);img_1=geta pp data(ha ndles.figure_by_me,img_1);img_1=double(img_1);H=size(img_1);img_2(1:H(1,1),1:H(1,2)=img_1(1:H(1,1),H(1,2):-1:1);imshow(ui nt8(img_2);點(diǎn)擊菜單欄中圖像幾何處理中的平移變換,結(jié)果如下圖所示:y=0 1 0XyoLk0 0 1.1 Sft 15幾何3!理s/-A2、圖像垂直鏡像圖像的垂直鏡像操作是將圖像上半部

15、分和下半部分以圖像水平中軸線為中心進(jìn)行的鏡像變換。設(shè)點(diǎn)Po(xo,yo)進(jìn)行鏡像后的對(duì)應(yīng)點(diǎn)為P(x,y),圖像高度為fH,寬度為fw,原圖像中Po(xo,yo)經(jīng)過(guò)垂直鏡像后坐標(biāo)將變?yōu)?X0, fH-yo),其代數(shù)表達(dá)式為: x=x0y=fH-yo矩陣表達(dá)式為:Xf10 0fX。-y=0-1 fHXyoLk0 0 1-1 -在圖像垂直鏡像的Callback函數(shù)下添加代碼如下:function chuizhij in gxa in g_Callback(hObject, eve ntdata, han dies)% hObject handle to Un titied_3 (see GCBO)

16、% eventdata reserved - to be defined in a future version of MATLAB% han diesstructure with han dies and user data (see GUIDATA)axes(ha ndles.axes_2);img_1=geta pp data(ha ndles.figure_by_me,img_1);img_1=double(img_1);H=size(img_1);img_2(1:H(1,1),1:H(1,2)=img_1(H(1,1):-1:1,1:H(1,2);imshow(ui nt8(img_

17、2);點(diǎn)擊菜單欄圖像幾何處理中的垂直鏡像,結(jié)果如下圖所示:W U3、圖像對(duì)角鏡像圖像對(duì)角鏡像是將圖像以圖像水平中軸線和垂直中軸線的交點(diǎn)為中心進(jìn)行鏡像對(duì)換。相當(dāng)于將圖像先后進(jìn)行水平鏡像和垂直鏡像。設(shè)點(diǎn)P0(X0,y0)進(jìn)行鏡像變換后的對(duì)應(yīng)點(diǎn)為P(x,y),圖像高度為fH,寬度為fW,原圖像中Po(xo,yo)經(jīng)過(guò)對(duì)角鏡像后坐標(biāo)將變成(fW-xO,fH-yO),其代數(shù)表達(dá)式為:PX=fW-X0Ly=fH-y0矩陣表達(dá)式為:0y=0-1fHXy0A00111在圖像對(duì)角鏡像的Callback函數(shù)下添加代碼如下:fun ctio n duijiaoji ngxia ng_Callback(hObject, eve ntdata, han dies)% hObject% eve ntdata% han dieshan dle to duijiaoj in gxia ng (see GCBO)reserved - to be defi ned in a future versi on of MATLABstructure with han dies and user data (see GUIDATA)axes(ha ndles.axes_2);img_1=geta pp data(ha ndles.figure_by_me,img_1);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論