본문 바로가기
Computer Vision

12. Edge Detection (Discrete 환경, Noise 환경)

by 꿈꾸는 띵땅근 2021. 1. 22.
학습 내용
1. Edge detection 방법
2. Discrete 환경에서의 Edge detection (Computer Vision에서의 edge detection)
3. Noise 환경에서의 Edge detection
4. FDG, Gradient 코딩하는법

 

 

 


1. Edge 구하는 방법

용어 : Good Localization : 엣지나 코너의 위치를 정확하게 픽셀단위로 찾아내는것. 

엣지 방향은 엣지 선의 수직방향. theta로 나타내면 atan2함수 쓰면됨
엣지를 구하는 방법 두가지 1. 극대점을 찾기 2. 두번 미분한점이 0인점 찾기(고딩 수학에서는 변곡점 찾기위해 두번미분했었는데..)

 

 

 

 

 

 

 

 

 


2. Discrete 환경에서의 edge detection (Computer Vision에서의 edge detection)

앞으로, I 는 원본이미지에 First Derivative를 곱한 값이다.

x축방향으로 편미분 하는법은 위와같다.
편미분 개념은 픽셀에서 픽셀 빼서 상수 곱하는 것이었는데, 이것을 코드로 구현하려면 Convolution Mask를 사용하면 된다. 위 이미지는 x축방향으로만, 또는, y축 방향으로만 편미분 할때 쓰이는 Convolution Mask를 설명하는 것이다. 
이번에는 한번 미분하는 것이 아닌, 두번 미분하는 라플라시안에 대한 내용이다. x축, y축 모두 고려한 상황이다. 

 


엣지 디텍팅 커널의 크기에 따라 특징이 다르다. 

 

 

 

 

 

 

 

 

 

 

 


3. Noise 가 있을때 Edge Detection 방법

1. 절에서 말했듯, Edge는 극대점을 찾거나, 두번 미분해서 0인점을 찾으면 된다. 

그런데, '미분'을 한다는것은 매우 작은 변화량을 보는 것인데, 아래와 같이 노이즈가 있는 신호에서 미분을 하면 극댓점을 구할수가 없다. 

 

그래서 먼저, 가우시안 필터 써서 노이즈 없애자

단점은, Convolution 시간이 오래걸린다는것. 

그래서, 가우시안 필터링 한다음에 미분하지 말고, 

가우시안 필터 자체를 미리 미분해놓고 그냥 그것을 f에 컨볼루션 하면 된다. 그게 FDG다

미분을 두번 해놓을수도 있다. 

그것은 LOG다. 

3차원에서 보면 이렇다

DOG라는것도 있는데, 이것은, Gaussian 두개를 선형결합하여 Laplacian 모양으로 얼추 만들어낸 필터를 말한다. 

오른쪽 파란색과 같이, sigma1, sigma2의 가우시안분포를 더하면 아래의 그래프가 나오고, 이것은 Laplacian이랑 비슷한 모양을 가진다. 

 

 

 

 

 

 

 


4. FDG, Gradient 코딩하는법

그냥 Gaussian Kernel은 i와 j가 더해진 형태로, 서로 분리할 수 있었다. 그러나.. 밑에는
1. FDG는 매 픽셀마다 u와 v값이 같이 곱해져 있는 형태라, 분리하기 어렵다. 2. X방향으로의 FDG는 y방향으로의 FDG와 y=x 대칭이다. 그러므로, 위와같이 노란색 초록색을 서로 뒤바꾸기로 간단히 코딩 가능하다. 3. Convolution은 연산할때 y축대칭딘다는것 8강에서 설명함. 

 

그리고, FDG는 위쪽으로 갔다가 아래쪽으로 갔다가 다시 0으로 돌아오는 모양인데, 그 한 봉우리의 넓이가 1이 되어야 한다고 한다. 왜 그런지는 모르겠다. 

 

FDG 적용하면

이렇게됨


출처

댓글