2010-08-03 3 views
1

점유, 무료, 알 수 없음의 3 가지 상태가있는 점유 그리드가 있습니다. 점유 격자는 상태의 간단한 2 차원 배열입니다. 그리드는 Occupied = Wall, Free = Open Floor, Unknown = 벽 뒤에 있거나 매핑되지 않은 평면도를 나타냅니다. 이 그리드는 각 셀이 실제 세계에서 5cm를 나타내는 800x800라고합니다.WPF에서 비트 맵을 경로 컬렉션으로 변환하는 방법 (코드가 XAML이 아님)

저는 이것을 가져 와서 WPF 경로 모양으로 만들고 싶습니다. 그런 다음 화면에서 조작 할 수 있습니다. 사용자가 벽을 추가하고 (선을 그어서) 최종적으로 CAD 표준/SVG/등의 일부 형식으로 내보낼 수 있습니다.

쓰기 가능한 비트 맵을 가지고 놀기 시작했고, 그리드의 완벽한 그림을 만들 수 있습니다. 어떻게 비트프가 경로가 아니며, 줄의 일부가 들쭉날쭉하거나 연결되지 않았습니다.

이 그리드 또는 thebitmap을 깨끗한 wpf 모양으로 변환하는 방법에 대한 아이디어를 찾고 있습니다. 선, 다각형, 폴리 라인 또는 패스를 사용하면 모든 것을 처리 할 수 ​​있기 때문에 모두 나를 행복하게 만들 수 있습니다. 어떤 아이디어?

+0

견본 이미지를 업로드 할 수 있습니까? –

+0

내가 작업하고있는 샘플 이미지 - http://www.xehran.com/floorsample.png 검은 색은 알 수없는 공간, 흰색은 벽 공간, 파란색은 무료 (바닥) 공간입니다. 이것은 같은 데이터를 가지고있는 그리드에서 렌더링 된 비트 맵입니다. –

+0

그 이미지는 저에게 매우 익숙합니다. 센서 란 무엇입니까? 로봇이나 다른 것? – Lukas

답변

0

벽이 일부 기본 기하학적 모양 (선과 같은 다른 것들은 훨씬 복잡해집니다) 인 경우 Hough transform 또는 이미지가 어떻게 보이는지에 따라 다른 변형을 사용하고자 할 수 있습니다. 이미지에 단색이 3 개 밖에 없다는 것을 올바르게 이해한다면 일부 가장자리 감지 알고리즘을 사용할 필요가 없을 수도 있습니다.

편집 : 점유 상태가 필요한 모든 벽의 얇은 표면을 나타내는 경우. 벽에 선이 생기면 (무료/알 수없는 영역 구분)

+0

좋은 포인터입니다.하지만 일단 가장자리를 감지하고 구체화하면 어떻게하면 그 라인/폴리 라인/경로로 번역 할 것을 조언합니까? –

+0

Hough (또는 유사한) 변환 후에는 이미지에있는 선을 나타내는 점 (변형 된 공간에서)을 얻을 수 있습니다 (실제 이미지가 아닌 좌표를 제공하더라도 더 빨라야 함). 그런 다음 해당 선을지도 데이터와 비교하여 길이를 결정합니다. 그러면 벽을 덮는 일련의 선이 생깁니다. 교차점 (점 집합)을 가져 가면 폴리 라인, 다각형 또는 필요한 것을 만들 수 있습니다. 나는 방금 드로잉과 사고가 아닌 실제 프로그래밍을 시작하기 전에 매우 비슷한 점을 경험했다. 어떤 경험이든 환영한다. – Lukas

+0

나는 비트 맵을 벡터화하고 내가 원하는 것을 얻는 지 먼저 확인하려고한다. 내가 사용하고있는 라이브러리 (Potrace - well .net port of Potrace)에 몇 가지 가장자리 감지 기능이 있습니다. 내 생각에 내가 SVG를 얻으면 나는 그것을 경로/폴리에 번역 할 수 있고 나는 행복한 사람이다. 진행 상황을 업데이트하겠습니다. –