라머-더글라스-퍼커 알고리즘
Ramer–Douglas–더 라머 더글라스-더글러스-로 알려진 퍼커 알고리즘으로도 알려져 있다.퍼커 알고리즘과 반복적 엔드포인트 적합 알고리즘은 선 세그먼트로 구성된 곡선을 점수가 적은 유사한 곡선으로 분해하는 알고리즘이다.그것은 지도적 일반화를 위해 개발된 가장 초기 성공적인 알고리즘 중 하나이다.
아이디어
알고리즘의 목적은 점수가 적은 유사한 곡선을 찾기 위해 선 세그먼트(일부 컨텍스트에서는 폴리선이라고도 함)로 구성된 곡선이 주어진다.알고리즘은 원래의 곡선과 단순화된 곡선 사이의 최대 거리(즉, 곡선 사이의 하우스도르프 거리)를 기준으로 '디시밀러'를 정의한다.단순화된 곡선은 원래 곡선을 정의한 점의 부분 집합으로 구성된다.
알고리즘.
시작 곡선은 점이나 선의 순서 집합이며 거리 치수 ε > 0이다.
알고리즘은 회선을 반복적으로 나눈다.처음에는 첫 번째와 마지막 지점 사이의 모든 포인트가 주어진다.보관해야 할 첫 번째와 마지막 포인트를 자동으로 표시한다.그런 다음 첫 번째와 마지막 점을 끝점으로 하여 선 세그먼트에서 가장 멀리 있는 점을 찾는다. 이 점은 분명히 끝점 사이의 근사선 세그먼트에서 곡선에서 가장 멀리 있다.점이 line보다 선분류에 가까울 경우, 현재 유지하도록 표시되지 않은 점은 ε보다 낮은 단순곡선 없이 폐기할 수 있다.
선 세그먼트에서 가장 먼 점이 근사치에서 from보다 크면 해당 점을 유지해야 한다.알고리즘은 첫 번째 지점과 가장 먼 지점을 재귀적으로 호출한 다음 가장 먼 지점과 마지막 지점을 호출하는데, 이 지점에는 가장 먼 지점이 유지된 것으로 표시된다.
재귀가 완료되면 새 출력 곡선이 유지된 것으로 표시된 모든 포인트와 오직 포인트로 구성될 수 있다.
비모수 Ramer-Douglas-퍼커
ε의 선택은 대개 사용자 정의가 있다.대부분의 라인 피팅 / 다각형 근사 / 우세한 점 검출 방법과 마찬가지로 디지털화/정량화로 인한 오차 한계를 종료 조건으로 사용하여 비모수화할 수 있다.[1]
가성음
(입력이 단일 기반 배열이라고 가정)
# 출처: https://karthaus.nl/rdp/ 기능을 하다 더글러스 퍼커(포인트리스트[], 엡실론) # 최대 거리로 포인트 찾기 dmax. = 0 색인을 달다 = 0 종지부를 찍다 = 길이(포인트리스트) 을 위해 i = 2 로 (종지부를 찍다 - 1) { d = 수직 거리(포인트리스트[i], 라인(포인트리스트[1], 포인트리스트[종지부를 찍다])) 만일 (d > dmax.) { 색인을 달다 = i dmax. = d } } 결과 목록[] = 텅 빈; # 최대 거리가 엡실론보다 클 경우 재귀적으로 단순화 만일 (dmax. > 엡실론) { # 재귀 호출 recResults1[] = 더글러스 퍼커(포인트리스트[1...색인을 달다], 엡실론) recResults2[] = 더글러스 퍼커(포인트리스트[색인을 달다...종지부를 찍다], 엡실론) # 결과 목록 작성 결과 목록[] = {recResults1[1...길이(recResults1) - 1], recResults2[1...길이(recResults2)]} } 다른 { 결과 목록[] = {포인트리스트[1], 포인트리스트[종지부를 찍다]} } # 결과 반환 돌아오다 결과 목록[]
적용
알고리즘은 벡터 그래픽과 지도 그래픽 일반화의 처리에 사용된다.변종 알고리즘의 개발로 이어진 곡선의 비자체 절개 특성을 항상 보존하지는 않는다.[2]
이 알고리즘은 회전 범위 스캐너에 의해 획득된 범위 데이터의 단순화 및 변조를 수행하기 위해[3] 로봇공학에서 널리 사용된다. 이 분야에서는 분할 및 분할 알고리즘으로 알려져 있으며, 두다와 하트에 기인한다.[4]
복잡성
The running time of this algorithm when run on a polyline consisting of segments and vertices is given by the recurrence where 가성 코드에서 인덱스 값이다.In the worst case, or at each recursive invocation and this algorithm has a running time of . In the best case or 재귀 호출 시마다 l 이 경우, 실행 시간은 (분할 및 변환 반복에 대한 마스터 정리를 통해) O( n의 잘 알려진 솔루션을 갖는다
동적 볼록 선체 데이터 구조를 사용하여 알고리즘에 의해 수행되는 단순화는 O ) n시간에 이루어질 수 있다.[5]
유사 알고리즘
라인 단순화를 위한 대체 알고리즘은 다음과 같다.
참고 항목
추가 읽기
- Urs Ramer, "평면 곡선의 다각형 근사치에 대한 반복 절차", 컴퓨터 그래픽 및 이미지 처리, 1(3), 244–256(1972) doi:10.1016/S0146-664X(72)80017-0
- David Douglas & Thomas Pucker, "디지털화된 선이나 캐리커처를 나타내기 위해 필요한 포인트 수 감소를 위한 알고리즘", The Canadian Carticator 10(2), 112–122 (1973) doi:10.3138/FM57-6770-U75U-7727
- 존 허쉬버거 & 잭 스누잉크 "더글러스 위로 질주-Pucker Line-Simplation 알고리즘", Proc 5th Common on Data Handling, 134–143(1992)UBC Tech Report TR-92-07은 http://www.cs.ubc.ca/cgi-bin/tr/1992/TR-92-07에서 확인할 수 있다.
- R.O. 두다와 P.E.하트, "패턴 분류 및 장면 분석", (198), 와일리, 뉴욕 (https://web.archive.org/web/20110715184521/http:///rii.ricoh.com/~stork/DHS.html)
- Visvalingam, M; Whyatt, JD (1992). Line Generalisation by Repeated Elimination of the Smallest Area (Technical report). Discussion Paper. Cartographic Information Systems Research Group (CISRG), The University of Hull. 10.
참조
- ^ Prasad, Dilip K.; Leung, Maylor K.H.; Quek, Chai; Cho, Siu-Yeung (2012). "A novel framework for making dominant point detection methods non-parametric". Image and Vision Computing. 30 (11): 843–859. doi:10.1016/j.imavis.2012.06.010.
- ^ Wu, Shin-Ting; Marquez, Mercedes (2003). "A non-self-intersection Douglas-Peucker algorithm". 16th Brazilian Symposium on Computer Graphics and Image Processing (SIBGRAPI 2003). Sao Carlos, Brazil: IEEE. pp. 60–66. CiteSeerX 10.1.1.73.5773. doi:10.1109/SIBGRA.2003.1240992. ISBN 978-0-7695-2032-2. S2CID 10163908.
- ^ Nguyen, Viet; Gächter, Stefan; Martinelli, Agostino; Tomatis, Nicola; Siegwart, Roland (2007). A comparison of line extraction algorithms using 2D range data for indoor mobile robotics (PDF). Autonomous Robots. Vol. 23, no. 2. pp. 97–111. doi:10.1007/s10514-007-9034-y. hdl:20.500.11850/9089.
- ^ Duda, Richard O.; Hart, Peter E. (1973). Pattern classification and scene analysis. New York: Wiley. ISBN 0-471-22361-1.
- ^ Hershberger, John; Snoeyink, Jack (1992). Speeding Up the Douglas-Peucker Line-Simplification Algorithm (PDF) (Technical report).
외부 링크
- 부스트 더글라스 지지 지오메트리-퍼커 단순화 알고리즘
- Ramer-Douglas 구현Pucker 및 C++에서 오픈 소스 라이센스를 사용하는 기타 여러 단순화 알고리즘
- KML 데이터와 함께 사용하기 위한 알고리즘의 XSLT 구현.
- 이 페이지 하단에 있는 자전거 타기에서 GPS 로그에 적용된 알고리즘을 볼 수 있다.
- 알고리즘의 대화형 시각화
- F#에서의 구현
- 루비 보석 구현
- JTS, Java Topology Suite는 Douglas-Peucker 알고리즘을 포함한 많은 알고리즘의 자바 구현을 포함하고 있다.
- Rosetta 코드(다양한 언어로 구현)