2011-12-10 9 views
1

겹치는 사각형을 그룹화하는 가장 좋은 방법은 무엇입니까? OpenCV를 사용하여 시도했지만 grouprectangles 메서드가 의도 한대로 작동하지 않습니다.겹치는 사각형을 효율적으로 그룹화

나는이 같은 일을 생각했습니다 최악의 경우, 다음 목록에서 제외 될 것이다 병합되지 때마다 사각형, 나는의 n/2 반복이 것 때문에

L = [every rectangle] 
L_next = [] 
while not L.empty(): 
    for rectangle in L: 
     L.remove(rectangle) 
     for other_rectangle in L: 
      if rectangle overlaps with other_rectangle: 
       L_next += rectangle + other_rectangle 
    L = L_next 
    L_next = [] 

바깥 쪽 루프. 두 개의 내부 루프는 nn - 1 번 실행해야하므로 최악의 시나리오에서는 알고리즘이 대략 O(n^3)이어야합니다. 아무 것도 놓치지 않고 각 단계마다 O(1)이 필요하다고 가정합니다.

문제 :

1)가 제대로 사각형의 그룹을 병합 그 정도 등가 클래스 또는 무언가를 사용해야합니다. 부스트에는 그런 것이 있습니까?

2)이 작업은 자주 수행해야하는 작업 같아서 더 많은 자료를 찾지 못해서 놀랍습니다. 그게 뭐야?

3) 실제로이 작업을 수행하기 위해 이미 구현 된 것이 없다고 가정 할 때 누군가가 내 방법을 개선하기위한 조언을 갖고 있습니까?

4) 두 개의 사각형이 겹치는 지 확인하는 가장 좋은 방법은 무엇입니까?

답변

0

나는 귀하의 문제에 대한 응답으로 pygame.Rect.collide 방법을 보았습니다. 직사각형 겹침 감지는 게임에서 매우 일반적이므로, 구현이 계산상의 복잡성 측면에서 상당히 우수하다고 생각합니다.