영상 처리 2. Opencv canny와 그 의미

행동하는 개발자·2023년 3월 5일
0

video

목록 보기
2/4

Canny

cv2.Canny(gray_img, threshold1, threshold2)

threshold1, threshold2 모두 윤곽선 여부를 판단하는 임계값이다. 클 수록 윤곽선이 검출되기 어렵고, 작을 수록 검출되기 쉽다.

  • threshold1: 다른 윤곽선과의 인접부분에 있어, 윤곽선인지 아닌지를 판단하는 임계값

  • threshold2: 윤곽선인지 아닌지를 판단하는 임계값

윤곽선을 찾는 과정

  1. 가우시안 필터를 이용하여 이미지 상에서 노이즈를 제거하여 smooth 이미지를 얻는다.

가우시안 필터는 저주파 필터에 해당하는 필터다. 저주파 필터란 주파수가 작은 신호들은 통과시키고 높은 신호들은 거르는 역할을 하는 필터다. 일반적으로 5x5 크기의 필터를 사용하고, 필터의 크기가 클수록 노이즈에 대한 민감도가 낮아진다. 회로나 통신도 아닌데 이미지에서 왜 주파수에 관련된 내용이 나오는 지 의아할 수 있다. 픽셀의 값은 컬러 이미지일 경우, RGB 세개의 채널에서 0부터 255까지의 값을 갖고 흑백이미지는 1개 채널에서 값을 갖는다.

위 세 개의 그림에서는 검정에서 흰색으로 변하다가 다시 검정으로 변하는 모습을 확인할 수 있다. 다만 아래로 갈 수록 변경 수가 많아지니 그 빈도 수가 높아진다. 즉 아래로 갈 수록 주파수가 높다고 표현할 수 있다.

이 개념을 이미지에 적용시켜보면, 이미지에서 픽셀의 값들이 자주 바뀌는 부분은 주파수가 높은 부분이라고 할 수 있다. 그리고 이렇게 가우시안 필터를 적용한 것을 가우시안 블러라고 한다. 카메라 어플에서 잡티 제거와 같은 보정도 이런 원리를 이용한 것이다.

  1. 이미지에서 intensity gradient를 찾는다.

위의 필터를 거치고 난 이미지에서 외곽선을 찾으려면 픽셀 값들의 변화 방향 또한 고려되어야 한다.

  1. non-maximum suppression을 적용한다.

최대값이 아니라면, suppression한다는 의미로, intensity gradient 중에서 가장 높은 값만 찾는다.

  1. potential 외곽선을 결정하기 위해 double threshold를 적용한ㄷ

  2. hysteresis로 외곽선을 찾는다.

위의 과정을 거쳐도 색 변화나, 노이즈에 의해 약한 gradient들이 남아 있을 수 있다. 이를 제거하기 위해 max와 min 값을 설정하여 max보다 큰 값만 강한 외곽선으로 본다. max와 min 사이는 weak edge로 본다. min보다 작으면 무시할 수 있다.

출처: https://mr-waguwagu.tistory.com/23

profile
끊임없이 뭔가를 남기는 사람

0개의 댓글