2016-08-10 3 views
0

로, 2D 공간에서 그룹을 경계 상자의 집합을 감안할 때 좌표이 정점에 <strong>N</strong> 경계 상자의 집합을 감안할 때 행

"vertices": [ 
    { 
     "y": 486, 
     "x": 336 
    }, 
    { 
     "y": 486, 
     "x": 2235 
    }, 
    { 
     "y": 3393, 
     "x": 2235 
    }, 
    { 
     "y": 3393, 
     "x": 336 
    } 
    ] 

I 행에 그룹 경계 상자를하고 싶습니다.

[1,2,3] 
[4,5,6] 
[7,8] 

[편집 : 명확한 설명] 그룹화 결정 (예 : [I 반환하는 알고리즘을 싶습니다

Bounding Boxes

: 즉,이 이미지의 경계 상자의 그림 표현을 제공 4,5,6] 및 [7,8])은 최소 제곱과 같은 일종의 오류 최소화를 기반으로해야합니다.

이 작업을 수행하는 알고리즘 또는 라이브러리 (가능하면 파이썬)가 있습니까?

+1

상자를 자르지 않는 (1,2,3) 아래에 수평선을 그릴 수 있으므로 (1,2,3)은 별개입니다. 그러나 그런 식으로는 (4,5,6,7,8)을 나눌 수 없습니다. 그러면 (4,5,6) (7,8)의 선택을 어떻게 정의합니까? (5,6) (4,8) (7)? – m69

+0

아 나는 분명히해야만했다. 나는 알고리즘이 어떤 종류의 최소 제곱 에러 최적화 (또는 대안)를 사용해야 만 할 수 있도록 그런 방식으로 프레임을 구성했다. 경계 상자가 항상 명확하게 분리되지는 않습니다. – amex

답변

0

이것이 클러스터링 문제라고 생각합니다. 사실, 당신은 x 좌표를 무시할 수 있기 때문에 이것이 1 차원 클러스터링 문제라고 생각합니다. k-means와 같은 일부 표준 클러스터링 알고리즘은 클러스터 센터의 제곱의 합을 최소화하는 데 유용하며 이는 사용자가 찾고자하는 것입니다. 불행히도, 그들은 세계적으로 가장 좋은 해결책을 찾지 못할 수도 있습니다. 1 차원 클러스터링은 정확한 알고리즘이있는 특별한 경우입니다 (Cluster one-dimensional data optimally? 참조).

+0

1D 클러스터링 덩어리 (4,5,6,7,8) 함께? – m69

+1

클러스터링을 사용하면 일반적으로 포인트를 나눌 다른 클러스터의 수를 알려주므로 모든 포인트 세트를 그룹화할지 여부는 요청하는 클러스터 수에 따라 다릅니다. 또는 생성 된 클러스터의 수와 함께 증가하는 패널티를 생성하고 최상의 페널티와 제곱의 편차 합계를 제공하는 솔루션을 찾을 수 있습니다. 그런 다음 원하는 유형의 분열을 이끌어내는 페널티 시스템을 찾으십시오. – mcdowella

+0

저는이 특별한 문제에서 x 좌표를 무시하면 더 나쁜 결과가 나올 것이라고 생각합니다. 이 예에서 (4,5,6) (7,8)이 (5,6) (4,7,8)보다 우수한 분할이라는 사실은 4와 7이 수평 적으로 겹치는 것을 알고있는 경우에만 분명해집니다. (페널티 시스템이 x 좌표를 다시 도입 할 수 없다면) – m69