Computer Vision/Implement

Edge detection (python 구현)

jstar0525 2021. 6. 9. 13:16
반응형

Edge detection


머신비전, 영상처리 분야의 Edge detection, 윤곽선 검출에 대해 알아보겠습니다.

 

 

 

 

0. Edge


만화에서 물체를 선(Edge)으로 표현하여 사람들에게 정보를 전달하는 것과 같이,

이미지 영상에서도 Edge는 중요한 역할을 합니다.

 

영상에서 Edge는 밝기가 갑자기 변한다는 점을 이용하여 찾아냅니다.

 

이상적인 경우에는,

물체의 경계선과 같은 부분을 알아내어

데이터의 양을 줄일 수 있으며, 이후의 일을 간단화할 수 있습니다.

 

 

Sonka, Milan, Vaclav Hlavac, and Roger Boyle. Image processing, analysis, and machine vision. 4th ed. Cengage Learning, 2014. p135.

 

 

 

1. Roberts operator


Roberst operator는 differentail operator로,

근사적으로 구한 1차 미분을 활용합니다.

 

가장 오래된 Edge detector로, 

아래의 두 마스크를 이용하여

아래의 식과 같은 근사적인 1차 미분값을 통하여

edge를 찾아냅니다.

 

Sonka, Milan, Vaclav Hlavac, and Roger Boyle. Image processing, analysis, and machine vision. 4th ed. Cengage Learning, 2014. p137.

 

 

 

결과를 보면,

h1과 h2가 서로 다른 edge가 찾아내고,

이를 합하여 결과를 만듭니다.

 

Roberts operator는

2x2의 작은 크기의 마스크로 gradient를 계산하였기 때문에 

noise에 민감하다는 단점이 있습니다.

 

 

 

2. Sobel operator


Soble operator 또한 1차 미분 연산자를 사용하였고,

아래의 mask를 이용하여 edge를 추출합니다.

 

Sonka, Milan, Vaclav Hlavac, and Roger Boyle. Image processing, analysis, and machine vision. 4th ed. Cengage Learning, 2014. p138.

 

여기서 만약 h1=y라면, h3=x에 해당하게 됩니다.

 

 

 

 

 

3. Prewitt operator


Prewitt operator도

또한, 1차 미분 연산자이며

아래의 mask를 사용합니다.

 

Sonka, Milan, Vaclav Hlavac, and Roger Boyle. Image processing, analysis, and machine vision. 4th ed. Cengage Learning, 2014. p137.

 

 

 

 

 

 

4. Roberts, Sobel, Prewiit 비교


 

5. LoG (The Laplacian of Gaussian)


LoG는 이전과 다르게, 2차 미분을 적용합니다.

 

하지만 2차 미분의 결과가 noise에 민감하기 때문에

Gaussian을 적용하여 문제를 해결하려고 한 것이 LoG입니다.

 

여러 종류의 mask에 대해

결과는 다음과 같습니다.

( mask의 총 합은 0이며, 각 요소는 Gaussian 분포를 가지고 있습니다. )

 

 

 

 

 

 

 

 

 

 

 

 

 

5. python 구현


사용한 라이브러리는 다음과 같습니다.

 


각 mask는 numpy로 직접 구현하였습니다.

 


 

그리고, edge_detection 함수는 다음과 같습니다.

 


 

해당 소스는 아래의 링크에서 보실 수 있습니다.

 

https://github.com/jstar0525/MachineVision/tree/main/06%20Edge%20Detection

 

jstar0525/MachineVision

Machine Vision Algorithm. Contribute to jstar0525/MachineVision development by creating an account on GitHub.

github.com

 

반응형