Post

컴퓨터비전(6) - edge detection(4)

canny edge detection

드디어 길고 길었던 edge detection의 마지막, canny detection에 대해 알아보겠습니다. canny는 별 뜻은 없고, 사람 이름입니다. 한 줄로 요약하자면

1
gaussian smoothing과 sobel operator의 합성 및 마지막 edge 보정 

으로 이해하시면 편할 것 같습니다.

요약 : edge detection을 하기 위해 image gradient를 가지고 판단하는 것이 idea입니다. 근데 noise때문에, gaussian smoothing을 실행한 후, gradient를 구해보자

overhead가 있네

비슷한 효과를 내는 sobel operator을 하자. 성능 낫배드. 근데 선이 너무 굵은데? 이는 pixel별로 보기 때문에 그럼. 주변의 결과값이 비슷하다면 굵은 선으로 표현됨. 아. canny detection을 한다.

  1. 이미지 블러링
  2. sobel operator을 통해서 image gradient 크기/방향 구해보자. //여기까닌 sobel에 그냥 전처리 한 것 아님?
  3. 이제 pixel 주변 pixel을 본다. 오로지 하나만 남긴다는 마인드. Non-maximum supression라고 함. grad 방향 주변의 pixel 2개를 본다. 여기서 최댓값만 남기고, 나머지는 0으로 판단해서 최대한 얇게 만들자.
  4. threshoding을 준다. 어떤 기준 2개를 갖고 큰 기준보다 크다면 100% edge 기준 사이라면 연결 되는지 보고 연결된다면 edge, 낮은 기준보다 낮다면 폐기.

즉 하나의 edge는 하나의 pixel들의 집합으로 표현이 되어야 하는데 이게 여러개로 묶이니까 너무 bad다. 이를 보완하고자 하는 것이 canny detection이다. edge는 연결되어 있다는 것이 4번의 주제임. 갑자기 나타나지 않는다. 서서히 변한다는 것이 중요 포인트.

기준값은 뭐로 하는데? 시그마임.

시그마가 크다면 가우시안 필터의 크기가 커져서. 하나의 pixel이 주변에 영향을 많이 받게 됨. 이제 하나의 pixel이 주변에 영향을 많이 받기에, edge 검출 시 좀 더 크게 나올 것임. 시그마가 작면? 필터 크기가 작아지므로, 세밀하게 edge detection을 할 것이다. 시그마 1정도가 적당하다고 하네요~

이를 통해서 high pass filtering도 가능~ ㅋ

This post is licensed under CC BY 4.0 by the author.