728x90
반응형
이번 포스팅은 책 '파이썬으로 만드는 OpenCV 프로젝트'를 보고 공부한 내용을 바탕으로 만들었습니다.
혹시나 틀린 부분이나 수정해야 할 부분이 있다면 댓글 남겨주세요!
영상 처리는 새로운 영상을 얻기 위해 기존 영상의 픽셀 값에 연산을 하여 새로운 픽셀 값을 얻는 작업입니다.
이 책에서 기존 픽셀 값과 주변 픽셀들의 값을 활용하여 얻는 방법인 공간 영역 필터를 사용하여 새로운 픽셀 값을 얻는 방법을 알려줍니다.
경계(edge) 검출
영상에서 경계(edge)를 검출하기 위해서는 픽셀 값이 갑자기 변화하는 곳을 찾아야 합니다. 이는 연속된 픽셀 값을 미분한다면 알 수 있습니다. 픽셀은 연속 공간이 아니므로 이산화 하여 근사 값으로 구해야 합니다.
미분 근사값은 붙어 있는 픽셀 값을 빼면 됩니다. 이것을 컨볼루션 커널로 만든 것을 Gx, Gy로 둡니다.
- Xkernel, 즉 Gx는 x 방향으로 경계를 검출하는 것이고
- Ykernel, Gy는 y 방향으로 경계를 검출하는 코드입니다.
- 미분 필터를 사용하여 가로와 세로의 경계를 검출 하는 코드인데 레나라는 이미지를 사용했을 때는 그 구분을 명확하게 할 수 없었네요.
라플라시안(Laplacian) 필터
- 경계 검출때 사용한 것은 1차 미분이었다면 라플라시안 필터는 2차 미분을 사용한 필터이며 더 정확한 검출을 할 수 있습니다.
- OpenCV에서 cv2.Laplacian(src, ddepth,dst,ksize,scale,delta,borderType)로 제공하고 있습니다.
- 라플라시안 필터는 노이즈에 민감하게 반응하므로 사전에 가우시안 필터로 노이즈를 제거하고 사용하는 것이 좋으며 그 결과를 볼 수 있습니다.
이와 같이 경계를 검출하는 작업은 물체와 배경을 분리하는 기초입니다. 그중에서도 기본만을 다뤘고 책에서는 다양한 필터를 제공하지만 두 가지만 해보았습니다.
틀린 곳이 있거나 질문이 있으시면 댓글 남겨주세요!
728x90
반응형
'영상처리' 카테고리의 다른 글
Python - OpenCV (6) : Image Inpainting (0) | 2021.07.09 |
---|---|
Python - OpenCV (5) : 허프 변환 (Hough Transformation) (0) | 2021.05.25 |
Python - OpenCV (4) : 컨투어(contour) 1 (0) | 2020.12.06 |
Python - OpenCV (3) : 모폴로지(morphology) (0) | 2020.12.05 |
Python - OpenCV (1) : 영상 필터 convolution & blurring (0) | 2020.12.02 |