독학하는 학생의 정리노트

독학하며 정리노트를 올리는 학생 공부 블로그입니다.

IT 프로그래밍/Python 파이썬

Canny Edge openCV, python

공부 안 하는 학생 2020. 10. 3. 08:59

openCV를 하는 도중 문득 떠오른 생각 하나가 있다.

"나는 정말 이미지와는 연이 없군아" 하고 싶지 않은 공부를 끝까지 하는 사람이 성공한다 하니 눈물 머금고 해볼려한다.

 

Canny edge detection은 가장 인기있는 에지 찾기 알고리즘 중 하나이다.

cv2.Canny(원본 이미지, 임계값1, 임계값2) 즉 가장자리를 찾는 것

임계값 1 이하에 포함된 가장자리는 가장자리에서 제외하고 임계값 2 이상에 포함된 가장자리는 가장자리로 간주하고 임계값 2는 임계값 1보다 3배 정도 작아야한다. ( 그래야 깔끔히 나옴 )

 

1단계 : 노이즈 제거 (noise reduction)

이미지에서 노이즈가 있으면 에지를 제대로 찾는 것이 어려워 첫 단계로 가우시안 필터 (Gaussian Filter)를 이용해 이미지의 노이즈를 줄여준다.

2단계 :  Gradient 값이 높은 부분 찾기

가우시안 필터로 노이즈가 제거된 이미지를 앞어 배웠던 sobel 커널을 수평방향, 수직방향으로 적용하여 각 방향의 gradient을 흭득한다.

3단계 : 최대값이 아닌 픽셀의 값을 0으로 만들기

2단계를 거친 수, 에지에 기여하지 아니한 픽셀을 제거하기 위해 이미지 전체를 스캔합니다. 이미지를 스캔하는 동안 radient 방향으로 스캔 수역에서 radient의 최대값을 가진 픽셀을 찾는다.

솔직히 내가 한 것은 1단계뿐이라 2단계부터는 이해가 전혀 되지 않는다. 하지만 난 지금 이론 공부보다는 실무를 하고있으니 일단 오늘은 여기까지만하고 다음에 이것에 대한 세부적인것이 필요하면 그때 다시 다뤄보도록 하겠습니다.

복습하고 있는 공부 안 하는 학생이였습니다