4

특히 게임 '소행성'의 스크린 샷에서 관련 선분을 모두 추출하려고합니다. 나는 에지 검출을위한 다양한 방법을 통해 검토 한 결과, 그러나 아무도는 두 가지 이유로 내 문제에 맞게 보이지 않는다 :간단한 2D 이미지에서 선분을 추출하는 간단하고 효율적인 방법은 무엇입니까?

  1. 그들은 그냥 직선 세그먼트의 검출을 필요로하는 반면, 부드러운 윤곽을 감지하고 만 내 길이의 특정 범위. 이제는 이러한 제약으로 인해 일반적인 작업보다 훨씬 쉽게 작업을 수행 할 수 있지만, 난폭하게 가장자리 감지기를 사용하고 곡선의 결과를 지우는 것은 비용이 많이 드는 일이므로 필요하지 않습니다. 속도는 내 목적에 가장 중요합니다.

  2. 감지 된 선분의 끝점을 나타내는 픽셀 좌표 집합이 필요한 반면 가장자리가 강조 표시된 수정 된 이미지를 출력합니다. 또는 각 세그먼트에 포함 된 모든 픽셀의 목록이 함께 작동합니다.

나는 하나 개의 가능한 솔루션은 hough transform을 포함 것이라는 암시를 가지고,하지만 난 (픽셀 공간 즉, 엔드 포인트) 실제 선분의 위치를 ​​얻기 위해 이것을 사용하는 방법을 모르겠어요. 비록 내가 했어도, 그것이 일을하는 가장 간단하거나 가장 효율적인 방법이 될지, 그래서 질문 제목의 일반적인 표현이 될지 모르겠다.

마지막으로, 여기에 샘플 이미지입니다 : 주요 라인의 모든 길이와 밀도 비슷

enter image description here

공지 것으로, 전체적인 이미지 대비가 매우 높은 것을. 내 문제에 대한 솔루션이 이러한 기능을 활용할 것으로 기대하고 있습니다. 왜냐하면 다시 효율성이 가장 중요하기 때문입니다.

하나의주의 사항 :이 컨텍스트에서 대부분의 선분은 다각형의 일부이지만, 나는이 사실에 의존하는 솔루션을 원하지 않습니다..

+0

을 제공하지만이있는 선분의 ​​가장 컨텍스트는 다각형의 일부이며,이 사실에 의존하는 솔루션을 원하지 않습니다. '는 모순입니다. 다각형에 속하지 않으면 서 어떻게 직선이 될 수 있습니까? – Fezvez

+0

아마 'polygon'은이 컨텍스트에서 다른 정의를 가지고 있지만, 표준적인 의미에서 의미합니다 : 닫힌 경로 또는 회로에 의해 경계 지어지는 평면도. 유한 직선 세그먼트 시퀀스로 구성됩니다. 그 정의에서 그 직선이 다각형의 일부가 아닌 많은 사례가 있음을 분명히 알기를 바랍니다. – zergylord

+0

Ok, my bad. 나는 폴리곤을 "유한 수의 직선으로 구성된 것"으로 생각했다. Dunno는 내가 왜 그렇게 생각했는지, 당신의 정의가 아주 명확하게 표준적인 것임을 알고 있습니다 ... – Fezvez

답변

4

the Line Segment Detector 알고리즘을 살펴보십시오.

여기에 그들이 무엇을 :

enter image description hereenter image description here

당신은 페이지 하단에 인상적인 video을 찾을 수 있습니다.

상자에서 작동하는 C 구현 (C++ 컴파일러와 작동 함)이 있습니다. 단 하나 또는 두 개의 파일이 있으며 추가 종속성이 없습니다.

그러나 알고리즘은 GNU Allegro GPL 라이센스에 의거합니다.

+1

와우, 방금 비디오를 보았습니다. 정확히 내가 필요로하는 것처럼 보입니다. 일단 시도해보고 예상대로 작동하면 해결책을 수락합니다. – zergylord

관련 문제