1

닫힌 경로의 가장 적합한 피팅 다각형 근사값을 찾고 싶습니다 (이미지에서 뽑아내는 경로 일 수 있음). 그것을 찾기 위해 알고리즘 코딩에 접근한다.닫힌 경로의 다각형 근사값 찾기

경로를 따라 픽셀 x 픽셀마다 해당 픽셀에 가장 잘 맞는 선을 선택한 다음 시작 오프셋과 길이가 다른 경우에 무차별 한 힘을 사용하고 최소 제곱 오류를 최소화하는 선을 찾습니다. 최소한의 선이 있어야합니다.

좀 더 우아해야합니다. 누구든지 알고 있니? 또한, (cringe) 그러나 이것은 필자가 정말로 절망하지 않는 한 javascript로 구현 될 것이므로, 당신을 위해 좋은 일을하는 훌륭한 라이브러리는 거의 제외된다. (예를 들어 opencv는 polygonal fitter를 가진다.)

답변

1

D3.js 1에는 사용할 수있는 코드가 adaptive resampling 개 있습니다. description of the algorithm (Visvalingam의 알고리즘)도 사용됩니다.

+0

D3과 같은 Visvalingam의 알고리즘이 명확하게 직관적으로 이해되어 끝났습니다. 두 분 모두 제안에 감사드립니다! – Newmu

+0

이것은 충분히 간단하고 (좋은) 예제는 매우 재미 있고 흥미 롭습니다. 이번에는 폴리곤 근사 (구현 준비 사용)를 구현할 필요가 없으며 푸리에 (Fourier) 디스크립터를 사용하여 수행 할 수있는 일반적인 근사법 만 사용했습니다. 압축의 관점에서 볼 때,이 제안 된 방법은 모양 경계가 완전히 손실되지 않는 한 푸리에 설명자를 사용하여이 방법을 이길 수 없다고 생각합니다. 그렇지 않은 경우입니까? (그냥 궁금 해서요.) – mmgp

1

Ramer–Douglas–Peucker 알고리즘은 여기에 적합하며 구현하기 쉽습니다. 수용 할 수있는 오류는이 알고리즘에 대한 입력이므로 대상 행 번호가있는 경우 오류 매개 변수를 사용하여 대상을 두 번 검색 할 수 있습니다.

+0

Visvalingam의 알고리즘에서 원하는 라인의 양을 지정할 수있는 능력도 좋았습니다. – Newmu

+0

입력 데이터에 따라 각 단계에서 가장 작은 영역의 삼각형을 제거하는 것이 최적의 동작이 아닐 수 있습니다. 예를 들어, 매우 길고 매우 얇은 스파이크는 그렇지 않은 직선에서 연장되어 작은 면적을 갖지만 보존하려는 선의 매우 두드러진 특징입니다. – ryanm

+0

지금은 결과에 만족합니다.이 목적은 이미지의 순수한 비트 맵 벡터화로 대부분의 모양이 이미 잘 작동하는 경향이 있습니다. 문제가 생기면 분명히 살펴볼 것입니다. – Newmu