개요
edge detection은 말그대로 이미지 요소들의 테두리를 추출하는것이다. 컴퓨터 비전에서 물체의 형태를 파악하는데 있어 edge detection은 유용하다. 우리는 이미지의 픽셀간 변화량을 토대로 이웃에 비해 급격히 변하는 부분을 테두리로 추출하는 기법을 주로 사용할 것이다.
기울기 이미지
우리는 우선 각 픽셀의 기울기를 담은 x축, y축 기울기 이미지를 각각 만들어 볼 것이다. x축 기울기 이미지, y축 기울기 이미지는 각 픽셀에 원본 이미지의 해당 픽셀 부분이 가지는 x축 또는 y축으로의 기울기를 가진 이미지라고 볼 수 있다. 즉 이미지를 함수로 봤을때의 편미분값을 가진 셈인데 우린 이웃한 픽셀간의 값 차이를 기울기로 보는 근사 미분을 사용할 것이다.
x축 기울기 이미지
원본 이미지에 다음 커널을 적용시킨다.
1 | -1 | |
이는 각 오른쪽 픽셀 값 - 자기 픽셀 값을 각 픽셀이 가지게 된다.(convolution)
즉 오른쪽으로 한칸이동하며 생긴 변화량을 담는다.
y축 기울기 이미지
원본 이미지에 다음 커널을 적용시킨다.
-1 | ||
1 |
위쪽으로 한칸 이동하며 생긴 변화량을 담는다.
기울기 벡터
위 x축 기울기를 x성분으로, y축 기울기를 y성분으로 하면 각 픽셀에 대해 기울기 벡터가 나온다. 이때의 방향은 픽셀이 가장 밝아지는 방향(값이 커지는 방향)이자 그 방향의 +-방향이 변화량이 가장 큰 축이라고 해석할 수 있으며 벡터의 크기는 값의 변화량, 즉 전체적인 기울기이다.
노이즈
기울기 이미지를 구할때 노이즈는 큰 문제가된다. 노이즈가 심한 이미지는 테두리가 아예 드러나지 않을 수도 있다. 이를 방지하기위해 가우시안등으로 노이즈를 제거한 뒤 기울기 이미지를 추출해야한다. 이를 한 과정으로 만들려면 미분한 가우시안 커널을 이용하면 된다. 이를 사용하여 선형 필터링을 하면 동일한 효과가 나타난다.
The Sobel operator
아니면 더욱 간단하게 다음과 같은 커널을 사용하면 된다.
1 | 0 | -1 |
2 | 0 | -2 |
1 | 0 | -1 |
* (1/8)
이는 오른쪽 블러링값에 왼쪽 블러링 값을 뺀 것이 되어 가중평균적으로 왼쪽에서 오른쪽으로의 변화량을 기록하게 된다. 즉 블러링 및 기울기처리가 합쳐진 간단한 커널이다. y축의 경우 위아래로 동일하게 하면된다.
더욱 얆은 edge detection
블러링을 처리하고 기울기를 추출하면 기울기도 블러링되어 기울기들의 편차가 줄어든다. 이로인해 edge가 두껍게 추출된다. 여기서 더욱 얆은 edge를 추출하기위해 다음 로직을 사용한다.
1. 각 픽셀의 기울기 벡터를 구한다.
2. 이때 기울기 벡터의 방향이 해당 픽셀이 속한 edge 곡선의 순간 수직인 방향이 될것이다(변화량이 큰 방향이므로)
3. 각 픽셀의 기울기 벡터의 +-방향의 일정한 길이의 선으로 주변 픽셀의 기울기 벡터를 샘플링한다.
4. 샘플링한 벡터들의 길이 중 픽셀 자신의 벡터 길이, 즉 색 변화량이 가장 크다면 해당 픽셀을 edge픽셀로 살리고 아니면 제외한다.
이를 수행하면 edge의 수직 방향 픽셀중 가장 변화률이 큰, 즉 가장 edge구성원에 가까운 픽셀들만이 edge 픽셀로 남게 된다.
thresholding
위 로직을 수행한 뒤 마지막으로 thresholding으로 일정 기준이상의 edge만을 남긴다.
이는 벡터 크기를 기준으로 하여 다음 세 단계로 픽셀들을 thresholding한다.
strong edge
weak edge
no edge
여기서 no edge는 바로 탈락이고 strong edge는 합격이다. weak edge는 strong edge와 이웃한 경우에만 합격이다.
이를 통해 최종적인 edge를 추출해낼 수 있다.
이번장의 로직들을 쓰며 블러링에 가우시안을 사용하여 edge detection을 수행하는 알고리즘을 Canny edge detector라고 한다.
참고 강의
부산대학교 정보컴퓨터공학부 컴퓨터비전개론(감진규 교수님)
'인공지능 > 컴퓨터비전' 카테고리의 다른 글
[컴퓨터비전개론][6장]Transformations (0) | 2023.04.06 |
---|---|
[컴퓨터비전개론][5장]feature descriptor (0) | 2023.04.03 |
[컴퓨터비전개론][4장]feature detection (0) | 2023.03.29 |
[컴퓨터비전개론][3장]이미지 resize (0) | 2023.03.25 |
[컴퓨터비전개론][1장]이미지 필터링 (0) | 2023.03.22 |