




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、像素的空間關系圖像由基本單元-像素組成像素在圖像空間按照某種規(guī)律排列,相互之間有一定聯(lián)系像素有一定的空間位置空間變換-從一個空間到另一個空間坐標變換-從空間一個位置轉換到另外一個位置內(nèi)容:像素間的聯(lián)系;基本坐標變換;幾何失真校正數(shù)字圖象處理像素的空間關系-像素的鄰域鄰域和鄰接對于任意像素(i,j),把像素的集合(i+p,j+q)叫像素 (i,j)的鄰域,像素(i,j)附近的像素形成的區(qū)域,常用4鄰域、對角鄰域、8鄰域。數(shù)字圖象處理p3p2p1p4pp0p5P6p7像素的空間關系-像素的鄰域4鄰域與4鄰接上、下、左、右四個像素p0,p2,p4,p6稱為p的4鄰域;互為4鄰接的兩像素叫4鄰接。數(shù)字
2、圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關系-像素的鄰域對角鄰域與對角鄰接右上、左上、右下、左下四個像素p1,p3,p5,p7稱為p的對角鄰域;互為對角鄰接的兩像素叫對角鄰接。數(shù)字圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關系-像素的鄰域8鄰域與8鄰接上下左右4個像素和四個對角線像素p0p7為8鄰域;互為8鄰接的兩像素叫8鄰接數(shù)字圖象處理p3p2p1p4i,jp0p5P6p7像素的空間關系-連接和連通鄰接-考慮像素的空間關系連接-1、空間上是否接觸 2、灰度是否滿足特定相似準則V表示連接的灰度值集合V=14連接、8連接、混合連接abpcdref數(shù)字圖象處理1110
3、010111 1 10 1 01像素的空間關系-連接和連通鄰接-考慮像素的空間關系連接-1、空間上是否接觸 2、灰度是否滿足特定相似準則V表示連接的灰度值集合V=14連接、8連接、混合連接011010011數(shù)字圖象處理01101000101101001像素的空間關系-連接和連通連通-從像素坐標(x,y)p到像素坐標(s,t)q的一條通路由一系列具有坐標(x0,y0)(xi,yi)(xn,yn)的獨立像素組成。 1=I =n 為長度pq數(shù)字圖象處理pq二值圖像處理與形狀描述概念圖像的二值化 圖像分割(閥值)及邊緣檢測的結果形成二值圖像(1和0) 。二值圖像處理特點圖像容量小,處理速度快,成本低;
4、能定義幾何學的概念;多值圖像可以變成二值圖像處理。二值圖像處理流程數(shù)字圖象處理灰度圖像二值化連接成分的變形圖形特征測量結構分析描述分類測量識別理解二值圖像的連接性和距離像素的連接對于二值圖像中,具有相同值的兩個像素a和b,所有和a、b具有相同值的像素系列p0(a),p1,p2,pn-1,pn(=b)存在,并且pi-1和pi互為4-/8-鄰接,那么像素a和b叫4-/8-連接。像素系列為4-/8-路徑。連接成分在二值圖像中,把互相連接的像素的集合匯集為一組,于是具有若干個0值的像素和具有若干個1值的像素的組就產(chǎn)生了。這些組叫連接成分或連通成分。問題在研究一個二值圖像連接成分的場合,若1像素的連接成
5、分用4/8連接,而0像素連接成分不用相反的8/4連接,連接會產(chǎn)生矛盾。在0像素連接成分中,如果存在和圖像外圍的1行或1列的0像素不相連接的成分,則稱為孔。不包含有孔的1像素連接成分叫單連接成分。包含有孔的1像素連接成分叫多重連接成分。數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理二值圖像的連接性和距離歐拉數(shù)在二值圖像中,1-像素連接成分數(shù)C減去孔數(shù)H的值叫這幅圖像的歐拉數(shù)或示性數(shù)。 E C H對于一個1像素的連接成分,1減去這個連接成分中所包含的孔數(shù)的差值,叫做這個1像素的連接成分的歐拉數(shù)。二值圖像的歐拉數(shù)是所有1像素連接成分的歐拉數(shù)之和。像素的可刪除性二值圖像上改變一個像素的值后,整個圖像的
6、連接性并不改變(各連接成分不分離、 不結合、孔不消失、不產(chǎn)生),則這個像素是可以刪除的。像素的可刪除性可以用像素的連接數(shù)來檢測。連接數(shù)像素p的值用B(p)表示,當B(p)=1時,像素p的連接數(shù)Nc(p)為與p連接的連接成分數(shù)。數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理二值圖像的連接性和距離計算公式計算實例數(shù)字圖象處理1)0100()0111 ()1100()0000()()()()()()()()()()()()()()()()()(8766654443222100)8(pBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpNc0882k)(1)(6420SpppBpBkk時,
7、當,式中skkkkkcskkkkkcpBpBpBpBpNpBpBpBpBpN)()()()()()()()()()(21)8(21)4(二值圖像的連接性和距離數(shù)字圖象處理二值圖像的連接性和距離數(shù)字圖象處理二值圖像的連接性和距離像素的連接數(shù)同一圖像,在4或8鄰接的情況下,像素的連接數(shù)不同。他可以作為圖像的特征量。根據(jù)連接數(shù)將像素分類孤立點B(p)=1像素,4/8鄰接像素全是0,Nc(p)=0。內(nèi)部點 B(p)=1像素, 4/8鄰接像素全是1,Nc(p)=0邊界點 B(p)=1像素除孤立點和內(nèi)部點以外的點叫邊界點,1=Nc(p)0變化的過程就表示了標準坐標系中的一個點沿直線變化的過程就表示了標準坐
8、標系中的一個點沿直線 ax+by=0 逐漸走向無窮遠處的過程。逐漸走向無窮遠處的過程。例點S(60 000, 40 000)在16位計算機上表示則大于32 767的最大坐標值, 需要進行復雜的操作。但如果把S的坐標形式變成(Hx, Hy, H)形式的齊次坐標,則情況就不同了。在齊次坐標系中,設H12,則 (60 000,40 000)的齊次坐標為(1/2x, 1/2y, 1/2),那么所要表示的點變?yōu)?30 000, 20 000, 1/2),此點在16位計算機上二進制數(shù)所能表示的范圍之內(nèi)。 像素的空間關系-幾何變換基礎 齊次坐標的幾何意義相當于點(x, y)落在3D空間H1的平面上, 如圖所
9、示。如果將XOY 平面內(nèi)的三角形abc 的各頂點表示成齊次坐標(xi, yi, 1)(i=1, 2, 3)的形式,就變成H1平面內(nèi)的三角形a1b1c1的各頂點。 zxyOabca1b1c1H1齊次坐標的幾何意義齊次坐標的幾何意義像素的空間關系-幾何變換基礎 二維圖像幾何變換的矩陣二維圖像幾何變換的矩陣 利用齊次坐標及改成33階形式的變換矩陣,實現(xiàn)2D圖像幾何變換的基本變換的一般過程是:將2n階的二維點集矩陣 表示成齊次坐標的形式,然后乘以相應的變換矩陣即可完成,即 變換后的點集矩陣=變換矩陣T變換前的點集矩陣 (圖像上各點的新齊次坐標) (圖像上各點的原齊次坐標)niiyx200niiyx30
10、01像素的空間關系-幾何變換基礎 設變換矩陣T為 smlqdcpbaT則上述變換可以用公式表示為 nnnnnnyyyxxxTHHHHyHyHyHxHxHx3212132121111像素的空間關系-幾何變換基礎 圖像上各點的新齊次坐標規(guī)范化后的點集矩陣為 nnnyyyxxx32121111 引入齊次坐標后,表示2D圖像幾何變換的33矩陣的功能就完善了,可以用它完成2D圖像的各種幾何變換。下面討論33階變換矩陣中各元素在變換中的功能。幾何變換的33矩陣的一般形式為 像素的空間關系-幾何變換基礎 sqpmdclbaT 33的階矩陣T可以分成四個子矩陣。其中, 這一子矩陣可使圖像實現(xiàn)恒等、 比例、 反
11、射(或鏡像)、 錯切和旋轉變換。l m這一行矩陣可以使圖像實現(xiàn)平移變換。p qT這一列矩陣可以使圖像實現(xiàn)透視變換,但當p=0,q=0時它無透視作用。s這一元素可以使圖像實現(xiàn)全比例變換。例如, 將圖像進行全比例變換, 即 22dcba像素的空間關系-幾何變換基礎 syxyxsiiii10001000100將齊次坐標 規(guī)范化后, 。由此可見, 當s1時,圖像按比例縮?。划?s1時,整個圖像按比例放大;當s1時,圖像大小不變。 syxii1100iiiiyxsysx像素的空間關系-幾何變換基礎 圖像比例縮放變換圖像比例縮放變換 圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍, 在y軸方向按比
12、例縮放fy倍,從而獲得一幅新的圖像。如果fxfy, 即在x軸方向和y軸方向縮放的比率相同,稱這樣的比例縮放為圖像的全比例縮放。如果fxfy,圖像的比例縮放會改變原始圖像的像素間的相對位置,產(chǎn)生幾何畸變。設原圖像中的點P0(x0,y0)比例縮放后,在新圖像中的對應點為P(x, y),則P0(x0,y0)和P(x, y)之間的對應關系如圖6-3所示。 像素的空間關系-幾何變換基礎 放大后縮放前xy(x , y)(x0 , y0)O圖6-3 比例縮放像素的空間關系-幾何變換基礎 比例縮放前后兩點P0(x0, y0)、P(x, y)之間的關系用矩陣形式可以表示為 11000000100yxfyfxyx
13、(6-1) 公式(6-1)的逆運算為 1100010001100yxfyfxyx像素的空間關系-幾何變換基礎 即 fyyyfxxx00 比例縮放所產(chǎn)生的圖像中的像素可能在原圖像中找不到相應的像素點,這樣就必須進行插值處理。插值處理常用的方法有兩種, 一種是直接賦值為和它最相近的像素值, 另一種是通過一些插值算法來計算相應的像素值。前一種方法計算簡單, 但會出現(xiàn)馬賽克現(xiàn)象;后者處理效果要好些,但是運算量也相應增加。在下面的算法中直接采用了前一種做法。實際上,這也是一種插值算法, 稱為最鄰近插值法(Nearest Neighbor Interpolation)。 像素的空間關系-幾何變換基礎 下面
14、首先討論圖像的比例縮小。最簡單的比例縮小是當 fx=fy=12時,圖像被縮到一半大小,此時縮小后圖像中的(0, 0)像素對應于原圖像中的(0, 0)像素; (0, 1)像素對應于原圖像中的(0, 2)像素; (1, 0)像素對應于原圖像中的(2, 0)像素, 依此類推。圖像縮小之后,因為承載的信息量小了,所以畫布可相應縮小。此時, 只需在原圖像基礎上,每行隔一個像素取一點,每隔一行進行操作,即取原圖的偶(奇)數(shù)行和偶(奇)數(shù)列構成新的圖像,如圖6-4所示。如果圖像按任意比例縮小, 則需要計算選擇的行和列。 像素的空間關系-幾何變換基礎 圖6-4 圖像縮小一半像素的空間關系-幾何變換基礎 如果M
15、N大小的原圖像F(x,y)縮小為 kMkN大小(k1)的新圖像I(x,y)時,則I(x, y)=F(int(cx), int(cy)其中, c=1k。由此公式可以構造出新圖像,如圖6-5所示。 k 1/3圖6-5 圖像按任意比例縮小像素的空間關系-幾何變換基礎 當fxfy(fx, fy0)時,圖像不按比例縮小,這種操作因為在x方向和y方向的縮小比例不同,一定會帶來圖像的幾何畸變。圖像不按比例縮小的方法是: 如果MN大小的舊圖F(x,y)縮小為k1Mk2N(k11,k21)大小的新圖像I(x,y)時,則 I(x, y)=F(int(c1x), int(c2y) 其中 2211,1kckc由此公式
16、可以構造出新圖像。 像素的空間關系-幾何變換基礎 圖像在縮小操作中,是在現(xiàn)有的信息里如何挑選所需要的有用信息。而在圖像的放大操作中,則需要對尺寸放大后所多出來的空格填入適當?shù)南袼刂担@是信息的估計問題,所以較圖像的縮小要難一些。當fxfy2時,圖像被按全比例放大2倍, 放大后圖像中的(0,0)像素對應于原圖中的(0,0)像素;(0,1)像素對應于原圖中的(0,0.5)像素,該像素不存在,可以近似為(0,0)也可以近似 (0,1); (0,2)像素對應于原圖像中的(0,1)像素;(1,0)像素對應于原圖中的(0.5,0),它的像素值近似于(0, 0)或(1,0)像素; (2,0)像素對應于原圖中
17、的(1,0)像素,依此類推。其實這是將原圖像每行中的像素重復取值一遍,然后每行重復一次。圖6-6是原始圖像,圖6-7和圖6-8是分別采用上述兩種近似方法放大后的圖像。 像素的空間關系-幾何變換基礎 圖6-6 放大前的圖像 像素的空間關系-幾何變換基礎 圖6-7 按最近鄰域法放大兩倍的圖像 像素的空間關系-幾何變換基礎 圖6-8 按插值法放大兩倍的圖像 像素的空間關系-幾何變換基礎 一般地,按比例將原圖像放大k倍時,如果按照最近鄰域法則需要將一個像素值添在新圖像的kk的子塊中,如圖6-9所示。顯然,如果放大倍數(shù)太大, 按照這種方法處理會出現(xiàn)馬賽克效應。當fxfy(fx, fy0)時,圖像在x方向
18、和y方向不按比例放大, 此時, 這種操作由于x方向和y方向的放大倍數(shù)不同,一定帶來圖像的幾何畸變。放大的方法是將原圖像的一個像素添到新圖像的一個k1k2的子塊中去。為了提高幾何變換后的圖像質量, 常采用線性插值法。該方法的原理是,當求出的分數(shù)地址與像素點不一致時,求出周圍四個像素點的距離比,根據(jù)該比率, 由四個鄰域的像素灰度值進行線性插值, 如圖6-10所示。 像素的空間關系-幾何變換基礎 圖6-9 按最近鄰域法放大五倍的圖像 放大5倍像素的空間關系-幾何變換基礎 圖6-10 線性插值法示意圖 (x , y)(x , y 1)(x 1 , y)x , y(x 1 , y 1)p1 p1 qq像
19、素的空間關系-幾何變換基礎 簡化后的灰度值計算式如下: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)為坐標(x,y)處的灰度值,x、y 分別為不大于x,y的整數(shù)。關于這個問題的詳細算法及其實現(xiàn), 讀者可以參考有關參考文獻。 像素的空間關系-幾何變換基礎 6.2.2 比例縮放的實現(xiàn)比例縮放的實現(xiàn) 圖6-11 圖像比例縮放處理結果 像素的空間關系-幾何變換基礎 下面給出這個函數(shù)的框架和主要算法。 /* /函數(shù)名稱: BOOL ZoomImage() /基本功能: 本函數(shù)對傳入的CDibObject對象中
20、的圖像進行縮放操作 /參數(shù)說明: float fXZoomRatio X軸方向縮放比率 / float fYZoomRatio Y軸方向縮放比率 / BOOL bBilinear TRUE為雙線性插值, FALSE為最鄰近插值 / CDibObject *pDibObject 默認為NULL /返回值: BOOL 成功返回TRUE, 失敗返回FALSE 像素的空間關系-幾何變換基礎 /* BOOL CGeoTrans: ZoomImage(float fXZoomRatio, float fYZoomRatio, BOOL bBilinear, CDibObject *pDibObject)
21、/獲得圖像寬度和高度, 計算縮放后的圖像實際寬度 nNewWidth = (int)(nOldWidth * fXZoomRatio + 0.5); nNewHeight = (int)(nOldHeight * fYZoomRatio + 0.5); /獲取源圖像指針,為新圖像分配內(nèi)存,用白色填充新圖像數(shù)據(jù)區(qū),調整新圖像信息 /由圖像位數(shù)確定的移動字節(jié)數(shù)nMovedBits /針對圖像每行進行操作 for(y = 0; y nNewHeight; y+) 像素的空間關系-幾何變換基礎 /指向新圖像第y行 pNewTemp = pNewBits; pNewTemp += (nNewHeight
22、 -1KG*3-y) * nNewWidthBytes; /針對圖像每列進行操作 for(x = 0; x = 0) & (x0 = 0) & (y0 nOldHeight) if(bBilinear) 像素的空間關系-幾何變換基礎 /雙線性插值 else /指向源圖像第y0行, 第x0個像素 pOldTemp = pOldBits; pOldTemp += (nOldHeight - 1 - y0) * nOldWidthBytes; pOldTemp += x0 * nMovedBits; memcpy(pNewTemp, pOldTemp, nMovedBits); pN
23、ewTemp += nMovedBits; /將內(nèi)存解鎖和將不再使用的內(nèi)存釋放, 將新圖像設置為當前圖像 return TRUE; 像素的空間關系-幾何變換基礎 圖像平移變換圖像平移變換 x2 , y1圖6-12 圖像平移像素的空間關系-幾何變換基礎 設點P0(x0, y0)進行平移后,移到P(x, y),其中x方向的平移量為x,y方向的平移量為y。那么,點P(x, y)的坐標為 yyyxxx00 利用齊次坐標,變換前后圖像上的點P0(x0, y0)和P(x, y)之間的關系可以用如下的矩陣變換表示為 11001001100yxyxyx(6-2)像素的空間關系-幾何變換基礎 對變換矩陣求逆,可
24、以得到式(6-2)的逆變換 11001001100yxyxyx即 yyyxxx00像素的空間關系-幾何變換基礎 這樣,平移后的圖像上的每一點都可以在原圖像中找到對應的點。例如,對于新圖中的(0,0)像素,代入上面的方程組, 可以求出對應原圖中的像素(-x,-y)。如果x或y大于0, 則點(-x,-y)不在原圖像中。對于不在原圖像中的點,可以直接將它的像素值統(tǒng)一設置為0或者255(對于灰度圖就是黑色或白色)。同樣,若有像素點不在原圖像中,也就說明原圖像中有點被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴大|x|, 高度擴大|y|。 像素的空間關系-幾何變換基礎 圖6-13
25、 平移前的圖像 像素的空間關系-幾何變換基礎 像素的空間關系-幾何變換基礎 圖6-14 平移后的圖像 像素的空間關系-幾何變換基礎 圖6-15 平移擴大后的圖像 像素的空間關系-幾何變換基礎 像素的空間關系-幾何變換基礎 圖像平移的算法圖像平移的算法 按照上述理論,可以比較容易地用VC+來實現(xiàn)圖像的平移。下面介紹灰度圖像的平移,因為灰度圖像每個像素位數(shù)正好是8位,即1個字節(jié),在進行圖像處理時可以不用考慮拼湊字節(jié)的問題。而且由于灰度圖像調色板的特殊性,進行灰度圖像處理時不必考慮調色板的問題。所以,在介紹圖像處理時,一般采用灰度圖像,以便將重點放在算法本身。由上述分析,可以得到實現(xiàn)圖像平移的算法如
26、下。 像素的空間關系-幾何變換基礎 /* /函數(shù)名稱: BOOL TranslationPixel() /基本功能: 本函數(shù)對傳入的CDibObject對象中的圖像進行逐點平移操作/參數(shù)說明: long lXOffset X軸平移量(像素數(shù)) / long lYOffsetY軸平移量(像素數(shù)) /返回值: BOOL 成功返回TRUE, 失敗返回FALSE /注意: 該函數(shù)不會改變圖像的大小, 移出的部分圖像將截去, 空白部分用白色填充 /* BOOL CGeoTrans: TranslationPixel(long lXOffset, long lYOffset, CDibObject *pD
27、ibObject) /定義變量, 獲得源圖像指針及其圖像信息, 為新圖像分配內(nèi)存及用白色填充新圖 像素的空間關系-幾何變換基礎 /由圖像位數(shù)確定的移動字節(jié)數(shù)nMovedBits, 對于灰度圖像有nMovedBits = 1 /每行 for(y = 0; y nHeight; y+) pNewTemp = pNewBits; pNewTemp += (nHeight -1-y) * nWidthBytes; /每列 for(x = 0; x = 0) & (x0 = 0) & (y0 nHeight) 像素的空間關系-幾何變換基礎 /指向源DIB第y0行, 第x0個像素的指針 p
28、OldTemp = pOldBits; pOldTemp += (nHeight -1-y0) * nWidthBytes; pOldTemp += x0 * nMovedBits; /復制像素 memcpy( pNewTemp, pOldTemp, nMovedBits ); pNewTemp += nMovedBits; /用新圖像數(shù)據(jù)填充源圖像數(shù)據(jù)區(qū) memcpy( pOldBits, pNewBits, nWidthBytes * nHeight ); 像素的空間關系-幾何變換基礎 圖像鏡像變換圖像鏡像變換 圖像的鏡像變換不改變圖像的形狀。圖像的鏡像(Mirror)變換分為兩種:一種是
29、水平鏡像,另外一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心進行鏡像對換;圖像的垂直鏡像操作是將圖像上半部分和下半部分以圖像水平中軸線為中心進行鏡像對換,如圖6-16所示。 像素的空間關系-幾何變換基礎 圖6-16 圖像的鏡像 水 平 鏡 像垂 直 鏡 像像素的空間關系-幾何變換基礎 圖像的鏡像變換也可以用矩陣變換表示。設點P0(x0, y0)進行鏡像后的對應點為P(x, y),圖像高度為fHeight,寬度為fWidth, 原圖像中P0(x0, y0)經(jīng)過水平鏡像后坐標將變?yōu)椋╢Width-x0,y0), 其矩陣表達式為 110001001100yxfWi
30、dthyx(6-3)像素的空間關系-幾何變換基礎 逆運算矩陣表達式為 110001001100yxfWidthyx即 yyxfWidthx00像素的空間關系-幾何變換基礎 同樣, P0(x0, y0)經(jīng)過垂直鏡像后坐標將變?yōu)?x0,fHeight-y0), 其矩陣表表達式為 110010001100yxfHeightyx(6-4)像素的空間關系-幾何變換基礎 逆運算矩陣表達式為 110010001100yxfHeightyx即 yfWidthyxx00像素的空間關系-幾何變換基礎 圖像鏡像的算法圖像鏡像的算法 按照上面的變換公式(6-3)和(6-4),可以比較簡單的實現(xiàn)圖像的水平和垂直鏡像操作
31、, 讀者可以參照6.3.2中平移的算法, 寫出公式(6-3)和(6-4)對應的算法。 和圖像平移一樣,在垂直鏡像中也可以利用位圖存儲的連續(xù)性整行復制圖像。下面將介紹采用這種方法的算法, 其主要算法如下,bDirection為真時表示水平鏡像,否則為垂直鏡像。 像素的空間關系-幾何變換基礎 /由圖像位數(shù)確定的移動字節(jié)數(shù)nMovedBits /判斷鏡像方式 if (bDirection) /垂直中軸坐標 int nMiddleX = nWidth / 2; /針對圖像每行進行操作 for(y = 0; y nHeight; y+) /指向圖像的倒數(shù)第y行 pOldTemp = pOldBits;
32、pOldTemp += y * nWidthBytes; pNewTemp = pNewBits; 像素的空間關系-幾何變換基礎 pNewTemp += y * nWidthBytes; /針對每行圖像左半部分進行操作 for(x = 0; x = nMiddleX; x+) /將源圖像第x個像素復制到新圖像倒數(shù)第x個像素 pTemp1 = pOldTemp + x * nMovedBits; pTemp2 = pNewTemp + (nWidth -1 - x) * nMovedBits; memcpy(pTemp2, pTemp1, nMovedBits); /將源圖像倒數(shù)第x個像素復制到
33、新圖像第x個像素 pTemp1 = pOldTemp + (nWidth -1 - x) * nMovedBits; pTemp2 = pNewTemp + x * nMovedBits; memcpy(pTemp2, pTemp1, nMovedBits); 像素的空間關系-幾何變換基礎 else /水平中軸坐標 int nMiddleY = nHeight / 2; /針對上半圖像進行操作 for(y = 0; y = nMiddleY; y+) /指向源圖像倒數(shù)第y行像素起點的指針 pOldTemp = pOldBits; pOldTemp += y * nWidthBytes; /指向
34、新圖像第y行像素起點的指針 pNewTemp = pNewBits; pNewTemp += (nHeight - 1 - y) * nWidthBytes; /將源圖像倒數(shù)第y行像素復制到新圖像第y行 像素的空間關系-幾何變換基礎 memcpy(pNewTemp, pOldTemp, nWidthBytes); /指向源圖像第y行像素起點的指針 pOldTemp = pOldBits; pOldTemp += (nHeight -1 -y) * nWidthBytes; /指向新圖像倒數(shù)第y行像素起點的指針 pNewTemp = pNewBits; pNewTemp += y * nWidt
35、hBytes; /將源圖像第y行像素復制到新圖像倒數(shù)第y行 memcpy(pNewTemp, pOldTemp, nWidthBytes); /用新圖像數(shù)據(jù)填充原圖像數(shù)據(jù)區(qū) memcpy( pOldBits, pNewBits, nWidthBytes * nHeight ); 像素的空間關系-幾何變換基礎 圖6-17 鏡像前的圖像 像素的空間關系-幾何變換基礎 圖6-18 水平鏡像 像素的空間關系-幾何變換基礎 圖6-19 垂直鏡像 像素的空間關系-幾何變換基礎 圖像旋轉變換圖像旋轉變換 本節(jié)介紹一種相對復雜的幾何變換圖像的旋轉。一般圖像的旋轉是以圖像的中心為原點,將圖像上的所有像素都旋轉一
36、個相同的角度。圖像的旋轉變換是圖像的位置變換,但旋轉后,圖像的大小一般會改變。和圖像平移一樣, 在圖像旋轉變換中既可以把轉出顯示區(qū)域的圖像截去, 也可以擴大圖像范圍以顯示所有的圖像。如圖6-20、 圖6-21所示。 像素的空間關系-幾何變換基礎 圖6-20 旋轉前的圖像 1243像素的空間關系-幾何變換基礎 圖6-21 旋轉后的圖像(擴大圖像、 轉出部分被截) 1243像素的空間關系-幾何變換基礎 同樣,圖像的旋轉變換也可以用矩陣變換表示。設點P0(x0, y0)旋轉角后的對應點為P(x, y), 如圖6-22所示。那么, 旋轉前后點P0(x0, y0)、 P(x, y)的坐標分別是: 圖6-
37、22 圖像旋轉角rrxy(x , y)(x0 , y0)O像素的空間關系-幾何變換基礎 cossinsincoscossin)sin(sincossinsincoscos)cos(sincos000000yxrrryyxrrrxryrx寫成矩陣表達式為 11000cossin0sincos100yxyx(6-5)像素的空間關系-幾何變換基礎 其逆運算為其逆運算為 11000cossin0sincos100yxyx 利用公式(6-5)可以確定旋轉后圖像上的像素。例如,當=30時,公式(6-5)為 866. 05 . 05 . 0866. 0 xyyxx像素的空間關系-幾何變換基礎 而且, 此時
38、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 圖像旋轉角 30像素的空間關系-幾何變換基礎 利用公式(6-5)進行圖像旋轉時需要注意如下兩點: (1) 圖像旋轉之前, 為了避免信息的丟失, 一定要有坐標平移,具體的做法有如圖6-24所示的兩種方法。 圖6-24 圖像旋轉之前進行的平移 xyyxOO像素的空間關系-幾何變換基礎 (2) 圖像旋轉之后,會出現(xiàn)許多空洞點, 如圖6-23所示。對這些空洞點必須進行填充處理,否則畫面效果不好,一般也稱這種操作為插
39、值處理。最簡單的方法是行插值方法或列插值方法: 找出當前行的最小和最大的非白點的坐標,記作: (i, k1)、 (i, k2)。 在(k1, k2)范圍內(nèi)進行插值,插值的方法是:空點的像素值等于前一點的像素值。 同樣的操作重復到所有行。經(jīng)過如上的插值處理之后, 圖像效果就變得自然。如圖6-25所示。列插值方法與此類同, 請讀者自己給出。 像素的空間關系-幾何變換基礎 圖6-25 圖6-23中的圖像處理后的效果 像素的空間關系-幾何變換基礎 圖像旋轉的實現(xiàn)圖像旋轉的實現(xiàn) 按照上述理論,也可以用VC+編程實現(xiàn)圖像的旋轉。為了將重點放在算法本身,下面介紹灰度圖像的旋轉算法。由上面的公式(6-6)以及
40、產(chǎn)生空穴時的雙線性插值方法,可以編制一個實現(xiàn)圖像旋轉的函數(shù)RotateDIB2()。下面給出這個函數(shù)的框架和主要算法。 /* /函數(shù)名稱: BOOL Rotate() /基本功能: 本函數(shù)對傳入的CDibObject對象中的圖像進行旋轉操作 /參數(shù)說明: int iRotateAngle 旋轉的角度(0360度) / BOOL bBilinear TRUE為雙線性插值, FALSE為最鄰近插值 / CDibObject *pDibObject 默認為NULL 像素的空間關系-幾何變換基礎 /返回值: BOOL 成功返回TRUE, 失敗返回FALSE /* BOOL CGeoTrans: Rot
41、ate(int nRotateAngle, BOOL bBilinear, CDibObject *pDibObject) /獲得圖像寬度和高度: nOldWidth、 nOldHeight /定義旋轉角度(弧度)及其正弦和余弦值: fRotateAngle、 fSina、 fCosa /定義源圖四個角的坐標、 旋轉后四個角的坐標(以圖像中心為坐標系原點) /計算旋轉角度的正弦和余弦值 /計算源圖的四個角的坐標(以圖像中心為坐標系原點) /計算新圖四個角的坐標(以圖像中心為坐標系原點) 像素的空間關系-幾何變換基礎 fDstX1 = fCosa * fSrcX1 + fSina * fSrcY
42、1; fDstY1 = -fSina * fSrcX1 + fCosa * fSrcY1; fDstX2 = fCosa * fSrcX2 + fSina * fSrcY2; fDstY2 = -fSina * fSrcX2 + fCosa * fSrcY2; fDstX3 = fCosa * fSrcX3 + fSina * fSrcY3; fDstY3 = -fSina * fSrcX3 + fCosa * fSrcY3; fDstX4 = fCosa * fSrcX4 + fSina * fSrcY4; fDstY4 = -fSina * fSrcX4 + fCosa * fSrcY4;
43、 /計算旋轉后的圖像實際寬度 int nNewWidth=(long)(max(fabs(fDstX4-fDstX1), fabs(fDstX3-fDstX2)+0.5); /計算旋轉后的圖像高度 像素的空間關系-幾何變換基礎 int nNewHeight=(long)(max(fabs(fDstY4-fDstY1), fabs(fDstY3-fDstY2)+0.5); /計算兩個常數(shù) f1= (float) (-0.5 * (nNewWidth - 1) * fCosa - 0.5 * (nNewHeight - 1) * fSina + 0.5 * (nOldWidth - 1); f2=
44、 (float) ( 0.5 * (nNewWidth - 1) * fSina - 0.5 * (nNewHeight - 1) * fCosa + 0.5 * (nOldHeight - 1); /獲取指向源圖像的指針, 為旋轉圖像分配內(nèi)存并用白色填充新圖像數(shù)據(jù)區(qū) /由圖像位數(shù)確定的移動字節(jié)數(shù)nMovedBits /針對圖像每行進行操作 for(y = 0; y nNewHeight; y+) 像素的空間關系-幾何變換基礎 /指向新圖像第y行 pNewTemp = pNewBits; pNewTemp += (nNewHeight - 1 - y) * nNewWidthBytes; /針
45、對圖像每列進行操作 for(x = 0; x = 0) & (x0 = 0) & (y0 GetNumBits() ) case 8: nMovedBits = 1; break; case 16: nMovedBits = 2; break; 像素的空間關系-幾何變換基礎 case 24: nMovedBits = 3; break; case 32: nMovedBits = 4; break; / 針對圖像每行進行操作 for(y = 0; y nOldHeight; y+) /指向源圖像第y行 pOldTemp = pOldBits; pOldTemp += (nOld
46、Height -1 -y) * nOldWidthBytes; / 針對每行圖像每列進行操作 像素的空間關系-幾何變換基礎 for(x = 0; x M02,那么這可能是一個水平方向拉長的物體 。 M30M03的幅值可以度量物體對于垂直和水平軸線的不對稱性。如果是完全對稱的形狀,其值應為零。 (p+q)階規(guī)格化中心矩: 利用二階和三階規(guī)格化中心矩可以導出下面七個不變矩組 。數(shù)字圖象處理, 2 , 1 , 0,),( qpdxdyyxfyxmqppqdxdyyxfyyxxMqppq),()()( , 3 , 2,200qpqprMMrpqpq圖像的特征描述Hu矩組這個矩組對于平移、旋轉與大小比例變化都是不變的。飛行器目標跟蹤、制導中,目標的形心是一個關鍵的位置參數(shù),他的精確性與否直接影像到目標的定位??梢杂镁胤椒▉泶_定形心。數(shù)字圖象處理)()( 3)(3()( 3)()(3()(4)()()()( 3)(3()( 3)()(3()()()3()3(4)(22103212300321301222103212301230032172103123011221032123002206221032123003210321221032123012301230522103212
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項10 文學常識(試卷版)
- 2025屆江蘇省鹽城市射陽中學高三上學期一模物理試題(解析版)
- 2025屆四川省資陽市安岳中學高三二模語文試題(原卷版+解析版)
- 人教版九年級下冊化學教學工作計劃(含進度表)
- 《跨境電子商務法律法規(guī) 》全套教學課件
- 廣東省廣州市華南師范附屬中學2024-2025學年高二下學期3月月考物理試卷(原卷版+解析版)
- 教育咨詢居間協(xié)議樣本
- 汽車車身電子控制技術指南
- 中醫(yī)護理學(第5版)課件 第三節(jié) 中藥煎服法與護理
- 雨水收集再利用系統(tǒng)
- JJG 257-2007浮子流量計行業(yè)標準
- 2023年 新版評審準則質量記錄手冊表格匯編
- 2024年全國版圖知識競賽(小學組)考試題庫大全(含答案)
- 博物館保安服務投標方案(技術方案)
- (高清版)TDT 1047-2016 土地整治重大項目實施方案編制規(guī)程
- 2024年新疆維吾爾自治區(qū)中考一模綜合道德與法治試題
- 醫(yī)藥代表專業(yè)化拜訪技巧培訓
- 今年夏天二部合唱譜
- 現(xiàn)代制造技術課件
- 小米公司招聘測試題目
- 2024年北京控股集團有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論