관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

에지와 영역 1 - 에지 검출 본문

인공지능/컴퓨터 비전

에지와 영역 1 - 에지 검출

huenuri 2024. 11. 9. 21:18

드디어 4장을 공부할 수 있는 시간이 왔다. 연습문제를 푸는데 많은 시간을 보내느라 오늘 4장 학습을 개념까지만 끝내는 것도 힘들 수 있겠다. 그래도 남은 시간 최선을 다해서 공부해 볼 것이다.

 

시작하기 전에

에지 검출과 영역 분할은 컴퓨터 비전이 초창기부터 중요하게 다루어온 연구 주제다. 아래 그림은 캘리포니아 대학교의 버클리 팀에서 영역 분할 알고리즘을 개 발하고 평가하기 위해 2011년에 공개한 BSDS 데이터셋의 예제 영상이다. 그림 b는 사람이 정성을 들여 정교하게 분할한 영상이다. 컴퓨터 비전이 이 정도 수준으로 할 수 있을까?

 

 

에지는 물체의 경계에 있는 점이다. 에지를 완벽하게 검출해 물체의 경계를 폐곡선으로 따낼 수 있다면 분할 문제가 저절로 풀린다. 반대로 영역 분할 알고리즘이 완벽해 물체를 독립된 영역으로 분할하면 에지 검출 문제가 저절로 풀린다. 따라서 둘은 쌍대 문제다. 하지만 둘은 완전히 다른 방향으로 문제 해결을 모색한다.

에지 검출은 특성이 크게 다른 화소에 집중하는 반면 영역 분할은 비슷한 화소를 묶는 방식을 선호한다.

 

사람은 영역 분할을 할 때 머리 속에 기억된 물체 모델을 활용해 영역이 어떤 물체에 해당하는지 동시에 알아내는 의미 분할을 한다. 이 장에서 소개하는 고전적인 분할 알고리즘은 물체 모델 없이 단지 화소의 값에만 의존하기 때문에 의미 분할이 가능하다.


 

 

에지 검출

에지 검출 알고리즘은 물체 내부는 명암이 서서히 변하고 물체 경계는 명암이 급격히 변하는 특성을 활용한다. 다음 그림은 선수의 손가락 일부를 확대해 화소값을 확인하는 예다. 예상대로 물체의 경계에서 급격한 명암 변화가 발생한다.

 


 

 

1. 영상의 미분

미분은 변수 x의 값이 미세하게 증가했을 때 함수의 변화량을 측정한다. 식 (4.1)은 미분을 정의하고 그림 4-3 a는 식을 설명한다.

 


 

 

 

 

2. 에지 연산자

그림 4-3 b는 에지 검출의 핵심을 거의 다 설명한다. 컨볼루션으로 구한 미분 영상 f'는 명암 변화가 없는 곳은 0, 명암 변화가 급격한 부분은 3을 가진다. 그림 4-3은 핵심을 설명하지만 현실을 제대로 반영하지 못한다. 현실 세계의 영상은 그림 4-2처럼 물체 경계에서 명암 변화가 계단 모양이 아니다. 지금부터 현실 세계를 반영하는 방법을 찾아본다.

 

 

현실 세계의 램프 에지

현실에서는 아래 그림에서 보는 바와 같이 명암이 몇 화소에 걸쳐 변하는 램프 에지가 발생한다. 컨볼루션으로 구한 1차 미분 영상을 보면 램프 에지에서 1보다 큰 두께의 에지가 발생했다. 에지의 정확한 위치를 정하는 위치 찾기 문제가 생겼다. 물체 경계를 지나면서 명암값이 커지면 미분값이 양수고 작아지면 음수다. 1차 미분은 에지 발생 여부뿐 아니라 에지가 어떤 영향을 향하는지에 대한 정보까지 제공한다는 긍정적인 현상이다.

 

 

 

 

그림 4-4를 잘 살펴보면 1차 미분 영상은 에지인 봉우리에서 발생하고 2차 미분 영상은 영교차가 발생한다. 영교차란 왼쪽과 오른쪽에 부호가 다른 반응이 나타나고 자신은 0을 갖는 위치를 뜻한다. 그림 4-5는 이런 현상을 개념적으로 보여준다. 이 관찰 결과를 바탕으로 에지 검출은 1차 미분에서 봉우리를 찾거나 2차 미분에서 영교차를 찾는 일이라고 정의할 수 있다.

 

 


 

 

 

1차 미분에 기반한 에지 연산자

 

 


 

 

소벨 연산자의 적용

 

프로그램 4-1은 소벨 연산자를 적용하여 에지 강도 맵을 구한다. 10행은 Sobel 함수로 x 방향의 연산자를 적용한다. 두 번째 인수는 결과 영상을 32비트 실수 맵에 저장을, 세 번째와 네 번째 인수는 x 방향 연산자를 사용을, 네 번째 인수는 3 x 3 크기를 사용하라고 지정한다.

22행의 addweighted 함수는 sovel_x와 sobel_y에 0.5를 곱해서 더한 결과를 edge_strength 객체에 저장한다. 

 

소벨 에지 검출(Sobel 함수 사용)하기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

실행 결과를 분석해보자. x 방향 연산자를 적용한 sobel_x는 수직 방향의 에지가 선명하게 나타난다. sobel_y는 수평 방향의 에지가 선명하다. 명암 변화가 큰 곳에서 더욱 선명한 에지가 나타난 현상도 확인할 수 있다.

 


 

 

 

학습을 마치고

4단원의 첫번째 학습을 마쳤다. 미분도 등장하고 모르는 내용들이 많지만 지금은 너무 깊이 있게 학습하기보다 빠르게 읽고 넘어가려고 한다. 그리고 단원을 마칠 즈음에는 분명 이해할 수 있는 게 많을 거라 기대해 본다.

이어서 다음 내용을 진행해 보겠다.