컴퓨터비전 3-2 정리

해담·2024년 10월 4일

컴퓨터비전

목록 보기
4/13

영상처리

연결요소

2차원의 영상을 받았을 때의 내가 위치해 있는 화소의 위치로부터 내 주변에 있는 화소들의 관계가 어떻게 되는지 알아보겠습니다. 그리고 연결되어 있는 화소들의 묶음이 몇 개인지 세어보는 라벨링에 대해 알아보겠습니다.

따라서 이번에는 영상에서의 연결성이 어떻게 되는지 정의해보고, 라벨링 알고리즘에 대해 살펴보겠습니다.

화소의 모양과 연결성

  • 2차원 영상에서 화소를 나타내는 가장 일반적인 방법은 사각형입니다. 두 번째는 원이며, 마지막은 행렬이 불분명하여 사용하기 힘든 육각형입니다.
  • 4-연결성은 자신의 위치로부터 상하좌우 4방향의 픽셀만 이웃으로 판단하는 것이며, 8-연결성은 8방향의 픽셀을 이웃으로 판단하는 것입니다. 4-연결성은 확인해야 하는 픽셀이 적어 계산의 효율성이 좋지만, 보다 적은 범위만을 이웃으로 판단하기 때문에 나머지는 떨어진 것처럼 생각될 수 있습니다. 반대로 8-연결성은 많은 픽셀을 확인하느라 시간이 오래 걸릴 수 있지만, 이웃한 픽셀들을 잘 확인해볼 수 있습니다.

연결요소 번호 붙이기: image labeling

  1. 주어진 MxN 영상을 (0,0)에서 (M-1, N-1)까지, 처음으로 1을 만날 때까지 훑어봅니다.
    for (i=0 to 9)
    for (j=0 to 9)
    if (image[i][j] == 1)
  2. 영상에서 1을 만났다고 한다면 4-연결성에서는 image[i-1][j], image[i+1][j], image[i][j-1], image[i][j+1], 즉 상하좌우 방향에 대해 1이 있는지 확인합니다. (8-연결성은 더 확장하여 확인)
  3. 2번 과정을 반복합니다. 이 과정에서 이미 처리된 픽셀은 마킹하여 더 이상 고려하지 않도록 하는 mask image를 적용합니다.
  4. 라벨의 영역이 끝나면 다시 영상을 처음부터 읽어 나갑니다. mask image는 무시하고 넘어가도록 합니다. 이 과정에서 다시 image[i][j]==1이 되면 다음 라벨의 이름을 붙여줍니다.

이는 서로 연결된 픽셀에 대해 동일한 라벨을 붙여서, 각 그룹을 구분하고자 할 때 사용합니다. 이진 이미지를 구조적으로 분석하여, 각 영역의 크기나 형태 등을 분석할 수 있습니다.

범람 채움 알고리즘

해당 알고리즘은 모서리 부분에 값이 있을 경우, 그 모서리를 확인할 때 없는 곳에서 이웃을 확인하려고 하다 보니 오류가 생기게 됩니다. -> 스택 오버플로우 위험
for i=1 to M-2
for j=1 to N-2
따라서 해당 범위 안에서 알고리즘을 적용해야 바깥으로 빠져나갈 일이 없게 됩니다.
또는 입력 영상의 범위보다 조금 더 큰 하나의 영상을 만들어 입력 영상의 뒤에 겹쳐지게 두고, 튀어나온 부분을 0으로 설정하여 밖으로 조금 빠져나갈 수 있게 만들면 스택 오버플로우 발생 위험을 줄여줄 수 있습니다. 이를 padding이라고 부릅니다.

profile
해담이를먹여살리기위한..

0개의 댓글