2014-02-11 2 views
1

다음 이미지를 2D 부울 배열로 변환하고 싶습니다. ,포인트 데이터의 이미지를 2D 부울 배열로 변환

enter image description here

는 내가 전에 이미지 처리 라이브러리를 사용한 경험이 많지 않은,하지만 일부 얕은 인터넷 검색 나에게 같은 JPEG, PNG와 같이 원하는 형식으로 이미지를 변환으로 적용하지 않는 것 라이브러리 (제공 또는 그레이 스케일, 크기 조정 등과 같은 일반적인 이미지 편집 작업 등). 각 도트의 X 및 Y 인덱스를 계산하기 위해 일종의 객체 인식 라이브러리가 필요합니다.

사각형의 좌표 외에도 행과 열의 수를 얻을 수 있기를 원합니다.

+0

이미지는 어떻게 표현됩니까? 파일인가요? RGB 값? 일부 인코딩 된 문자열? 분리 선의 폭이 일정합니까 (아마도 1 픽셀)? 검은 사각형이 항상 둥글니까? 일정한 반지름으로? 블록의 폭이나 높이가 일정합니까? 스무딩이 있습니까? 아니면 가장자리가 순수한 흑백으로 간주 될 수 있습니까? –

+0

나는이 문제가 실제로 무엇인지 잘 모르겠습니다. 모든 간단한 그래픽 라이브러리를 사용하면 이미지를로드하고 각 픽셀의 값을 검사 할 수 있습니다 ([LibGD] (http://libgd.bitbucket.org/)가 첫 번째 선택 항목이됩니다). 격자 크기가 항상 14 픽셀이면 이미지의 너비와 높이 (흰색 테두리 제외)를 측정하고 1을 뺀 다음 14로 나누어 수평 및 수직 셀 수를 얻습니다. –

+0

@squeamishossifrage 당신은 그 라이브러리를 사용하고 격자 크기가 14px라고 결론을 냈습니까? libgd의 파이썬 포트가 있습니까? – deostroll

답변

0

이 문제를 해결하는 한 가지 방법은 erosion입니다. 이 작업에는 openCV 라이브러리를 사용할 수 있습니다. 면이 14px 이상인 정사각형 커널을 만든 다음 이미지를 침식하십시오. 침식시에는 Eroded image과 같은 이미지가 나타납니다.

모든 정사각형의 픽셀 위치를 갖게됩니다. 그러나 또한 줄을 포함합니다. 두 개 이상의 정사각형이 서로 나란히있는 곳에 있습니다. 두 픽셀이 14px의 원형 반경에 상주 할 수없는 알고리즘을 사용하여 제거해야합니다.

+0

프로그래밍 방식으로 왼쪽 상단 좌표를 어떻게 찾을 수 있었습니까? 그 뒤에있는 논리는 무엇입니까? – deostroll

+0

당신은 필요가 없습니다. 이미지를로드 할 때 좌상단 좌표는'(1,1)'입니다. –

+0

이미지 파일이 아닌 그리드의 왼쪽 상단에서 작업 할 수있는 침식이 원점이어야합니다. 맞습니까? 아마도 제 경우에는 우연히 (1, 1) – deostroll