txcl4-像素空間關(guān)系幾何變換-2016_第1頁(yè)
txcl4-像素空間關(guān)系幾何變換-2016_第2頁(yè)
txcl4-像素空間關(guān)系幾何變換-2016_第3頁(yè)
txcl4-像素空間關(guān)系幾何變換-2016_第4頁(yè)
txcl4-像素空間關(guān)系幾何變換-2016_第5頁(yè)
已閱讀5頁(yè),還剩207頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、像素的空間關(guān)系圖像由基本單元-像素組成像素在圖像空間按照某種規(guī)律排列,相互之間有一定聯(lián)系像素有一定的空間位置空間變換-從一個(gè)空間到另一個(gè)空間坐標(biāo)變換-從空間一個(gè)位置轉(zhuǎn)換到另外一個(gè)位置內(nèi)容:像素間的聯(lián)系;基本坐標(biāo)變換;幾何失真校正數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理像素的空間關(guān)系-像素的鄰域鄰域和鄰接對(duì)于任意像素(i,j),把像素的集合(i+p,j+q)叫像素 (i,j)的鄰域,像素(i,j)附近的像素形成的區(qū)域,常用4鄰域、對(duì)角鄰域、8鄰域。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理p3p2p1p4pp0p5P6p7像素的空間關(guān)系-像素的鄰域4鄰域與4鄰接上、下、左、右四個(gè)像素p0,p2,p4,p6

2、稱(chēng)為p的4鄰域;互為4鄰接的兩像素叫4鄰接。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關(guān)系-像素的鄰域?qū)青徲蚺c對(duì)角鄰接右上、左上、右下、左下四個(gè)像素p1,p3,p5,p7稱(chēng)為p的對(duì)角鄰域;互為對(duì)角鄰接的兩像素叫對(duì)角鄰接。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關(guān)系-像素的鄰域8鄰域與8鄰接上下左右4個(gè)像素和四個(gè)對(duì)角線像素p0p7為8鄰域;互為8鄰接的兩像素叫8鄰接數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關(guān)系-連接和連通鄰接-考慮像素的空間關(guān)系連接-1、空間上是否接

3、觸 2、灰度是否滿(mǎn)足特定相似準(zhǔn)則V表示連接的灰度值集合V=14連接、8連接、混合連接abpcdref數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理1110010111 1 10 1 01像素的空間關(guān)系-連接和連通鄰接-考慮像素的空間關(guān)系連接-1、空間上是否接觸 2、灰度是否滿(mǎn)足特定相似準(zhǔn)則V表示連接的灰度值集合V=14連接、8連接、混合連接011010011數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理01101000101101001像素的空間關(guān)系-連接和連通連通-從像素坐標(biāo)(x,y)p到像素坐標(biāo)(s,t)q的一條通路由一系列具有坐標(biāo)(x0,y0)(xi,yi)(xn,yn)的獨(dú)立像素組成。 1=I =n 為長(zhǎng)

4、度pq數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理pq二值圖像處理與形狀描述概念圖像的二值化 圖像分割(閥值)及邊緣檢測(cè)的結(jié)果形成二值圖像(1和0) 。二值圖像處理特點(diǎn)圖像容量小,處理速度快,成本低;能定義幾何學(xué)的概念;多值圖像可以變成二值圖像處理。二值圖像處理流程數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理灰度圖像二值化連接成分的變形圖形特征測(cè)量結(jié)構(gòu)分析描述分類(lèi)測(cè)量識(shí)別理解二值圖像的連接性和距離像素的連接對(duì)于二值圖像中,具有相同值的兩個(gè)像素a和b,所有和a、b具有相同值的像素系列p0(a),p1,p2,pn-1,pn(=b)存在,并且pi-1和pi互為4-/8-鄰接,那么像素a和b叫4-/8-連接。像素系列

5、為4-/8-路徑。連接成分在二值圖像中,把互相連接的像素的集合匯集為一組,于是具有若干個(gè)0值的像素和具有若干個(gè)1值的像素的組就產(chǎn)生了。這些組叫連接成分或連通成分。問(wèn)題在研究一個(gè)二值圖像連接成分的場(chǎng)合,若1像素的連接成分用4/8連接,而0像素連接成分不用相反的8/4連接,連接會(huì)產(chǎn)生矛盾。在0像素連接成分中,如果存在和圖像外圍的1行或1列的0像素不相連接的成分,則稱(chēng)為孔。不包含有孔的1像素連接成分叫單連接成分。包含有孔的1像素連接成分叫多重連接成分。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連接性和距離歐拉數(shù)在二值圖像中,1-像素連接成

6、分?jǐn)?shù)C減去孔數(shù)H的值叫這幅圖像的歐拉數(shù)或示性數(shù)。 E C H對(duì)于一個(gè)1像素的連接成分,1減去這個(gè)連接成分中所包含的孔數(shù)的差值,叫做這個(gè)1像素的連接成分的歐拉數(shù)。二值圖像的歐拉數(shù)是所有1像素連接成分的歐拉數(shù)之和。像素的可刪除性二值圖像上改變一個(gè)像素的值后,整個(gè)圖像的連接性并不改變(各連接成分不分離、 不結(jié)合、孔不消失、不產(chǎn)生),則這個(gè)像素是可以刪除的。像素的可刪除性可以用像素的連接數(shù)來(lái)檢測(cè)。連接數(shù)像素p的值用B(p)表示,當(dāng)B(p)=1時(shí),像素p的連接數(shù)Nc(p)為與p連接的連接成分?jǐn)?shù)。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連接性

7、和距離計(jì)算公式計(jì)算實(shí)例數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理1)0100()0111 ()1100()0000()()()()()()()()()()()()()()()()()(8766654443222100)8(pBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpNc0882k)(1)(6420SpppBpBkk時(shí),當(dāng),式中skkkkkcskkkkkcpBpBpBpBpNpBpBpBpBpN)()()()()()()()()()(21)8(21)4(二值圖像的連接性和距離數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理二值圖像的連

8、接性和距離像素的連接數(shù)同一圖像,在4或8鄰接的情況下,像素的連接數(shù)不同。他可以作為圖像的特征量。根據(jù)連接數(shù)將像素分類(lèi)孤立點(diǎn)B(p)=1像素,4/8鄰接像素全是0,Nc(p)=0。內(nèi)部點(diǎn) B(p)=1像素, 4/8鄰接像素全是1,Nc(p)=0邊界點(diǎn) B(p)=1像素除孤立點(diǎn)和內(nèi)部點(diǎn)以外的點(diǎn)叫邊界點(diǎn),1=Nc(p)0變化的過(guò)程就表示了標(biāo)準(zhǔn)坐標(biāo)系中的一個(gè)點(diǎn)沿直線變化的過(guò)程就表示了標(biāo)準(zhǔn)坐標(biāo)系中的一個(gè)點(diǎn)沿直線 ax+by=0 逐漸走向無(wú)窮遠(yuǎn)處的過(guò)程。逐漸走向無(wú)窮遠(yuǎn)處的過(guò)程。例點(diǎn)S(60 000, 40 000)在16位計(jì)算機(jī)上表示則大于32 767的最大坐標(biāo)值, 需要進(jìn)行復(fù)雜的操作。但如果把S的坐標(biāo)形

9、式變成(Hx, Hy, H)形式的齊次坐標(biāo),則情況就不同了。在齊次坐標(biāo)系中,設(shè)H12,則 (60 000,40 000)的齊次坐標(biāo)為(1/2x, 1/2y, 1/2),那么所要表示的點(diǎn)變?yōu)?30 000, 20 000, 1/2),此點(diǎn)在16位計(jì)算機(jī)上二進(jìn)制數(shù)所能表示的范圍之內(nèi)。 像素的空間關(guān)系-幾何變換基礎(chǔ) 齊次坐標(biāo)的幾何意義相當(dāng)于點(diǎn)(x, y)落在3D空間H1的平面上, 如圖所示。如果將XOY 平面內(nèi)的三角形abc 的各頂點(diǎn)表示成齊次坐標(biāo)(xi, yi, 1)(i=1, 2, 3)的形式,就變成H1平面內(nèi)的三角形a1b1c1的各頂點(diǎn)。 zxyOabca1b1c1H1齊次坐標(biāo)的幾何意義齊次坐

10、標(biāo)的幾何意義像素的空間關(guān)系-幾何變換基礎(chǔ) 二維圖像幾何變換的矩陣二維圖像幾何變換的矩陣 利用齊次坐標(biāo)及改成33階形式的變換矩陣,實(shí)現(xiàn)2D圖像幾何變換的基本變換的一般過(guò)程是:將2n階的二維點(diǎn)集矩陣 表示成齊次坐標(biāo)的形式,然后乘以相應(yīng)的變換矩陣即可完成,即 變換后的點(diǎn)集矩陣=變換矩陣T變換前的點(diǎn)集矩陣 (圖像上各點(diǎn)的新齊次坐標(biāo)) (圖像上各點(diǎn)的原齊次坐標(biāo))niiyx200niiyx3001像素的空間關(guān)系-幾何變換基礎(chǔ) 設(shè)變換矩陣T為 smlqdcpbaT則上述變換可以用公式表示為 nnnnnnyyyxxxTHHHHyHyHyHxHxHx3212132121111像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像上

11、各點(diǎn)的新齊次坐標(biāo)規(guī)范化后的點(diǎn)集矩陣為 nnnyyyxxx32121111 引入齊次坐標(biāo)后,表示2D圖像幾何變換的33矩陣的功能就完善了,可以用它完成2D圖像的各種幾何變換。下面討論33階變換矩陣中各元素在變換中的功能。幾何變換的33矩陣的一般形式為 像素的空間關(guān)系-幾何變換基礎(chǔ) sqpmdclbaT 33的階矩陣T可以分成四個(gè)子矩陣。其中, 這一子矩陣可使圖像實(shí)現(xiàn)恒等、 比例、 反射(或鏡像)、 錯(cuò)切和旋轉(zhuǎn)變換。l m這一行矩陣可以使圖像實(shí)現(xiàn)平移變換。p qT這一列矩陣可以使圖像實(shí)現(xiàn)透視變換,但當(dāng)p=0,q=0時(shí)它無(wú)透視作用。s這一元素可以使圖像實(shí)現(xiàn)全比例變換。例如, 將圖像進(jìn)行全比例變換,

12、即 22dcba像素的空間關(guān)系-幾何變換基礎(chǔ) syxyxsiiii10001000100將齊次坐標(biāo) 規(guī)范化后, 。由此可見(jiàn), 當(dāng)s1時(shí),圖像按比例縮小;當(dāng)0s1時(shí),整個(gè)圖像按比例放大;當(dāng)s1時(shí),圖像大小不變。 syxii1100iiiiyxsysx像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像比例縮放變換圖像比例縮放變換 圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍, 在y軸方向按比例縮放fy倍,從而獲得一幅新的圖像。如果fxfy, 即在x軸方向和y軸方向縮放的比率相同,稱(chēng)這樣的比例縮放為圖像的全比例縮放。如果fxfy,圖像的比例縮放會(huì)改變?cè)紙D像的像素間的相對(duì)位置,產(chǎn)生幾何畸變。設(shè)原圖像中的點(diǎn)

13、P0(x0,y0)比例縮放后,在新圖像中的對(duì)應(yīng)點(diǎn)為P(x, y),則P0(x0,y0)和P(x, y)之間的對(duì)應(yīng)關(guān)系如圖6-3所示。 像素的空間關(guān)系-幾何變換基礎(chǔ) 放大后縮放前xy(x , y)(x0 , y0)O圖6-3 比例縮放像素的空間關(guān)系-幾何變換基礎(chǔ) 比例縮放前后兩點(diǎn)P0(x0, y0)、P(x, y)之間的關(guān)系用矩陣形式可以表示為 11000000100yxfyfxyx(6-1) 公式(6-1)的逆運(yùn)算為 1100010001100yxfyfxyx像素的空間關(guān)系-幾何變換基礎(chǔ) 即 fyyyfxxx00 比例縮放所產(chǎn)生的圖像中的像素可能在原圖像中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行插值

14、處理。插值處理常用的方法有兩種, 一種是直接賦值為和它最相近的像素值, 另一種是通過(guò)一些插值算法來(lái)計(jì)算相應(yīng)的像素值。前一種方法計(jì)算簡(jiǎn)單, 但會(huì)出現(xiàn)馬賽克現(xiàn)象;后者處理效果要好些,但是運(yùn)算量也相應(yīng)增加。在下面的算法中直接采用了前一種做法。實(shí)際上,這也是一種插值算法, 稱(chēng)為最鄰近插值法(Nearest Neighbor Interpolation)。 像素的空間關(guān)系-幾何變換基礎(chǔ) 下面首先討論圖像的比例縮小。最簡(jiǎn)單的比例縮小是當(dāng) fx=fy=12時(shí),圖像被縮到一半大小,此時(shí)縮小后圖像中的(0, 0)像素對(duì)應(yīng)于原圖像中的(0, 0)像素; (0, 1)像素對(duì)應(yīng)于原圖像中的(0, 2)像素; (1,

15、0)像素對(duì)應(yīng)于原圖像中的(2, 0)像素, 依此類(lèi)推。圖像縮小之后,因?yàn)槌休d的信息量小了,所以畫(huà)布可相應(yīng)縮小。此時(shí), 只需在原圖像基礎(chǔ)上,每行隔一個(gè)像素取一點(diǎn),每隔一行進(jìn)行操作,即取原圖的偶(奇)數(shù)行和偶(奇)數(shù)列構(gòu)成新的圖像,如圖6-4所示。如果圖像按任意比例縮小, 則需要計(jì)算選擇的行和列。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-4 圖像縮小一半像素的空間關(guān)系-幾何變換基礎(chǔ) 如果MN大小的原圖像F(x,y)縮小為 kMkN大?。╧1)的新圖像I(x,y)時(shí),則I(x, y)=F(int(cx), int(cy)其中, c=1k。由此公式可以構(gòu)造出新圖像,如圖6-5所示。 k1/3圖6-5 圖像

16、按任意比例縮小像素的空間關(guān)系-幾何變換基礎(chǔ) 當(dāng)fxfy(fx, fy0)時(shí),圖像不按比例縮小,這種操作因?yàn)樵趚方向和y方向的縮小比例不同,一定會(huì)帶來(lái)圖像的幾何畸變。圖像不按比例縮小的方法是: 如果MN大小的舊圖F(x,y)縮小為k1Mk2N(k11,k21)大小的新圖像I(x,y)時(shí),則 I(x, y)=F(int(c1x), int(c2y) 其中 2211,1kckc由此公式可以構(gòu)造出新圖像。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像在縮小操作中,是在現(xiàn)有的信息里如何挑選所需要的有用信息。而在圖像的放大操作中,則需要對(duì)尺寸放大后所多出來(lái)的空格填入適當(dāng)?shù)南袼刂?,這是信息的估計(jì)問(wèn)題,所以較圖像的縮小

17、要難一些。當(dāng)fxfy2時(shí),圖像被按全比例放大2倍, 放大后圖像中的(0,0)像素對(duì)應(yīng)于原圖中的(0,0)像素;(0,1)像素對(duì)應(yīng)于原圖中的(0,0.5)像素,該像素不存在,可以近似為(0,0)也可以近似 (0,1); (0,2)像素對(duì)應(yīng)于原圖像中的(0,1)像素;(1,0)像素對(duì)應(yīng)于原圖中的(0.5,0),它的像素值近似于(0, 0)或(1,0)像素; (2,0)像素對(duì)應(yīng)于原圖中的(1,0)像素,依此類(lèi)推。其實(shí)這是將原圖像每行中的像素重復(fù)取值一遍,然后每行重復(fù)一次。圖6-6是原始圖像,圖6-7和圖6-8是分別采用上述兩種近似方法放大后的圖像。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-6 放大前的圖

18、像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-7 按最近鄰域法放大兩倍的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-8 按插值法放大兩倍的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 一般地,按比例將原圖像放大k倍時(shí),如果按照最近鄰域法則需要將一個(gè)像素值添在新圖像的kk的子塊中,如圖6-9所示。顯然,如果放大倍數(shù)太大, 按照這種方法處理會(huì)出現(xiàn)馬賽克效應(yīng)。當(dāng)fxfy(fx, fy0)時(shí),圖像在x方向和y方向不按比例放大, 此時(shí), 這種操作由于x方向和y方向的放大倍數(shù)不同,一定帶來(lái)圖像的幾何畸變。放大的方法是將原圖像的一個(gè)像素添到新圖像的一個(gè)k1k2的子塊中去。為了提高幾何變換后的圖像質(zhì)量, 常采用線性插值法。該方

19、法的原理是,當(dāng)求出的分?jǐn)?shù)地址與像素點(diǎn)不一致時(shí),求出周?chē)膫€(gè)像素點(diǎn)的距離比,根據(jù)該比率, 由四個(gè)鄰域的像素灰度值進(jìn)行線性插值, 如圖6-10所示。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-9 按最近鄰域法放大五倍的圖像 放大5倍像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-10 線性插值法示意圖 (x , y)(x , y1)(x1 , y)x , y(x1 , y1)p1 p1 qq像素的空間關(guān)系-幾何變換基礎(chǔ) 簡(jiǎn)化后的灰度值計(jì)算式如下:g(x,y)=(1-q)(1-p)g(x,y)+pg(x+1,y) +q(1-p)g(x,y+1)+pg(x+1,y+1) 式中:g(x,y)為坐標(biāo)(x,y)處的灰度值,x

20、、y 分別為不大于x,y的整數(shù)。關(guān)于這個(gè)問(wèn)題的詳細(xì)算法及其實(shí)現(xiàn), 讀者可以參考有關(guān)參考文獻(xiàn)。 像素的空間關(guān)系-幾何變換基礎(chǔ) 6.2.2 比例縮放的實(shí)現(xiàn)比例縮放的實(shí)現(xiàn) 圖6-11 圖像比例縮放處理結(jié)果 像素的空間關(guān)系-幾何變換基礎(chǔ) 下面給出這個(gè)函數(shù)的框架和主要算法。 /* /函數(shù)名稱(chēng): BOOL ZoomImage() /基本功能: 本函數(shù)對(duì)傳入的CDibObject對(duì)象中的圖像進(jìn)行縮放操作 /參數(shù)說(shuō)明: float fXZoomRatio X軸方向縮放比率 / float fYZoomRatio Y軸方向縮放比率 / BOOL bBilinear TRUE為雙線性插值, FALSE為最鄰近插值

21、 / CDibObject *pDibObject 默認(rèn)為NULL /返回值: BOOL 成功返回TRUE, 失敗返回FALSE 像素的空間關(guān)系-幾何變換基礎(chǔ) /* BOOL CGeoTrans: ZoomImage(float fXZoomRatio, float fYZoomRatio, BOOL bBilinear, CDibObject *pDibObject) /獲得圖像寬度和高度, 計(jì)算縮放后的圖像實(shí)際寬度 nNewWidth = (int)(nOldWidth * fXZoomRatio + 0.5); nNewHeight = (int)(nOldHeight * fYZoom

22、Ratio + 0.5); /獲取源圖像指針,為新圖像分配內(nèi)存,用白色填充新圖像數(shù)據(jù)區(qū),調(diào)整新圖像信息 /由圖像位數(shù)確定的移動(dòng)字節(jié)數(shù)nMovedBits /針對(duì)圖像每行進(jìn)行操作 for(y = 0; y nNewHeight; y+) 像素的空間關(guān)系-幾何變換基礎(chǔ) /指向新圖像第y行 pNewTemp = pNewBits; pNewTemp += (nNewHeight -1KG*3-y) * nNewWidthBytes; /針對(duì)圖像每列進(jìn)行操作 for(x = 0; x = 0) & (x0 = 0) & (y0 nOldHeight) if(bBilinear) 像素的

23、空間關(guān)系-幾何變換基礎(chǔ) /雙線性插值 else /指向源圖像第y0行, 第x0個(gè)像素 pOldTemp = pOldBits; pOldTemp += (nOldHeight - 1 - y0) * nOldWidthBytes; pOldTemp += x0 * nMovedBits; memcpy(pNewTemp, pOldTemp, nMovedBits); pNewTemp += nMovedBits; /將內(nèi)存解鎖和將不再使用的內(nèi)存釋放, 將新圖像設(shè)置為當(dāng)前圖像 return TRUE; 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像平移變換圖像平移變換 x2 , y1圖6-12 圖像平移像素

24、的空間關(guān)系-幾何變換基礎(chǔ) 設(shè)點(diǎn)P0(x0, y0)進(jìn)行平移后,移到P(x, y),其中x方向的平移量為x,y方向的平移量為y。那么,點(diǎn)P(x, y)的坐標(biāo)為 yyyxxx00 利用齊次坐標(biāo),變換前后圖像上的點(diǎn)P0(x0, y0)和P(x, y)之間的關(guān)系可以用如下的矩陣變換表示為 11001001100yxyxyx(6-2)像素的空間關(guān)系-幾何變換基礎(chǔ) 對(duì)變換矩陣求逆,可以得到式(6-2)的逆變換 11001001100yxyxyx即 yyyxxx00像素的空間關(guān)系-幾何變換基礎(chǔ) 這樣,平移后的圖像上的每一點(diǎn)都可以在原圖像中找到對(duì)應(yīng)的點(diǎn)。例如,對(duì)于新圖中的(0,0)像素,代入上面的方程組, 可

25、以求出對(duì)應(yīng)原圖中的像素(-x,-y)。如果x或y大于0, 則點(diǎn)(-x,-y)不在原圖像中。對(duì)于不在原圖像中的點(diǎn),可以直接將它的像素值統(tǒng)一設(shè)置為0或者255(對(duì)于灰度圖就是黑色或白色)。同樣,若有像素點(diǎn)不在原圖像中,也就說(shuō)明原圖像中有點(diǎn)被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴(kuò)大|x|, 高度擴(kuò)大|y|。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-13 平移前的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-14 平移后的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-15 平移擴(kuò)大后的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像

26、平移的算法圖像平移的算法 按照上述理論,可以比較容易地用VC+來(lái)實(shí)現(xiàn)圖像的平移。下面介紹灰度圖像的平移,因?yàn)榛叶葓D像每個(gè)像素位數(shù)正好是8位,即1個(gè)字節(jié),在進(jìn)行圖像處理時(shí)可以不用考慮拼湊字節(jié)的問(wèn)題。而且由于灰度圖像調(diào)色板的特殊性,進(jìn)行灰度圖像處理時(shí)不必考慮調(diào)色板的問(wèn)題。所以,在介紹圖像處理時(shí),一般采用灰度圖像,以便將重點(diǎn)放在算法本身。由上述分析,可以得到實(shí)現(xiàn)圖像平移的算法如下。 像素的空間關(guān)系-幾何變換基礎(chǔ) /* /函數(shù)名稱(chēng): BOOL TranslationPixel() /基本功能: 本函數(shù)對(duì)傳入的CDibObject對(duì)象中的圖像進(jìn)行逐點(diǎn)平移操作/參數(shù)說(shuō)明: long lXOffset X軸

27、平移量(像素?cái)?shù)) / long lYOffsetY軸平移量(像素?cái)?shù)) /返回值: BOOL 成功返回TRUE, 失敗返回FALSE /注意: 該函數(shù)不會(huì)改變圖像的大小, 移出的部分圖像將截去, 空白部分用白色填充 /* BOOL CGeoTrans: TranslationPixel(long lXOffset, long lYOffset, CDibObject *pDibObject) /定義變量, 獲得源圖像指針及其圖像信息, 為新圖像分配內(nèi)存及用白色填充新圖 像素的空間關(guān)系-幾何變換基礎(chǔ) /由圖像位數(shù)確定的移動(dòng)字節(jié)數(shù)nMovedBits, 對(duì)于灰度圖像有nMovedBits = 1 /

28、每行 for(y = 0; y nHeight; y+) pNewTemp = pNewBits; pNewTemp += (nHeight -1-y) * nWidthBytes; /每列 for(x = 0; x = 0) & (x0 = 0) & (y0 nHeight) 像素的空間關(guān)系-幾何變換基礎(chǔ) /指向源DIB第y0行, 第x0個(gè)像素的指針 pOldTemp = pOldBits; pOldTemp += (nHeight -1-y0) * nWidthBytes; pOldTemp += x0 * nMovedBits; /復(fù)制像素 memcpy( pNewTem

29、p, pOldTemp, nMovedBits ); pNewTemp += nMovedBits; /用新圖像數(shù)據(jù)填充源圖像數(shù)據(jù)區(qū) memcpy( pOldBits, pNewBits, nWidthBytes * nHeight ); 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像鏡像變換圖像鏡像變換 圖像的鏡像變換不改變圖像的形狀。圖像的鏡像(Mirror)變換分為兩種:一種是水平鏡像,另外一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心進(jìn)行鏡像對(duì)換;圖像的垂直鏡像操作是將圖像上半部分和下半部分以圖像水平中軸線為中心進(jìn)行鏡像對(duì)換,如圖6-16所示。 像素的空間關(guān)系-

30、幾何變換基礎(chǔ) 圖6-16 圖像的鏡像 水 平 鏡 像垂 直 鏡 像像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像的鏡像變換也可以用矩陣變換表示。設(shè)點(diǎn)P0(x0, y0)進(jìn)行鏡像后的對(duì)應(yīng)點(diǎn)為P(x, y),圖像高度為fHeight,寬度為fWidth, 原圖像中P0(x0, y0)經(jīng)過(guò)水平鏡像后坐標(biāo)將變?yōu)椋╢Width-x0,y0), 其矩陣表達(dá)式為 110001001100yxfWidthyx(6-3)像素的空間關(guān)系-幾何變換基礎(chǔ) 逆運(yùn)算矩陣表達(dá)式為 110001001100yxfWidthyx即 yyxfWidthx00像素的空間關(guān)系-幾何變換基礎(chǔ) 同樣, P0(x0, y0)經(jīng)過(guò)垂直鏡像后坐標(biāo)將變?yōu)?

31、x0,fHeight-y0), 其矩陣表表達(dá)式為 110010001100yxfHeightyx(6-4)像素的空間關(guān)系-幾何變換基礎(chǔ) 逆運(yùn)算矩陣表達(dá)式為 110010001100yxfHeightyx即 yfWidthyxx00像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像鏡像的算法圖像鏡像的算法 按照上面的變換公式(6-3)和(6-4),可以比較簡(jiǎn)單的實(shí)現(xiàn)圖像的水平和垂直鏡像操作, 讀者可以參照6.3.2中平移的算法, 寫(xiě)出公式(6-3)和(6-4)對(duì)應(yīng)的算法。 和圖像平移一樣,在垂直鏡像中也可以利用位圖存儲(chǔ)的連續(xù)性整行復(fù)制圖像。下面將介紹采用這種方法的算法, 其主要算法如下,bDirection為真

32、時(shí)表示水平鏡像,否則為垂直鏡像。 像素的空間關(guān)系-幾何變換基礎(chǔ) /由圖像位數(shù)確定的移動(dòng)字節(jié)數(shù)nMovedBits /判斷鏡像方式 if (bDirection) /垂直中軸坐標(biāo) int nMiddleX = nWidth / 2; /針對(duì)圖像每行進(jìn)行操作 for(y = 0; y nHeight; y+) /指向圖像的倒數(shù)第y行 pOldTemp = pOldBits; pOldTemp += y * nWidthBytes; pNewTemp = pNewBits; 像素的空間關(guān)系-幾何變換基礎(chǔ) pNewTemp += y * nWidthBytes; /針對(duì)每行圖像左半部分進(jìn)行操作 for

33、(x = 0; x = nMiddleX; x+) /將源圖像第x個(gè)像素復(fù)制到新圖像倒數(shù)第x個(gè)像素 pTemp1 = pOldTemp + x * nMovedBits; pTemp2 = pNewTemp + (nWidth -1 - x) * nMovedBits; memcpy(pTemp2, pTemp1, nMovedBits); /將源圖像倒數(shù)第x個(gè)像素復(fù)制到新圖像第x個(gè)像素 pTemp1 = pOldTemp + (nWidth -1 - x) * nMovedBits; pTemp2 = pNewTemp + x * nMovedBits; memcpy(pTemp2, pTe

34、mp1, nMovedBits); 像素的空間關(guān)系-幾何變換基礎(chǔ) else /水平中軸坐標(biāo) int nMiddleY = nHeight / 2; /針對(duì)上半圖像進(jìn)行操作 for(y = 0; y = nMiddleY; y+) /指向源圖像倒數(shù)第y行像素起點(diǎn)的指針 pOldTemp = pOldBits; pOldTemp += y * nWidthBytes; /指向新圖像第y行像素起點(diǎn)的指針 pNewTemp = pNewBits; pNewTemp += (nHeight - 1 - y) * nWidthBytes; /將源圖像倒數(shù)第y行像素復(fù)制到新圖像第y行 像素的空間關(guān)系-幾何變

35、換基礎(chǔ) memcpy(pNewTemp, pOldTemp, nWidthBytes); /指向源圖像第y行像素起點(diǎn)的指針 pOldTemp = pOldBits; pOldTemp += (nHeight -1 -y) * nWidthBytes; /指向新圖像倒數(shù)第y行像素起點(diǎn)的指針 pNewTemp = pNewBits; pNewTemp += y * nWidthBytes; /將源圖像第y行像素復(fù)制到新圖像倒數(shù)第y行 memcpy(pNewTemp, pOldTemp, nWidthBytes); /用新圖像數(shù)據(jù)填充原圖像數(shù)據(jù)區(qū) memcpy( pOldBits, pNewBits

36、, nWidthBytes * nHeight ); 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-17 鏡像前的圖像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-18 水平鏡像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-19 垂直鏡像 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像旋轉(zhuǎn)變換圖像旋轉(zhuǎn)變換 本節(jié)介紹一種相對(duì)復(fù)雜的幾何變換圖像的旋轉(zhuǎn)。一般圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn),將圖像上的所有像素都旋轉(zhuǎn)一個(gè)相同的角度。圖像的旋轉(zhuǎn)變換是圖像的位置變換,但旋轉(zhuǎn)后,圖像的大小一般會(huì)改變。和圖像平移一樣, 在圖像旋轉(zhuǎn)變換中既可以把轉(zhuǎn)出顯示區(qū)域的圖像截去, 也可以擴(kuò)大圖像范圍以顯示所有的圖像。如圖6-20、 圖6-21所示。 像素的空間

37、關(guān)系-幾何變換基礎(chǔ) 圖6-20 旋轉(zhuǎn)前的圖像 1243像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-21 旋轉(zhuǎn)后的圖像(擴(kuò)大圖像、 轉(zhuǎn)出部分被截) 1243像素的空間關(guān)系-幾何變換基礎(chǔ) 同樣,圖像的旋轉(zhuǎn)變換也可以用矩陣變換表示。設(shè)點(diǎn)P0(x0, y0)旋轉(zhuǎn)角后的對(duì)應(yīng)點(diǎn)為P(x, y), 如圖6-22所示。那么, 旋轉(zhuǎn)前后點(diǎn)P0(x0, y0)、 P(x, y)的坐標(biāo)分別是: 圖6-22 圖像旋轉(zhuǎn)角rrxy(x , y)(x0 , y0)O像素的空間關(guān)系-幾何變換基礎(chǔ) cossinsincoscossin)sin(sincossinsincoscos)cos(sincos000000yxrrryyxrrr

38、xryrx寫(xiě)成矩陣表達(dá)式為 11000cossin0sincos100yxyx(6-5)像素的空間關(guān)系-幾何變換基礎(chǔ) 其逆運(yùn)算為其逆運(yùn)算為 11000cossin0sincos100yxyx 利用公式(6-5)可以確定旋轉(zhuǎn)后圖像上的像素。例如,當(dāng)=30時(shí),公式(6-5)為 866. 05 . 05 . 0866. 0 xyyxx像素的空間關(guān)系-幾何變換基礎(chǔ) 而且, 此時(shí) xmin=0.866-0.53=-0.634; xmin=0.8663-0.5=2.098ymin=0.866+0.5=1.366; ymax=0.8663+0.53=4.098圖6-23 圖像旋轉(zhuǎn)角 30像素的空間關(guān)系-幾何

39、變換基礎(chǔ) 利用公式(6-5)進(jìn)行圖像旋轉(zhuǎn)時(shí)需要注意如下兩點(diǎn): (1) 圖像旋轉(zhuǎn)之前, 為了避免信息的丟失, 一定要有坐標(biāo)平移,具體的做法有如圖6-24所示的兩種方法。 圖6-24 圖像旋轉(zhuǎn)之前進(jìn)行的平移 xyyxOO像素的空間關(guān)系-幾何變換基礎(chǔ) (2) 圖像旋轉(zhuǎn)之后,會(huì)出現(xiàn)許多空洞點(diǎn), 如圖6-23所示。對(duì)這些空洞點(diǎn)必須進(jìn)行填充處理,否則畫(huà)面效果不好,一般也稱(chēng)這種操作為插值處理。最簡(jiǎn)單的方法是行插值方法或列插值方法: 找出當(dāng)前行的最小和最大的非白點(diǎn)的坐標(biāo),記作: (i, k1)、 (i, k2)。 在(k1, k2)范圍內(nèi)進(jìn)行插值,插值的方法是:空點(diǎn)的像素值等于前一點(diǎn)的像素值。 同樣的操作重復(fù)

40、到所有行。經(jīng)過(guò)如上的插值處理之后, 圖像效果就變得自然。如圖6-25所示。列插值方法與此類(lèi)同, 請(qǐng)讀者自己給出。 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖6-25 圖6-23中的圖像處理后的效果 像素的空間關(guān)系-幾何變換基礎(chǔ) 圖像旋轉(zhuǎn)的實(shí)現(xiàn)圖像旋轉(zhuǎn)的實(shí)現(xiàn) 按照上述理論,也可以用VC+編程實(shí)現(xiàn)圖像的旋轉(zhuǎn)。為了將重點(diǎn)放在算法本身,下面介紹灰度圖像的旋轉(zhuǎn)算法。由上面的公式(6-6)以及產(chǎn)生空穴時(shí)的雙線性插值方法,可以編制一個(gè)實(shí)現(xiàn)圖像旋轉(zhuǎn)的函數(shù)RotateDIB2()。下面給出這個(gè)函數(shù)的框架和主要算法。 /* /函數(shù)名稱(chēng): BOOL Rotate() /基本功能: 本函數(shù)對(duì)傳入的CDibObject對(duì)象中的圖

41、像進(jìn)行旋轉(zhuǎn)操作 /參數(shù)說(shuō)明: int iRotateAngle 旋轉(zhuǎn)的角度(0360度) / BOOL bBilinear TRUE為雙線性插值, FALSE為最鄰近插值 / CDibObject *pDibObject 默認(rèn)為NULL 像素的空間關(guān)系-幾何變換基礎(chǔ) /返回值: BOOL 成功返回TRUE, 失敗返回FALSE /* BOOL CGeoTrans: Rotate(int nRotateAngle, BOOL bBilinear, CDibObject *pDibObject) /獲得圖像寬度和高度: nOldWidth、 nOldHeight /定義旋轉(zhuǎn)角度(弧度)及其正弦和余

42、弦值: fRotateAngle、 fSina、 fCosa /定義源圖四個(gè)角的坐標(biāo)、 旋轉(zhuǎn)后四個(gè)角的坐標(biāo)(以圖像中心為坐標(biāo)系原點(diǎn)) /計(jì)算旋轉(zhuǎn)角度的正弦和余弦值 /計(jì)算源圖的四個(gè)角的坐標(biāo)(以圖像中心為坐標(biāo)系原點(diǎn)) /計(jì)算新圖四個(gè)角的坐標(biāo)(以圖像中心為坐標(biāo)系原點(diǎn)) 像素的空間關(guān)系-幾何變換基礎(chǔ) fDstX1 = fCosa * fSrcX1 + fSina * fSrcY1; fDstY1 = -fSina * fSrcX1 + fCosa * fSrcY1; fDstX2 = fCosa * fSrcX2 + fSina * fSrcY2; fDstY2 = -fSina * fSrcX2

43、+ fCosa * fSrcY2; fDstX3 = fCosa * fSrcX3 + fSina * fSrcY3; fDstY3 = -fSina * fSrcX3 + fCosa * fSrcY3; fDstX4 = fCosa * fSrcX4 + fSina * fSrcY4; fDstY4 = -fSina * fSrcX4 + fCosa * fSrcY4; /計(jì)算旋轉(zhuǎn)后的圖像實(shí)際寬度 int nNewWidth=(long)(max(fabs(fDstX4-fDstX1), fabs(fDstX3-fDstX2)+0.5); /計(jì)算旋轉(zhuǎn)后的圖像高度 像素的空間關(guān)系-幾何變換基礎(chǔ)

44、 int nNewHeight=(long)(max(fabs(fDstY4-fDstY1), fabs(fDstY3-fDstY2)+0.5); /計(jì)算兩個(gè)常數(shù) f1= (float) (-0.5 * (nNewWidth - 1) * fCosa - 0.5 * (nNewHeight - 1) * fSina + 0.5 * (nOldWidth - 1); f2= (float) ( 0.5 * (nNewWidth - 1) * fSina - 0.5 * (nNewHeight - 1) * fCosa + 0.5 * (nOldHeight - 1); /獲取指向源圖像的指針,

45、為旋轉(zhuǎn)圖像分配內(nèi)存并用白色填充新圖像數(shù)據(jù)區(qū) /由圖像位數(shù)確定的移動(dòng)字節(jié)數(shù)nMovedBits /針對(duì)圖像每行進(jìn)行操作 for(y = 0; y nNewHeight; y+) 像素的空間關(guān)系-幾何變換基礎(chǔ) /指向新圖像第y行 pNewTemp = pNewBits; pNewTemp += (nNewHeight - 1 - y) * nNewWidthBytes; /針對(duì)圖像每列進(jìn)行操作 for(x = 0; x = 0) & (x0 = 0) & (y0 GetNumBits() ) case 8: nMovedBits = 1; break; case 16: nMove

46、dBits = 2; break; 像素的空間關(guān)系-幾何變換基礎(chǔ) case 24: nMovedBits = 3; break; case 32: nMovedBits = 4; break; / 針對(duì)圖像每行進(jìn)行操作 for(y = 0; y nOldHeight; y+) /指向源圖像第y行 pOldTemp = pOldBits; pOldTemp += (nOldHeight -1 -y) * nOldWidthBytes; / 針對(duì)每行圖像每列進(jìn)行操作 像素的空間關(guān)系-幾何變換基礎(chǔ) for(x = 0; x M02,那么這可能是一個(gè)水平方向拉長(zhǎng)的物體 。 M30M03的幅值可以度量物

47、體對(duì)于垂直和水平軸線的不對(duì)稱(chēng)性。如果是完全對(duì)稱(chēng)的形狀,其值應(yīng)為零。 (p+q)階規(guī)格化中心矩: 利用二階和三階規(guī)格化中心矩可以導(dǎo)出下面七個(gè)不變矩組 。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理, 2 , 1 , 0,),( qpdxdyyxfyxmqppqdxdyyxfyyxxMqppq),()()( , 3 , 2,200qpqprMMrpqpq圖像的特征描述Hu矩組這個(gè)矩組對(duì)于平移、旋轉(zhuǎn)與大小比例變化都是不變的。飛行器目標(biāo)跟蹤、制導(dǎo)中,目標(biāo)的形心是一個(gè)關(guān)鍵的位置參數(shù),他的精確性與否直接影像到目標(biāo)的定位??梢杂镁胤椒▉?lái)確定形心。數(shù)字圖象處理數(shù)字圖象處理數(shù)字圖象處理)()( 3)(3()( 3)()(3()(4)()()()( 3)(3()( 3)()(3()()()3()3(4)(221032123003213012221032123012300321721031230112210321230022062210321230032103212210321230123012305221032123042210321230321120220202201圖像的特征描述投影和截口對(duì)于n x n的二值圖像和抑制背景的圖像f(i,j),它在i,j軸上的投

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論