

N*N 크기의 2차원이미지(흑백이미지) 에서 인접한(상,하,좌,우 or 상,하,좌,우, 대각선) 픽셀에 모두 같은 번호(Label)을 붙이고 연결되지 않은 다른 성분(component)에는 다른 번호를 붙이는 알고리즘
흑백이미지의 첫번째 픽셀을 시작으로 한다. image[0][0]
그 픽셀이 foreground픽셀이면 current pixel로 지정해주고 queue에 추가한다.
만약 back ground pixel 이거나 label이 있다면 foreground pixel을 찾을 때 까지 반복 한다.
반복이 완료 되면 queue에서 element를 꺼내어 foreground pixel이 며 label이 없다면 current pixel로 지정하고 curlab 을 1 더한다. 그리고 queue에 추가한다.
이 과정을 queue에 element가 없을때 까지 반복한다.
객체의 연결 기준을 상하좌우 혹은 상하좌우대각선으로 볼지 선택 가능하다.
def count_cells(x, y):
if x < 0 or y < 0 or x >= N or y >= N:
return 0
elif blob[x][y] != IMAGE or blob[x][y] == ALREADY_COUNTED:
return 0
else:
blob[x][y] = ALREADY_COUNTED
return (1 + count_cells(x, y-1)
+ count_cells(x+1, y-1)
+ count_cells(x+1, y)
+ count_cells(x+1, y+1)
+ count_cells(x, y+1)
+ count_cells(x-1, y+1)
+ count_cells(x-1, y)
+ count_cells(x-1, y-1))
- Object Detection 오토 라벨링
- 여러개의 객체를 동시에 찍은 이미지 자르지(crop)