亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種強魯棒性自適應活性邊表算法

        2016-08-05 07:58:10姚陳堃
        計算機應用與軟件 2016年7期
        關鍵詞:掃描線多邊形魯棒性

        師 碩 姚陳堃 于 洋

        (河北工業(yè)大學計算機科學與軟件學院 天津 300401)

        ?

        一種強魯棒性自適應活性邊表算法

        師碩姚陳堃于洋

        (河北工業(yè)大學計算機科學與軟件學院天津 300401)

        摘要為提升多邊形的填充效率,在分析和比較常見填充算法后,以活性邊表算法為基礎,深入挖掘不同掃描方向上的求交次數(shù)及多邊形自交特性,提出一種強魯棒性自適應活性邊表算法。新算法引入橫度和縱度的概念表示橫縱掃描方向上的求交次數(shù),并以此為標準自適應選擇掃描方向。此外,通過對活性邊表中相鄰交點的橫坐標進行檢測和糾正,正確而高效地填充了自交多邊形。經(jīng)實驗驗證,新算法靈活的自適應性和高效的自交糾正方法,大大提高了時間效率和魯棒性。

        關鍵詞多邊形填充自適應掃描活性邊表算法自相交魯棒性

        0引言

        區(qū)域填充被廣泛應用于真實感圖形顯示、圖像處理、機械制造和媒體廣告等領域[1,2],尤其是近年來移動設備上富媒體應用的增多,對圖形填充算法的時空方面提出了更高的要求[3]。

        常用的區(qū)域填充算法有逐點判斷算法、種子填充算法和掃描線填充算法[4,5]。逐點判斷算法基于像素,對繪圖窗口內(nèi)每一像素點進行射線環(huán)繞探測來實現(xiàn)內(nèi)點判定,孤立地考慮像素點與區(qū)域間的關系,計算量較大[5];種子填充算法需事先給定一像素點作為種子點,再以該種子點為起點朝四連通或八連通方向遞歸填充,但仍基于像素,且區(qū)域內(nèi)每一像素點均需入棧,易堆棧溢出[1,5];掃描線填充算法也需給定一種子點,分別水平向右和向左地探測得到圖形邊界點,填充兩端點之間的線段,并讓該線段之上和之下的任意內(nèi)點入棧,繼而棧頂像素點出棧作為新的種子點,重復上述操作至??誟6]。不難看出,掃描線填充算法中種子點入棧次數(shù)與掃描線條數(shù)相同,較種子填充算法大大減少了堆棧操作,時空開銷均有降低。

        但隨著區(qū)域面積的增大,掃描線填充算法的出、入棧操作仍很頻繁[4]?;钚赃叡硭惴ǎ址Q有效邊表算法或多邊形填充算法,它充分挖掘了邊的連貫性和頂點間的約束關系,從而有效避免了復雜的計算和耗時的堆棧操作[7,8]。目前已有學者對該算法進行了改進,如文獻[9]中楊長強等人提出了一種用水平掃描線與B樣條曲線求交的填充算法,文獻[10]中Al-Rawi I提出了一種鏈表與數(shù)組結(jié)合并分凸、凹和復合多邊形填充的算法等。

        考慮到目前算法均單一方向地掃描多邊形,并且無法正確填充自交多邊形,本文提出一種能預判斷最佳掃描方向并糾正多邊形自交點的活性邊表算法。

        1傳統(tǒng)的活性邊表算法

        傳統(tǒng)的活性邊表算法讓掃描線以1像素的增量自下而上地掃描多邊形,如圖1所示,其中水平虛線為掃描線,空心圓點為掃描線與多邊形的交點。euv=pupv為多邊形的任一邊,它的上端點縱坐標yv=ym,li與li+1(i=1,2,…,9)分別為當前掃描線和下一條掃描線,它們與euv的交點分別為(xi,yi)和(xi+1,yi+1)。dx為交點橫坐標的增量,為得出dx的計算公式,不妨假設euv所在直線方程為ax+by+c=0,斜率為k,易知:

        (1)

        dx=xi+1-xi

        (2)

        將式(1)代入式(2)可得:

        (3)

        再由li和li+1的步進關系知:

        yi+1-yi=1

        (4)

        將式(4)代入式(3)得:

        (5)

        填充前,需根據(jù)多邊形構(gòu)造新邊表NET,圖1中多邊形的NET如圖2所示。鄰接表每行的表頭結(jié)點代表一條掃描線,其后每個結(jié)點代表一條邊,其中關于邊結(jié)點的定義如下:

        class Edge

        {

        double xi;

        double dx;

        intym;

        Edge nextEdge;

        }

        圖1 掃描多邊形的過程

        圖2 NET的邏輯結(jié)構(gòu)

        另還需用活性邊表AET記錄當前掃描線與多邊形的所有交點信息,圖2中掃描線l6的AET如圖3所示。

        圖3AET的邏輯結(jié)構(gòu)

        傳統(tǒng)的活性邊表算法的基本步驟如下:

        Step1構(gòu)造NET與AET。

        Step2刪除AET中ym和yi相等的所有邊結(jié)點,將NET中掃描線所在行的所有邊結(jié)點按xi升序插入AET。

        Step3利用公式xi=xi+dx更新AET中各交點。

        Step4對AET中交點兩兩配對,并填充其間的區(qū)域。

        Step5掃描線步進。若掃描線與多邊形有交點,則轉(zhuǎn)Step2;若無交點,則結(jié)束。

        2強魯棒性自適應活性邊表算法

        圖4 橫縱鋸齒

        定義2自下而上地掃描為縱向掃描,自左向右地掃描為橫向掃描,如圖5所示。

        圖5 橫向與縱向掃描多邊形的情況對比

        分析發(fā)現(xiàn),傳統(tǒng)的活性邊表算法存在如下缺陷:1) 掃描方向單一,僅考慮縱向掃描,而事實上縱向并非總是最佳方向,如圖5所示的多邊形,其內(nèi)部縱鋸齒居多,若選擇縱向掃描,交點較多,計算量大,生成的配對區(qū)間也較多而小,直接導致填色次數(shù)與鏈表操作增多,而若選擇橫向掃描,則可一定程度地簡化上述問題;2) 當輸入為自交多邊形時,將產(chǎn)生填充異常,算法的魯棒性不強。

        針對上述問題,本文提出一種強魯棒性自適應活性邊表算法。該算法在填充前先對多邊形的形狀進行預判斷,自動調(diào)整掃描線的方向后再執(zhí)行傳統(tǒng)的活性邊表算法,且在更新AET時,對相鄰交點的xi進行升序糾正,正確填充了自交多邊形。

        2.1自適應性

        2.1.1掃描方向的確定

        圖6 鋸齒與掃描線求交

        掃描方向的確定依賴于快速、準確且低運算量的決策算法,本文通過分析掃描線與鋸齒的求交過程,得出了求交次數(shù)的數(shù)學公式,并給出了決策算法的描述。

        現(xiàn)任取一多邊形的第k個鋸齒,其頂點集為{pk-1,pk,pk+1},如圖6所示,分別橫向和縱向地掃描該鋸齒,易知線段pk-1pk與pkpk+1在掃描方向上的投影長度之和即為求交次數(shù),如式(6)、式(7)所示:

        (6)

        (7)

        將式(6)、式(7)推廣到整個多邊形后,得式(8)、式(9):

        (8)

        (9)

        從式(8)、式(9)的求和過程可知,多邊形每條邊的求交次數(shù)被重復計算了一次,而最終只需比較Tx和Ty的大小即可確定掃描方向,故可繼續(xù)通過定義3化簡。

        定義3Dx和Dy為多邊形的橫度和縱度,它們分別表示橫向和縱向掃描多邊形的求交次數(shù),也表征多邊形形狀在橫縱方向上的復雜程度。

        (10)

        (11)

        2.1.2決策算法的描述

        下面,采用偽代碼的形式給出決策算法的描述:

        polygon:存儲多邊形頂點坐標的數(shù)組

        N:多邊形頂點數(shù)目

        cur:當前頂點下標

        rear:當前頂點的后繼頂點下標

        abs:取絕對值

        for(cur=0; cur< N; cur++)

        {

        rear = (cur + 1) % N;

        Dx+= abs(polygon[rear].x - polygon[cur].x);

        Dy+= abs(polygon[rear].y - polygon[cur].y);

        }

        if(Dx>Dy)

        縱向掃描活性邊表算法;

        else

        橫向掃描活性邊表算法;

        2.2自交糾正算法

        傳統(tǒng)算法在填充自交多邊形時之所以產(chǎn)生異常,是因為相交的兩條邊在更新各自的xi到其排列次序變?yōu)榻敌蚝螅⑽床扇〈胧┮约m正為原來的升序。目前諸多算法采用在更新xi后加入起泡排序來解決,但這種方法孤立地考慮當前AET中所有交點的有序性,而未從自交點產(chǎn)生原因的角度分析,故而產(chǎn)生了許多不必要的比較和判斷。

        針對該問題,本文用一種簡單的交換算法替換起泡排序算法,其基本思想是:遍歷AET,若發(fā)現(xiàn)當前邊結(jié)點與其后繼邊結(jié)點的xi成降序,即滿足edge·xi>(edge·next)·xi,則交換它們的位置。

        為對比新舊自交糾正算法的效率,不妨假設問題的規(guī)模為n,即當前AET中有n個邊結(jié)點,其效率對比如表1所示。

        表1 新舊自交糾正算法的時間效率對比

        從時間復雜度看,交換算法較起泡排序算法降低了一個數(shù)量級;從比較次數(shù)看,當n=1或n=2時兩種算法的比較次數(shù)相等,當n>2時交換算法的比較次數(shù)更少。綜合看來,交換算法更具時間優(yōu)勢。

        3實驗分析

        考慮到近年來移動設備的廣泛普及,以及Android平臺較高的市場占有率,本文基于Android平臺,用Java語言編寫了測試程序,并在4英寸、480×854分辨率、雙核1.5 GHz和1.00 GB內(nèi)存的小米手機上運行和測試。該部分選取了若干多邊形作為測試用例,其屬性數(shù)據(jù)如表2所示。共設計了三個實驗,其中實驗1用以比較常用填充算法與本文算法的時間效率,實驗2用以比較縱向、橫向和自適應方向掃描的活性邊表算法的時間效率,實驗3給出了剪紙圖案和空心文字的實際填充效果。

        表2 實驗用多邊形的屬性數(shù)據(jù)

        實驗1選取四個具有典型特征的多邊形,每個多邊形分別用逐點判斷算法、種子填充算法、掃描線填充算法、傳統(tǒng)的活性邊表算法、自適應活性邊表算法填充10 000次,并計算平均耗時,其填充效果如圖7所示,時間效率統(tǒng)計如表3所示。

        圖7 實驗1用多邊形及填充效果

        填充算法圖7(a)圖7(b)圖7(c)圖7(d)種子填充算法溢出溢出溢出溢出逐點判斷算法957.232254.678456.11215626.77掃描線填充算法25.4953.09115.39208.50傳統(tǒng)的活性邊表算法4.7413.5742.9167.84自適應活性邊表算法4.7610.2322.6059.89

        深入分析表3,并對照表2可以發(fā)現(xiàn):

        1) 種子填充算法空間開銷較大,不宜在內(nèi)存緊缺的移動平臺使用;逐點判斷算法的時間效率較低。

        2) 掃描線填充算法的時間效率受區(qū)域面積影響較大,而活性邊表算法則相對穩(wěn)定。

        3) 自適應活性邊表算法較傳統(tǒng)的活性邊表算法時間效率有所提高,且橫縱度差距愈大愈明顯。

        實驗2選取偏橫度、偏縱度和橫縱度相當?shù)娜齻€多邊形,每個多邊形分別用縱向、橫向和自適應方向掃描的活性邊表算法填充10 000次,并計算平均耗時。其中縱向和橫向掃描的活性邊表算法采用起泡排序算法進行自交糾正,而自適應活性邊表算法采用交換算法,其填充效果如圖8(a)、(b)、(c)所示,時間效率統(tǒng)計如表4所示,時間效率對比如圖9所示。另為驗證自交糾正與否對填充結(jié)果的影響,采用不含自交糾正的活性邊表算法對圖8(c)多邊形填充,效果如圖8(d)所示,可見產(chǎn)生填充異常。

        圖8 實驗2用多邊形及填充效果

        填充算法圖8(a)圖8(b)圖8(c)縱向掃描的(傳統(tǒng)的)活性邊表算法12.9560.5795.05橫向掃描的活性邊表算法62.5221.37108.71自適應活性邊表算法10.7317.9267.59

        圖9 三種掃描方式的時間效率對比

        深入分析圖9,并對照表2可以發(fā)現(xiàn):

        1) 自適應活性邊表算法可自適應地找到耗時較少的掃描方向,驗證了新算法自適應結(jié)果的正確性。

        2) 自適應活性邊表算法的耗時比其余兩種算法中耗時較少者還少,尤以圖8(c)最明顯,證明交換算法較起泡排序算法更能加快自交多邊形的填充速率,且自交程度愈復雜愈明顯。

        實驗3采用本文的自適應活性邊表算法填充剪紙圖案和空心文字,效果如圖10和圖11所示。需要指出的兩點是:1) 任意形狀的輪廓線均可由若干距離較短的線段構(gòu)成,進而任意形狀的圖形也可用近似的多邊形代替[11];2) 活性邊表算法的適用范圍可推廣至含有若干孔洞的連通區(qū)域,此時只需將區(qū)域分為內(nèi)、外多邊形,并為其分別構(gòu)造NET即可[12]。

        圖10 剪紙圖案及填充效果

        圖11 空心文字及填充效果

        4結(jié)語

        區(qū)域填充是計算機圖形學中的重要問題,在諸多領域也有著廣泛的應用,其中活性邊表算法最常用也最可觀。然而傳統(tǒng)的活性邊表算法固定了掃描方向,未根據(jù)多邊形的形狀對掃描方向做出自適應地調(diào)整,對于自交多邊形的特殊情況,也未深入挖掘其特性,造成了冗余的操作。本文從掃描線與多邊形的求交次數(shù)進行分析,引入橫度和縱度來分別表征橫向和縱向掃描時的求交次數(shù)。通過比較它們的大小選擇最佳的掃描方向,達到自適應的效果。后又采用交換算法糾正自交點,確保了正確而高效的填充。經(jīng)理論和實驗分析可見,本文算法簡單易行,靈活智能,且填充效率也有較大提升。

        參考文獻

        [1] 徐勝攀,劉正軍,左志權(quán),等.一種改進的活性邊表區(qū)域填充算法[J].計算機工程與應用,2014,50(17):178-181.

        [2] 唐永勇,馮劍,杜振華,等.基于頂點的多邊形掃描轉(zhuǎn)換[J].計算機與現(xiàn)代化,2011(1):117-120.

        [3] 張驥先,羅蕾,姜帆.移動設備上富媒體場景渲染優(yōu)化策略[J].計算機輔助設計與圖形學學報,2010,22(8):1272-1278.

        [4] 孫家廣,楊長貴.計算機圖形學[M].3版.北京:清華大學出版社,2002:170-205.

        [5] 吳力心,申閆春.區(qū)域填充算法的研究與應用[J].計算機應用與軟件,1994(2):31-37.

        [6] 張榮國,劉焜.新區(qū)入棧的區(qū)域填充掃描線算法[J].計算機工程,2006,32(6):63-64.

        [7] Gordon D,Peterson M A,Reynolds R A.Fast polygon scan conversion with medical applications[J].Computer Graphics and Applications,IEEE,1994,14(6):20-27.

        [8] 陳萬領,黃培,陳卓寧,等.一種新的任意多邊形的快速填充算法[J].計算機應用與軟件,1999(4):23-26.

        [9] 楊長強,彭延軍,鄭永果.一種封閉B樣條曲線的掃描線填充算法[J].系統(tǒng)仿真學報,2006,18(S1):12-13.

        [10] AlRawi I.Implementation of an Efficient Scan-Line Polygon Fill Algorithm[J].Computer Engineering and Intelligent Systems,2014,5(4):22-28.

        [11] 周天娟,張鐵中,楊麗.草莓采摘機器人的研究:Ⅲ.掃描線填充算法在草莓圖像孔洞填充中的應用[J].中國農(nóng)業(yè)大學學報,2007,12(2):67-71.

        [12] 張志龍,李吉成,沈振康.一種新的快速復雜連通區(qū)域掃描線填充算法[J].計算機工程與應用,2004(31):6-8.

        收稿日期:2015-02-03。天津市科技計劃項目(14RCGFGX008 46);河北省教育廳高等學??茖W研究計劃項目(Z2013078)。師碩,講師,主研領域:圖像特征提取,圖形圖像處理,網(wǎng)絡編程。姚陳堃,本科生。于洋,講師。

        中圖分類號TP301.6

        文獻標識碼A

        DOI:10.3969/j.issn.1000-386x.2016.07.049

        AN ACTIVE-EDGE-TABLE FILLING ALGORITHM WITH ADAPTABILITY AND ROBUSTNESS

        Shi ShuoYao ChenkunYu Yang

        (SchoolofComputerScienceandEngineering,HebeiUniversityofTechnology,Tianjin300401,China)

        AbstractTo improve the efficiency of polygon filling, after analysing and comparing several common filling algorithms, the paper puts forward an active-edge-table filling algorithm with adaptability and robustness, which is based on active-edge-table algorithm, by thoroughly mining the number of crossover requests in different scanning directions and the self-intersection character of polygon. The new algorithm introduces the concept of horizontal extent and vertical extent to represent the number of crossover requests in horizontal and vertical directions of scanning, and takes them as the standard to adaptively choose the right scanning direction. In addition, by checking and correcting the coordinates of the adjoining crossover points in active-edge-table, this algorithm fills the self-intersected polygon correctly and efficiently. It is verified by experiment that the new algorithm greatly improves the time efficiency and robustness owing to its flexible adaptability and efficient self-intersection correcting way.

        KeywordsPolygon fillingAdaptability scanActive-edge-table algorithmSelf-intersectionRobustness

        猜你喜歡
        掃描線多邊形魯棒性
        基于場景的掃描線非均勻性校正算法
        多邊形中的“一個角”問題
        多邊形的藝術(shù)
        荒漠綠洲區(qū)潛在生態(tài)網(wǎng)絡增邊優(yōu)化魯棒性分析
        解多邊形題的轉(zhuǎn)化思想
        基于確定性指標的弦支結(jié)構(gòu)魯棒性評價
        中華建設(2019年7期)2019-08-27 00:50:18
        多邊形的鑲嵌
        基于掃描線模型的機載激光點云濾波算法
        掃描線點云數(shù)據(jù)的曲面重構(gòu)技術(shù)研究
        基于非支配解集的多模式裝備項目群調(diào)度魯棒性優(yōu)化
        放荡成熟人妻中文字幕| 亚洲午夜无码久久yy6080| 国产桃色精品网站| 午夜蜜桃视频在线观看| 国产极品视觉盛宴| 内射中出无码护士在线| av中文字幕少妇人妻| 偷窥偷拍一区二区三区| 欧美精品欧美人与动人物牲交| 香港日本三级亚洲三级| 午夜精品一区二区三区无码不卡| 白白白色视频在线观看播放 | av香港经典三级级 在线| 国内精品一区二区2021在线| 一区二区三区夜夜久久| 国产成人综合久久久久久| 人妻av无码系列一区二区三区| 成人午夜免费无码视频在线观看 | 中文字幕在线久热精品| 国产一区二区三区在线观看免费版| 国产成人综合久久久久久| 无套内射蜜桃小视频| 亚洲一区二区自拍偷拍| 亚洲成在人线天堂网站| 精品国产乱码久久久久久郑州公司| 激情久久av一区av二区av三区| 久久亚洲精彩无码天堂| 成人国产精品三上悠亚久久| 色天使综合婷婷国产日韩av| 亚洲一区二区三区成人| 人妻中出中文字幕在线| 中文无码人妻有码人妻中文字幕 | 欧美亅性猛交内射| 不卡高清av手机在线观看| 最新在线观看精品国产福利片| 一本色道久久亚洲av红楼| 真实国产老熟女无套中出| 国产精品偷伦视频免费手机播放| 伊人久久综合狼伊人久久| 精品亚洲a∨无码一区二区三区| 国产精品亚洲成在人线|