Canny는 단순한 경계 검출이 아니라,
노이즈 제거 → 그라디언트 계산 → 이중 임계값 → 엣지 연결까지 이어지는 정교한 프로세스를 갖고 있어서,
실전 영상 처리에서 굉장히 많이 쓰이는 핵심 알고리즘입니다.
엣지 검출이란 무엇인가요?
엣지(Edge)는 이미지 내에서 색상이나 밝기의 변화가 급격하게 일어나는 경계선을 의미해요.
엣지를 검출한다는 건 물체의 윤곽, 패턴, 구조를 파악한다는 뜻이고,
이는 객체 인식, 영상 분할, 트래킹 등 고급 컴퓨터 비전 작업의 출발점이 돼요.
다양한 엣지 검출 방법 중에서 Canny 알고리즘은 가장 정밀하고 널리 쓰이는 방식으로 평가받고 있어요.
Canny 알고리즘의 작동 원리
Canny 엣지 검출은 총 5단계로 이루어져 있어요:
① 가우시안 블러로 노이즈 제거 →
② Sobel 필터로 그라디언트(기울기) 계산 →
③ 비최대 억제(Non-Maximum Suppression)로 엣지를 얇게 만듦 →
④ 이중 임계값(Double Threshold)으로 강한 엣지/약한 엣지 구분 →
⑤ 히스테리시스(Hysteresis)로 약한 엣지를 강한 엣지와 연결된 경우만 살림.
이 과정을 통해 명확하고 불필요한 노이즈가 제거된 엣지 선만 남기게 돼요,
그래서 정확한 윤곽 검출이 가능해지는 거예요.
OpenCV에서 Canny 함수 사용하기
OpenCV에서는 cv::Canny() 함수 하나로 위 과정을 모두 자동으로 처리해줘요.
사용 방법은 매우 간단하고, 핵심은 두 개의 임계값 설정이에요.
cv::Mat gray, blurred, edges; cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); cv::GaussianBlur(gray, blurred, cv::Size(5, 5), 1.5); cv::Canny(blurred, edges, 50, 150); // 임계값 50과 150 |
- 첫 번째 임계값: 약한 엣지를 판단할 기준
- 두 번째 임계값: 강한 엣지를 판단할 기준
이 범위 안에서 연결된 엣지만 최종 엣지로 인정되기 때문에, 임계값 설정이 엣지 품질에 큰 영향을 줘요.
Canny 알고리즘의 활용 사례
Canny는 다양한 분야에서 활용돼요.
예를 들어, 문서 스캔 시 문서의 외곽선 검출, 의료 영상에서 혈관 윤곽 검출,
자율주행 차량에서는 차선 인식에도 쓰여요.
단독으로 쓰기보다는 Canny + Hough Transform 조합으로 선 검출이나 모서리 분석에 자주 사용돼요.
또, Canny로 얻은 엣지를 마스크로 활용하면 물체 분할이나 ROI 지정에도 유용하게 활용할 수 있어요.
튜닝 포인트와 주의할 점
Canny 알고리즘은 민감한 만큼 파라미터 튜닝이 핵심이에요.
특히 GaussianBlur의 커널 크기와 Canny()의 두 임계값은
실험적으로 최적 값을 찾아야 해요.
너무 작은 커널은 노이즈를 제거하지 못하고, 너무 큰 커널은 엣지를 날려버릴 수 있어요.
또한, 조명이 불균일하거나 배경이 복잡한 이미지에선
사전 전처리(히스토그램 평활화 등)를 먼저 해주는 게 좋아요.
실시간 처리에서는 성능 이슈가 있을 수 있으니, 영상 해상도 축소 후
처리하거나 멀티스레딩으로 최적화하는 전략도 필요합니다.
이 블로그의 내용을 대화 형식인 음성으로 들으면서 정리하면, 보다 쉽게 이해할 수 있을 거예요.
다운받아 들어보세요~
'IT' 카테고리의 다른 글
OpenCV에서 윤곽선(contour) 검출과 그리기 (0) | 2025.06.26 |
---|---|
OpenCV로 밝기 및 대비 조절하기 (0) | 2025.06.26 |
OpenCV에서 이미지 히스토그램 분석 (1) | 2025.06.26 |
OpenCV 필터링: 블러, 가우시안, 미디언 필터 사용법 (0) | 2025.06.25 |
OpenCV로 이미지 자르기와 리사이징 (0) | 2025.06.25 |