Contour Detection
Contour : 같은 색깔 및 intensity를 가지는 연속적인 경계점들로 이루어진 Curve
- 고전 컴퓨터 비전을 활용해 raw image에서 객체의 contour를 추출
중요성
- 딥러닝 모델을 사용하지 않으면서 딥러닝 모델 학습을 위한 데이터 가공 시 활용 가능
- 데이터가 충분하지 않을 떄는 고전 알고리즘이 더 좋은 성능을 보일 떄도 많음
과정
Edge Detection -> Dilation (optional) -> Contour Detection
Canny Edge Detector
: 컴퓨터 비전에서 가장 널리 사용되는 Edge Detector
- 1986 TPAMI에서 발표된 논문, John Canny에 의해 개발됨
- 정확도 높음
- 실행시간 느림
- 구현 복잡함
과정
- 노이즈 제거
- 이미지 내의 높은 미분값 찾기
- 최대값이 아닌 픽셀 값 0으로 치환
- 하이퍼파라미터 조정을 통한 세밀한 엣지 검출
1. 노이즈 제거
: 이미지 내에 노이즈가 있다면 엣지를 찾는데 어려움이 있음
노이즈를 줄이기 위해, 가우시안 필터 이용
가우시안 필터란?
- 가우시안 분포 함수를 근사하여 생성한 필터 마스크
- 가우시안 필터 마스크 행렬은 중앙부에서 큰 값을 가짐
- 중앙에서 외곽으로 갈 수 록 0에 가까운 작은 값을 가짐
2. 이미지 내의 높은 미분값 찾기 Find The Intensity Gradient
- Sobel 커널을 각 방향으로 적용하여 Gradient 추출
- 수평방향의 gradient : G_x, 수직방향의 gradient : G_y
- Gradient의 방향은 엣지와 수직한 방향
Angle(seta) = tan^{-1}(G_y/G_x)
Sobel 커널이란?
- 행 또는 열의 변화율을 계산하는 마스크
- Edge 검출에 특화
3. 최대값이 아닌 픽셀 값 0으로 치환 - Non Maximum Suppression
- 목표 : 엣지 검출에 기여하지 않은 픽셀을 제거
- Gradient 방향으로 Gradient의 최대값을 가진 픽셀을 찾음
- 주변의 값과 비교하여, 엣지가 아닌 픽셀값들을 제거(0으로 치환)함
4. 하이퍼파라미터 조정을 통한 세밀한 엣지 검출 - Hyteresis Thresholding
- 2가지의 Threshold (Low Threshold, High Threshold)를 정의
Contour Detection with OpenCV
- Raw Image를 binary Image로 변환 -> OpenCV의 FindContours() 함수 이용
- Binary Image를 만들 떄 Edge Detection의 결과를 활용