엣지란 이미지데이터에서 급격한 값이 변화가 보이는 지점을 말합니다.
위와 같이 검은색, 하얀색, 검은색의 값이 나타나는 데이터라면 [ 0, 255, 0 ] 의 형식으로 되어있어, 첫번째와 두번째는 255라는 차이값이, 그리고 두번째에서 세번째는 -255라는 차이값이 생기므로 2개의 엣지가 검출됩니다. 어느정도의 차이부터 엣지로 검출할지는 사용자가 지정합니다. ( 사용자가 지정하는 값을 threshold라고 부릅니다. )
sobel을 이용해 엣지를 검출한다면 x축으로 검출하는 방법, y축으로 검출하는 방법이 있습니다.( 엣지검출을 위한 방향을 정해주어야 합니다. )
첫번째 사진이 엣지검출을 위한 이미지입니다. 두번째 사진은 sobel 사용해 x축과 y축으로 엣지검출한 값을 합한 이미지입니다. 세번재는 y축으로, 네번째는 축으로 엣지검출한 이미지입니다.( 엣지검출시 검정색 -> 흰색 으로 이동하는 +값의 변화만 엣지검출하는 모습을 확인할 수 있습니다. )
x축으로, y으로 2번의 과정 거치지 않고 라플라시안 필터를 사용한다면 바로 모든 엣지검출을 할 수 있습니다. 그리고 따로 지정해주지 않아도 +값만이 아닌 -값도 엣지검출을 해주어 프로그래밍이 훨씬 수월합니다.
일반적인 사진에서 엣지검출을 할 경우 처리하기 쉬운 사진으로는 괜찮지만 만약 사진에 노이즈가 많다면 노이즈들 또한 값의 변화가 크므로 모두 엣지로 검출됩니다.( 이럴 경우, 이미지를 블러링처리를 한 후에 엣지검출을 해야합니다. )
블러링 후에 이미지의 경계부분이 뭉게진다면 데이터를 더 뚜렷하게 만들어주는 필터를 이용해 컨벌루션해준 후에 엣지검출을 합니다.( 데이터의 값을 뚜렷하게 만들어주는 필터를 사용합니다.
블러링 처리 후 엣지검출을 따로따로 하는것이 아닌 한번에 하는 알고리즘이 있는데 이것을 Canny Edge Detecttion이라고 합니다.
가우시안 블러로 노이즈 제거 후 엣지검출을 해줍니다. 사용자는 엣지검출에서 엣지로 인정하는 최소값( threshold )을 바꿔가며 적절한 엣지검출이 나올때까지 테스트합니다.
Trackbar를 이용해 적절한 threshold값을 정해주면 보다 정확한 엣지검출을 할 수 있습니다.
'프로그래밍 > openCV' 카테고리의 다른 글
차선 검출하기 (0) | 2021.04.22 |
---|---|
허프 변환 ( Hough Transform ) (0) | 2021.04.21 |
OpenCV를 이용해 이미지 모양 변환하기( Homography ) (0) | 2021.04.18 |
OpenCV 시작하기( feat. visual studio code ) (0) | 2021.04.17 |