在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

彩色圖象管理

前言:本站為你精心整理了彩色圖象管理范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。

彩色圖象管理

摘要該文討論了彩色圖像的變形扭曲技術(shù),并針對(duì)二維變形給出了一個(gè)速度、精度均令人滿意的算法。

一、引言

在圖像處理的應(yīng)用中,一般圖像所覆蓋區(qū)域邊界是規(guī)則的矩形。為獲得某種特殊效果,常常需要將圖像變換到具有任意不規(guī)則邊界的二維區(qū)域或映像到三維空間曲面,簡(jiǎn)單地說(shuō),這就是所謂的圖像變形技術(shù)。本文重點(diǎn)討論了其中的任意二維多邊形區(qū)域的變形問(wèn)題,并針對(duì)彩色圖像給出一個(gè)切實(shí)可行的算法。而三維情況下,則屬于計(jì)算機(jī)圖形學(xué)中的紋理貼面范圍,一般均會(huì)牽涉到立體圖形消隱、明暗處理等技術(shù),比較復(fù)雜,本文未作深入探討。

二、變換原理

本文所要討論的二維變形問(wèn)題可以形式化說(shuō)明如下:圖像定義在矩形區(qū)域ABCD之上,源多邊形區(qū)域P=p1p2…pnp1(Pi為頂點(diǎn),i=1,2,…n)完全包含在ABCD內(nèi);變形就是通過(guò)變換f,將P上的圖像變換到目的多邊形區(qū)域Q=Q1Q2…QnQ1(Qi為頂點(diǎn),i=1,2,…n),其中,P與Q中的各頂點(diǎn)一一對(duì)應(yīng),即有:Qi=f(Pi)(i=1,2…n)。圖1是變形的一個(gè)簡(jiǎn)單例子:圖中的源多邊形區(qū)域是矩形區(qū)域ABCD,目的多邊形為任意四邊形EFGH,陰影部分在變換前后的變化清楚地說(shuō)明了變形的效果。

@@T5S13200.GIF;圖1@@

那么,變換應(yīng)該如何進(jìn)行呢?

一種直接的思路是顯式地求出變換f的表達(dá)式。而f的實(shí)施又分兩種方法;其一為正向變換法,即用f將P內(nèi)的任一像素點(diǎn)變換到Q內(nèi),取原像素值加以顯示。由于P與Q所包含像素點(diǎn)的數(shù)目一般不相同,甚至相差很大,造成Q中的像素點(diǎn)或者未被賦值,形成令人討厭的空洞,或者被多次賦值,浪費(fèi)了時(shí)間,總的效果不理想;其二利用f的反變換f-1,將Q內(nèi)的每一像素點(diǎn)反變換至P內(nèi)的對(duì)應(yīng)點(diǎn),一般此點(diǎn)具有實(shí)數(shù)坐標(biāo),則可以通過(guò)插值,確定其像素值,這樣,結(jié)果圖像中的每一像素點(diǎn)均被賦值唯一的一次,既提高了精度,又可以避免不必要的賦值,使用效果較好。

上述顯示求變換(或反變換)的表達(dá)式的思路,比較精確,但是這往往牽涉到復(fù)雜的多元方程求解問(wèn)題,并非輕易可以完成。本文所給出的另外一條思路是:既然P與Q中各頂點(diǎn)一一對(duì)應(yīng),組成變換對(duì),即源多邊形P中的任一頂點(diǎn)Pi(i=1,2…n)經(jīng)過(guò)變換f,得到目的多邊形Q中的頂點(diǎn)Qi(i=1,2…n),則Qi的反變換點(diǎn)也必為Pi。這樣,對(duì)Q內(nèi)(包括邊界)的各像素點(diǎn)A,可以利用各頂點(diǎn)的反變換點(diǎn)的坐標(biāo)值通過(guò)雙線性插值技術(shù)近似求出其反變換點(diǎn)B;再用點(diǎn)B的坐標(biāo)值在源圖像中進(jìn)行插值,最終求得結(jié)果像素值,用于顯示A。

第二種方法在保留一定精度的前提下,避免了變換表達(dá)式的顯式求解,實(shí)現(xiàn)簡(jiǎn)便。本文基于此思想,設(shè)計(jì)了一個(gè)快速變形算法;另外,算法中還借鑒了多邊形區(qū)域掃描轉(zhuǎn)換的掃描線算法的思路,以實(shí)現(xiàn)對(duì)Q內(nèi)各像素點(diǎn)的高效掃描。以下,本文首先介紹了插值技術(shù)及增量計(jì)算技術(shù),然后將給出二維變形算法的詳細(xì)步驟。

三、插值技術(shù)

已知目的多邊形Q各頂點(diǎn)Qi(i=1,2…n)的變換坐標(biāo)值,如何求出Q內(nèi)任一像素的反變換坐標(biāo)呢?雙線性插值法是一種簡(jiǎn)單快速的近似方法。具體做法是:先用多邊形頂點(diǎn)Qi(i=1,2…n)的反變換坐標(biāo)線性插值出當(dāng)前掃描線與多邊形各邊的交點(diǎn)的反變換坐標(biāo),然后再用交點(diǎn)的反變換坐標(biāo)線性插值出掃描線位于多邊形內(nèi)的區(qū)段上每一像素處的反變換坐標(biāo)值用于以后的計(jì)算。逐條掃描線處理完畢后,Q內(nèi)每一像素點(diǎn)的反變換坐標(biāo)值也就均求出來(lái)了。如圖2中所示,掃描線Y(縱坐標(biāo)=Y)與多邊形相交于點(diǎn)A和B兩點(diǎn),D則是位于掃描線上位于多邊形內(nèi)的區(qū)段AB上的任一點(diǎn)。已知多邊形的3個(gè)頂點(diǎn)Qi(i=1,2,3)的反變換坐標(biāo)為(RXi,RYi);

又令A(yù)、B及D各點(diǎn)的反變換坐標(biāo)分別是(RXa,RYa),(RXb,RYb)和(RXd,RYd)。則RXp可按以下公式求出:

RXa=uRX1+(1-u)RX2式1

RXb=vRX1+(1-v)RX3式2

RXd=tRXa+(1-t)RXb式3

其中,u=|AQ2|/|Q1Q2|,v=|BQ3|/|Q1Q3|,t=|DB|/|AB|,

稱為插值參數(shù)。

RYd的值亦可完全類似地求出,甚至不必改變插值參數(shù)的計(jì)算。(Rxd,Ryd)即是D點(diǎn)在原圖像中對(duì)應(yīng)點(diǎn)的坐標(biāo)近似值。

@@T5S13201.GIF;圖2@@

上述的雙線性插值過(guò)程可以通過(guò)增量計(jì)算方法提高速度。其中,在水平方向上,位于多邊形內(nèi)的各區(qū)段上的各像素的反變換坐標(biāo)可以沿掃描線從左至右遞增計(jì)算。仍以反變換的X坐標(biāo)為例。如圖2所示,在掃描線Y上,C與D是相鄰兩像素點(diǎn),對(duì)C點(diǎn),插值參數(shù)tc=|CB|/|AB|,對(duì)D點(diǎn),td=|DB|/|AB|,則插值參數(shù)之差△t=|CD|/|AB|,由于C與D相鄰,且在同一掃描線上,|CD|=1,即△t=1/|AB|,在AB區(qū)段上為常數(shù)。根據(jù)式1~式3,不難推得D點(diǎn)的反變換X坐標(biāo)Rxd與C點(diǎn)的反變換X坐標(biāo)Rxc之間的關(guān)系如下:

Rxd=Rxc+(Rxa-Rxb)·△t=Rxc+△Rxx

由于△Rxx在AB區(qū)段仍為常數(shù),故AB區(qū)段上各像素點(diǎn)的反變換X坐標(biāo)均可由A點(diǎn)的Rxa依次遞增求得,而反變換Y坐標(biāo)的遞增求法亦是相同。這樣,AB區(qū)段上各像素點(diǎn)的反變換坐標(biāo)值的計(jì)算簡(jiǎn)化為兩次加法,時(shí)間的節(jié)省是驚人的。事實(shí)上,在垂直方向,每條邊也可在相鄰掃描線間遞增計(jì)算其與掃描線交點(diǎn)的反變換坐標(biāo)。如圖2中的Q1Q2邊,其與相鄰的兩條掃描線Y與Y-1分別交于A點(diǎn)和E點(diǎn)。則兩點(diǎn)的插值參數(shù)之差△u=|AE|/|Q1Q2|,而Q1Q2邊與掃描線交角固定為θ,且A和E兩點(diǎn)的Y坐標(biāo)之差為1,則有:|AE|=1/Sinθ,對(duì)于Q1Q2邊而言是常量,因此△u對(duì)此邊也是常量,于是推得兩點(diǎn)反變換X坐標(biāo)關(guān)系如下:

Rxa=Rxe+(Rx1-Rx2)△u=Rxe+△Rxy

顯然,△Rxy沿Q1Q2邊亦是常數(shù),故而可知,相鄰掃描線與各邊交點(diǎn)的反變換坐標(biāo)也只要兩次浮點(diǎn)加法的計(jì)算量。這樣,區(qū)域內(nèi)每一像素點(diǎn)的反變換均可通過(guò)增量計(jì)算高效地完成,這大大提高了整個(gè)變形算法的速度。

另外,前面提到,經(jīng)過(guò)反變換后的點(diǎn)一般具有實(shí)數(shù)坐標(biāo),無(wú)法直接在原圖像中獲得顏色值。但我們知道,一幅所謂數(shù)字圖像,其實(shí)質(zhì)是對(duì)連續(xù)圖像在整數(shù)坐標(biāo)網(wǎng)格點(diǎn)上的離散采樣,因而可以用插值的方法,得到區(qū)域內(nèi)具有任意坐標(biāo)的點(diǎn)的顏色值。插值即是對(duì)任意坐標(biāo)點(diǎn)的顏色值,用其周圍的若干像素(具有整值坐標(biāo)值,顏色值確定)的顏色值按一定插值公式近似計(jì)算。一般有最近鄰點(diǎn)法、雙線性插值法及3次樣條函數(shù)法等插值方法,出于精度與速度的折衷要求,選用雙線性插值方法對(duì)絕大多數(shù)的應(yīng)用場(chǎng)合是適宜的。需特別指出的是,應(yīng)該對(duì)顏色的3原色分量分別進(jìn)行插值,而不要直接使用讀像素點(diǎn)得到的顏色索引號(hào)。詳細(xì)討論見(jiàn)文獻(xiàn)[1]。

四、算法細(xì)節(jié)

下面將要給出的彩色圖像的二維變形算法以多邊形區(qū)域掃描轉(zhuǎn)化的掃描線算法為框架,且使用相仿的數(shù)據(jù)結(jié)構(gòu),對(duì)目的多邊形區(qū)域高效地進(jìn)行逐點(diǎn)掃描,同時(shí)實(shí)現(xiàn)前面討論的各種技術(shù)。

首先給出的是用C語(yǔ)言描述的數(shù)據(jù)結(jié)構(gòu):

structEdge{

floatx;/*在邊的分類表ET中表示邊的下端點(diǎn)的x坐標(biāo);在邊的活化鏈

表AEL中則表示邊與掃描線的交點(diǎn)的x坐標(biāo);*/

floatdx;/*邊的斜率的倒數(shù);即沿掃描線間方向X的增量值*/

intYmax;/*邊的上端點(diǎn)的y坐標(biāo)*/

floatRx;/*在ET中表示邊的下端點(diǎn)*/

floatRy;/*的反變換坐標(biāo);在AEL中則表示邊與掃描線交點(diǎn)的反變換坐標(biāo)*

/

表floatdRx;/*沿掃描線間方向,反變*/

floatdRy;/*換坐標(biāo)(Rx,Ry)的增量值*/

structEdge*next;/*指向下一條邊的指針*/

};/*多邊形的邊的信息*/

structEdge*ET[YResolution];

/*邊的分類表,按邊的下端點(diǎn)的縱坐標(biāo)Y對(duì)非水平邊進(jìn)行分類的指針數(shù)組。

下端點(diǎn)的Y值等于i的邊歸入第i類,同一類中,各邊按X值及△X的值遞增順序排列;YResolution為掃描線數(shù)目*/

structEdye*AEL;

表/*邊的活化鏈表,由與當(dāng)前掃描線相交的所有多邊形的邊組成,記錄了多邊形邊沿當(dāng)前掃描線的交點(diǎn)序列。*/

structPolygon{

intnpts;/*多邊形頂點(diǎn)數(shù)*/

structPoint*Pts;

/*多邊形的頂點(diǎn)序列*/

};/*多邊形信息*/

structPoint{

intX;

intY;/*頂點(diǎn)坐標(biāo)*/

floatRx;

floatRy;/*頂點(diǎn)的反變換坐標(biāo)*/

};/*多邊形各頂點(diǎn)的信息*/

注意以上注釋中邊的下端點(diǎn)指縱坐標(biāo)值較小的一端,另一端即為上端點(diǎn)。

以下則為算法的詳細(xì)步驟:

1.數(shù)據(jù)準(zhǔn)備

對(duì)于每一條非水平邊QiQi+1,設(shè)Qi與Qi+1的坐標(biāo)分別為(Xi,Yi)

及(X

i+1,Yi+1);其反變換坐標(biāo)為(Rxi,Ryi)及(RXi+1,RYi+1)。

則按以下各式對(duì)此邊的信息結(jié)構(gòu)各域進(jìn)行填寫:

X=Xi,Yi<Yi+1

Xi+1,Yi>Yi+1

RX=RXi,Yi<Yi+1

RXi+1,Yi>Yi+1

RY=RYi,Yi<Yi+1

RYi+1,Yi>Yi+1

dx=(xi-xi+1)/(yi-yi+1)

Ymax=max(yi,yi+1)

dRx=(Rxi-Rxi+1)/(yi-yi+1)

dRy=(Ryi-Ryi+1)/(yi-yi+1)

然后將其插入鏈表ET[min(yi,yi+1)]中?;罨叡鞟EL置空。

當(dāng)前掃描線縱坐標(biāo)y取為0,即最小序號(hào)。

2.掃描轉(zhuǎn)換

反復(fù)作以下各步,直到y(tǒng)等于YResolution

(1)若ET[y]非空,則將其內(nèi)所有邊插入AEL。

(2)若AEL非空,則將其按X及dx的值從小到大排列各邊,接(3);否則轉(zhuǎn)

(3)將AEL內(nèi)各邊按排列順序兩兩依次配對(duì)。則沿當(dāng)前掃描線Y組成若干水平區(qū)間[xLeft,xRight],其左右端點(diǎn)的反變換坐標(biāo)分別為:(lRx,lRy),(rRx,rRy)。則對(duì)于每一個(gè)這樣的區(qū)間作以下各步:

dRxx=(lRx-rRx)/(xleft-xRight)

dRyx=(lRy-rRy)/(xleft-xRight)

又設(shè)原圖像已讀入二維數(shù)組Image之中。令XX=xleft,Rxy=lRx,Ryx=lRy則對(duì)于每個(gè)滿足xLeft≤xX≤xRight的坐標(biāo)為(xx,y)的像素,其反變換坐標(biāo)(Rxy,Ryx)可按下式增量計(jì)算:

Rxx=Rxx+dRxx

Ryx=Ryx+dRyy

用(Rxx,Ryx)在數(shù)組Image之中插值,(參見(jiàn)文獻(xiàn)[1]),按所得顏色值顯示該像素。然后邊x=x+1,計(jì)算下一像素。

(4)將AEL中滿足y=Ymax的邊刪去,然后按下式調(diào)整AEL中各邊的信息。

X=X+dx

Rx=Ry+dRx

Ry=Ry+dRy

(5)y=y+1,重復(fù)下一點(diǎn)。

五、討論

上述算法針對(duì)彩色圖像的二維變形問(wèn)題,給出了一個(gè)簡(jiǎn)單快速的實(shí)現(xiàn)方案。至于三維變形,由于一般會(huì)牽涉到隱藏面消除等問(wèn)題,比較復(fù)雜。但在一些情況下,可以避開(kāi)消隱問(wèn)題,如目的曲面形狀比較簡(jiǎn)單,投影到屏幕后,各部分均不發(fā)生重疊,也就沒(méi)有必要使用消隱技術(shù),直接投影就可以了。這時(shí)就仍然可以利用本文介紹的二維變形技術(shù),進(jìn)行處理。方法是:

將曲面用許多小平面多邊形進(jìn)行逼近,再將各個(gè)小多邊形投影到屏幕上,形成二維多邊形。

在確定了小多邊形到原圖像各部分的對(duì)應(yīng)關(guān)系之后,三維問(wèn)題就轉(zhuǎn)化成了二維問(wèn)題,速度比較快,也能達(dá)到一定的效果。若掌握了消隱技術(shù)之后,則可以處理任意的曲面變形了,思路同上。

參考文獻(xiàn)

[1]向輝壽標(biāo)“真實(shí)感圖像的顏色插值及其應(yīng)用”,計(jì)算機(jī)世界月刊,1992年10月

克山县| 建瓯市| 河东区| 安丘市| 慈溪市| 大竹县| 寻甸| 平武县| 芒康县| 长治县| 安徽省| 凤城市| 高尔夫| 新民市| 澜沧| 岳普湖县| 阿瓦提县| 同心县| 广宁县| 潍坊市| 商都县| 无极县| 永福县| 东乌珠穆沁旗| 通化县| 鱼台县| 翁牛特旗| 涡阳县| 德保县| 丽水市| 岚皋县| 宣汉县| 西安市| 呼伦贝尔市| 文水县| 宁津县| 揭阳市| 长子县| 左权县| 萨嘎县| 正阳县|