數(shù)字圖像處理幾何變換_第1頁
數(shù)字圖像處理幾何變換_第2頁
數(shù)字圖像處理幾何變換_第3頁
數(shù)字圖像處理幾何變換_第4頁
數(shù)字圖像處理幾何變換_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章數(shù)字圖像處理中的基本運(yùn)算本章主要內(nèi)容和基本要求數(shù)字圖像的基本代數(shù)運(yùn)算數(shù)字圖像的幾何運(yùn)算5.1數(shù)字圖像處理基本運(yùn)算的分類一、圖像處理算法的分類:單幅圖像————單幅圖像多幅圖像————單幅圖像多幅圖像或單幅圖像————數(shù)值/符號(圖像分析)二、根據(jù)基本運(yùn)算分類點(diǎn)運(yùn)算鄰域運(yùn)算5.2點(diǎn)運(yùn)算一、數(shù)字圖像的代數(shù)運(yùn)算1、基本代數(shù)運(yùn)算基礎(chǔ):設(shè)圖像其運(yùn)算可以分為圖像自身的運(yùn)算和圖像間的運(yùn)算,從根本上而言可以看成對圖像位置的運(yùn)算或?qū)υ撐恢蒙匣叶燃壍倪\(yùn)算?;敬鷶?shù)運(yùn)算:圖像象素幾何位置不變圖像灰度級的加、減、乘、除等運(yùn)算。幾何運(yùn)算:圖像象素位置變換后,經(jīng)過計(jì)算,確定該象素灰度的運(yùn)算。例如圖像f和g:代數(shù)運(yùn)算就是二者點(diǎn)對點(diǎn)的加、減、乘、除運(yùn)算。對f圖所有灰度加c級灰度可作如下處理:J=f+c給整幅圖像增加灰度級會使圖像亮度得到提高整體偏亮,給個(gè)別象素加灰度值可以使目標(biāo)景物突出,例如:給一幅圖像乘以一個(gè)系數(shù),可以改變圖像的灰度級范圍如:原來是20-200的灰度級范圍,乘以2則有40-400的灰度級范圍兩幅連續(xù)的圖像運(yùn)算可以有基本運(yùn)算組合而成如:K=af+bg:二、代數(shù)運(yùn)算的用途可以對同一場景的多幅圖像求平均,以降低加性零值平穩(wěn)噪聲。兩幅圖像疊加達(dá)到二次曝光的效果。減去圖中不需要的加性噪聲。計(jì)算兩幅場景的變化。檢測輪廓,確定輪廓現(xiàn)。5.3圖像的幾何運(yùn)算幾何運(yùn)算也叫幾何變換:包括圖象的平移,旋轉(zhuǎn),鏡象變換,轉(zhuǎn)置,放縮等。一.平移(translation)

將圖像沿水平或垂直方向移動位置后,獲得新的圖像的變換方式。例如:圖像坐標(biāo)中象素點(diǎn)(x0,y0)移動到(x1,y1)位置灰度不變。(x0,y0)點(diǎn),經(jīng)過平移(tx,ty),變?yōu)辄c(diǎn)(x1,y1)兩點(diǎn)之間的關(guān)系為:x1=x0+tx;y1=y0+ty.以矩陣的形式表示為:我們更關(guān)心的是它的逆變換:因?yàn)椋何覀兿胫赖氖瞧揭坪蟮膱D象中每個(gè)像素的顏色。x0=x1-tx,y0=y1-ty例如:新圖中左上角點(diǎn)的RGB值是多少?很顯然,該點(diǎn)是原圖中的某一點(diǎn)經(jīng)過平移后得到的,這兩點(diǎn)的顏色肯定是一樣的,所以只要知道了原圖那點(diǎn)的RGB值即可。那么到底新圖中的左上角點(diǎn)對應(yīng)原圖中的哪一點(diǎn)呢?將左上角點(diǎn)的坐標(biāo)(0,0)代入公式(2),得到x0=-tx;y0=-ty;所以新圖中的(0,0)點(diǎn)的顏色和原圖中(-tx,-ty)的一樣。設(shè)用表示新圖,用

表示原圖。在新圖的坐標(biāo)系中是左上角的象素,原圖中的象素在新坐標(biāo)系中的位置變成了f(-tx,-ty),新的坐標(biāo)系中g(shù)(0,0)=f(-tx,-ty)。例如:平移后出現(xiàn)的問題1、如果新圖中有一點(diǎn)(x1,y1),按照公式(2)得到的(x0,y0)不在原圖中該怎么辦?通常的做法是,把該點(diǎn)的RGB值統(tǒng)一設(shè)成(0,0,0)或者(255,255,255)。2、平移后的圖象是否要放大?一種做法是不放大,移出的部分被截?cái)?,如下圖所示,圖2為原圖,圖3為移動后的圖。這種處理,文件大小不會改變。

平移前的圖平移后的圖像還有一種做法是:將圖象放大,使得能夠顯示下所有部分

移動后被放大圖像這種處理,文件大小要改變。設(shè)原圖的寬和高分別是w1,h1則新圖的寬和高變?yōu)閣1+|tx|和h1+|ty|,加絕對值符號是因?yàn)閠x,ty有可能為負(fù).下面給出Translation的源代碼。算法的思想是先將所有區(qū)域填成白色,然后找平移后顯示區(qū)域的左上角點(diǎn)(x0,y0)和右下角點(diǎn)(x1,y1)。分幾種情況:

先看x方向(width指圖象的寬度)

1.tx≤-width

很顯然,圖象完全移出了屏幕,不用做任何處理

2.-width<tx≤0,如圖5所示圖像向左上方移動

圖象區(qū)域的x范圍從0到width-|tx|,對應(yīng)原圖的范圍從|tx|到width

圖53.0<tx<width,如圖6所示,圖像向右下方平移0<tx<width,0<ty<height的情況圖象區(qū)域的x范圍從tx到width,對應(yīng)原圖的范圍從0到width-tx圖64.tx≥width,圖象完全移出了屏幕,不用做任何處理。y方向是對應(yīng)的(height表示圖象的高度1.ty≤-height,圖象完全移出了屏幕,不用做任何處理

2.-height<ty≤0,圖象區(qū)域的y范圍從0到height-|ty|,對應(yīng)原圖的范圍從|ty|到height

3.0<ty<height,圖象區(qū)域的y范圍從ty到height,對應(yīng)原圖的范圍從0到height-ty

4.ty≥height,圖象完全移出了屏幕,不用做任何處理)這種做法利用了位圖存儲的連續(xù)性,即同一行的像素在內(nèi)存中是相鄰的。利用memcpy函數(shù),從(x0,y0)點(diǎn)開始,一次可以拷貝一整行(寬度為x1-x0),然后將內(nèi)存指針移到(x0,y0+1)處,拷貝下一行,這樣拷貝(y1-y0)行就完成了全部操作,避免了一個(gè)一個(gè)像素的計(jì)算,提高了效率。二、旋轉(zhuǎn)(rotation)圖像旋轉(zhuǎn)是指圖像以某一點(diǎn)作為軸轉(zhuǎn)過一定的角度。通常的做法是以圖象的中心為圓心旋轉(zhuǎn)。例如:圖7旋轉(zhuǎn)30度(順時(shí)針方向)后的圖象如圖8所示.可以看出,旋轉(zhuǎn)后圖象變大了。

圖-8旋轉(zhuǎn)后的圖圖-7原圖若要使旋轉(zhuǎn)后保持原尺寸圖像就要進(jìn)行裁切有些內(nèi)容就會損失。我們采用第一種做法圖像旋轉(zhuǎn)變換矩陣

先來看一下,將一個(gè)點(diǎn)順時(shí)針旋轉(zhuǎn)a角后的坐標(biāo)變換公式,如圖10所示,r為該點(diǎn)到原點(diǎn)的距離,在旋轉(zhuǎn)過程中,r保持不變。b為r與x軸之間的角度。x0=r*cos(b);y0=r*sin(b)圖10旋轉(zhuǎn)前:x0=r*cos(b);y0=r*sin(b)

旋轉(zhuǎn)a角度后:以矩陣的形式表示

其逆矩陣的形式表示為上面的公式中,坐標(biāo)系I是以圖象的中心為原點(diǎn),向右為x軸正方向,向上為y軸正方向。它和以圖象左上角點(diǎn),向右為x軸正方向,向下為y軸正方向的坐標(biāo)系II之間的轉(zhuǎn)換關(guān)系如何呢?

兩種坐標(biāo)系間的轉(zhuǎn)換關(guān)系逆變換為:按照上面的公式,我們可以把變換分成3步:第一:將坐標(biāo)系II變成I;

第二:將該點(diǎn)順時(shí)針旋轉(zhuǎn)a角;

第三:將坐標(biāo)系I變回II,這樣,我們就得到了變換矩陣,是上面三個(gè)矩陣的級聯(lián)。

上面公式中Wold表示原圖的寬,Hold表示原圖的高,Wnew新圖的寬,Hnew新圖的高,可以看出

Wnew=max(|x4-x1|,|x3-x2|);Hnew=max(|y4-y1|,|y3-y2|).可以根據(jù)以上公式,求出對應(yīng)的原圖中的點(diǎn),得到它的灰度,如果超出原圖范圍則填成白色。要注意的是,由于有浮點(diǎn)運(yùn)算,計(jì)算出來點(diǎn)的坐標(biāo)可能不是整數(shù),采用取整處理,即找最接近的點(diǎn),這樣會帶來一些誤差(圖象可能會出現(xiàn)鋸齒),更精確的方法是采用插值。插值算法后面詳細(xì)介紹。三、鏡象(mirror)

鏡象分水平鏡象和垂直鏡象兩種

原圖水平鏡像垂直鏡像鏡象的變換矩陣很簡單,設(shè)原圖寬為w,高為h,變換后,圖的寬和高不變.

水平鏡象為:

垂直鏡象為

四、轉(zhuǎn)置(transpose)

轉(zhuǎn)置是指將x,y坐標(biāo)對換原圖轉(zhuǎn)制后的圖要注意的是,轉(zhuǎn)置和旋轉(zhuǎn)90度是有區(qū)別的,不信你可以試試,你怎么轉(zhuǎn),也轉(zhuǎn)不出圖15度來。另外,轉(zhuǎn)置后圖的寬高對換了。

轉(zhuǎn)置的變換矩陣很簡單:五、縮放(zoom)

圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍,沿y軸方向比例縮放fy。當(dāng)fx=fy時(shí),稱為圖像的全比例縮放。當(dāng)fx?fy時(shí),圖像象素間的相對位置會發(fā)生畸變。設(shè)原圖像中的點(diǎn)P(x0,,y0),比例縮放后在新的圖像中對應(yīng)點(diǎn)P(x,y),P(x0,,y0)和P(x,y)之間的對應(yīng)關(guān)系如圖所示:比例縮放前后兩點(diǎn)之間的關(guān)系用矩陣表示為:其逆矩陣為:插值算法(Interpolation)

比例縮放所產(chǎn)生的圖像中有可能在原圖中找不到相應(yīng)的象素點(diǎn),我們采用的做法是找與之最臨近的點(diǎn),我們采用的做法是找與之最臨近的點(diǎn)。即利用鄰域的像素來估計(jì)新的像素值的處理方法就是插值算法。常用的插值算法有:最鄰近插值(NearestNeighbourInterpolation)。

線形插值(LinearInterpolation)。雙線形插值(BilinearIntrepolation)曲線插值(CurvilinearInterpolation)(1)最臨近插值圖像變換后找不到相應(yīng)的象素點(diǎn)時(shí),直接賦值為和它最相近的的象素值的插值算法。例如:在圖像的縮放中,將一幅6×6的圖像按比例縮小,fx=fy=1/2,圖像的長和寬均縮小到原來的一半,成為一幅3×3的圖像。原圖像的象素從(0,0)到(5,5),新圖像的象素從(0,0)到(2,2)。如下圖:6×6的原圖f新圖中的灰度值利用縮放公式計(jì)算得到X0=0/0.5=0y0=0X1=1/0.5=2y1=2X2=2/0.5=4y2=4g(0,0)=f(0,0),g(0,1)=f(0,2),g(0,2)=f(0,4),g(1,0)=f(2,0),g(1,1)=f(2,2),g(1,2)=f(2,4)g(2,0)=f(4,0),g(2,1)=f(4,2),g(2,2)=f4,4)3×3的新圖g6×6的原圖f圖像縮小,可以在原圖像中挑選信息,縮小之后的圖與原圖像比較丟失了很多信息。圖像放大處理中,需要對放大后多出來的空格填入適當(dāng)?shù)南笏刂?,采用最臨近插值法舉例如下:4×4的以原圖f長和寬各放大2倍,利用公式得到8×8的新圖像。新圖像中各象素位置X0=0Y0=0X1=0.5Y1=0.5X2=1Y2=1X3=1.5Y3=1.5X4=2Y4=2X5=2.5Y5=2.5X6=3Y6=3X7=3.5Y7=3.5g(0,0)=f(0,0)g(0,1)=f(0,0.5)g(0,2)=f(0,1)g(0,3)=f(0,1.5)g(0,4)=f(0,2)g(0,5)=f(0,2.5)g(0,6)=f(0,3)g(0,7)=f(0,3.5)g(1,0)=f(0.5,0)g(1,1)=f(0.5,0.5)g(1,2)=f(0.5,1)g(1,3)=f(0.5,1.5)g(1,4)=f(0.5,2)g(1,5)=f(0.5,2.5)g(1,6)=f(0.5,3)g(1,7)=f(0.5,3.5)g(2,0)=f(1,0)g(2,1)=f(1,0.5)g(2,2)=f(1,1)g(2,3)=f(1,1.5)g(2,4)=f(1,2)g(2,5)=f(1,2.5)g(2,6)=f(2,3)g(2,7)=f(1,3.5)g(3,0)=f(1.5,0)g(3,1)=f(1.5,0.5)g((3,2)=f(f(1.5,1)g(3,3)=f(1.5,1.5)g(3,4)=f(1.5,2)g(3,5)=f(1.5,2.5)g(3,6)=f(1.5,3)g(3,7)=f(1.5,3.5)g(4,0)=f(2,0)g(4,1)=f(2,0.5)g(4,2)=f(2,1)g(4,3)=f(2,1.5)g(4,4)=f(2,2)g(4,5)=f(2,2.5)g(4,6)=f(2,3)g(4,7)=f(2,3.5)g(5,0)=f(2.5,0)g(5,1)=f(2.5,0.5)g(5,2)=f(2.5,1)g(5,3)=f(2.5,1.5)g(5,4)=f(2.5,2)g(5,5)=f(2.5,2.5)g(5,6)=f(2.5,3)g(5,7)=f(2.5,3.5)g(6,0)=f(3,0)g(6,1)=f(3,0.5)g(6,2)=f(3,1)g(6,3)=f(3,1.5)g(6,4)=f(3,2)g(6,5)=f(3,2.5)g(6,6)=f(3,3)g(6,7)=f(3,3.5)g(7,0)=f(3.5,0)g(7,1)f(3.5,0.5)g(7,2)=f(3.5,1)g(7,3)=f(3.5,1.5)g(7,4)=f(3.5,2)g(7,5)=f(3.5,2.5)g(7,6)=f(3.5,3)g(7,7)=f(3.5,3.5)

放大后8×8的新圖(2)線形插值線形插值是使用原圖中兩個(gè)值來構(gòu)造所求坐標(biāo)處的值。例如:如圖所示,如果已經(jīng)知道了兩點(diǎn)x0,x2處的函數(shù)值f(x0),f(x2),現(xiàn)在要求x1處的函數(shù)值f(x1)。我們假設(shè)函數(shù)是線性的,利用幾何知識可以知道:

雙線性插值在圖象處理中需要將線形插值擴(kuò)展到二維的情況,即采用雙線形插值(BilinearIntrepolation)例如:已知四點(diǎn)f(x0,y0),f(x

溫馨提示

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

評論

0/150

提交評論