道格拉斯-普克算法

道格拉斯-普克算法 (Douglas–Peucker algorithm,亦稱為拉默-道格拉斯-普克算法、疊代適應點算法、分裂與合併算法)是將曲線近似表示為一系列點,並減少點的數量的一種算法。它的優點是具有平移和旋轉不變性,給定曲線與閾值後,抽樣結果一定。

簡要說明

道格拉斯-普克算法 (Douglas–Peucker algorithm,亦稱為拉默-道格拉斯-普克算法、疊代適應點算法、分裂與合併算法)是將曲線近似表示為一系列點,並減少點的數量的一種算法。該算法的原始類型分別由烏爾斯·拉默(Urs Ramer)於1972年以及大衛·道格拉斯(David Douglas)和托馬斯·普克(Thomas Peucker)於1973年提出,並在之後的數十年中由其他學者予以完善。

算法的基本思路是:對每一條曲線的首末點虛連一條直線,求所有點與直線的距離,並找出最大距離值 dmax ,用 dmax與限差 D相比:若 dmax < D,這條曲線上的中間點全部捨去;若 dmax ≥ D,保留 dmax 對應的坐標點,並以該點為界,把曲線分為兩部分,對這兩部分重複使用該方法。

詳細步驟

道格拉斯-普克算法 道格拉斯-普克算法

(1) 在曲線首尾兩點間虛連一條直線,求出其餘各點到該直線的距離,如右圖(1)。

(2)選其最大者與閾值相比較,若大於閾值,則離該直線距離最大的點保留,否則將直線兩端點間各點全部捨去,如右圖(2),第4點保留。

(3)依據所保留的點,將已知曲線分成兩部分處理,重複第1、2步操作,疊代操作,即仍選距離最大者與閾值比較,依次取捨,直到無點可捨去,最後得到滿足給定精度限差的曲線點坐標,如圖(3)、(4)依次保留第6點、第7點,捨去其他點,即完成線的化簡。

實現代碼

相關詞條

熱門詞條

聯絡我們