수평, 수직 가장자리

연구로 조사하고 있을 때, 조금 시간이 걸렸기 때문에.
수평선, 세로선의 검출에는 Sobel 필터를 이용합니다.

수평 방향 검출용
\begin{matrix}
1 & 2 & 1 \\
0 & 0 & 0 \\
-1 & -2 & -1
\end{matrix}

수직방향 검출용
\begin{matrix}
1 & 0 & -1 \\
2 & 0 & -2 \\
1 & 0 & -1
\end{matrix}

이들을 이미지에 적용합니다.

또한 OpenCV에는
cv2.Sobel(src, ddepth, dx, dy, dst, ksize, scale, delta, borderType)

그래서 사용합시다.

입력 이미지 src는 회색조로 합니다.
ddepth는 색심도로, cv2.CV_32F를 넣으면 괜찮습니다.
(dx, dy) = (0, 1)에서 수평 방향 검출, (1, 0)에서 수직 방향 검출입니다.
예제에 표시된 소벨 필터의 커널 크기는 3이므로 ksize는 3이 될 수 있습니다.
gray = cv2.imread('sample.jpg', 0)

dx = cv2.Sobel(gray, cv2.CV_32F, 1, 0, ksize=3)
dy = cv2.Sobel(gray, cv2.CV_32F, 0, 1, ksize=3)

cv2.imwrite('./dx.jpg', dx)
cv2.imwrite('./dy.jpg', dy)

                                                     
테스트에 사용한 이미지


dx


dy


Lena라고 이해하기 어렵습니다. . .
지금 도로에 관한 검출하고 있습니다만, 그쪽이라고 알기 쉽습니다.

좋은 웹페이지 즐겨찾기