OpenCV에서 Scharr 필터는 Sobel 연산자의 작동과 함께 존재합니다. Sobel 커널이 3 인 경우 결과는 더 명백한 오류를 일으킬 수 있습니다. 이 문제에 대한 응답으로 OpenCV는 Scharr 기능을 제공합니다. 이 함수는 크기 3의 커널을 대상으로하며 계산 속도는 Sobel 기능만큼 빠르며 결과는 더 정확하지만 노이즈 저항은 Sobel 기능만큼 좋지 않습니다.
Scharr 필터를 사용하여 x 또는 y 방향의 이미지 차이를 계산하면 매개 변수가 Sobel과 동일합니다.
기능 : IMGPROC.SCHARR (MAT SRC, MAT DST, int DDEPTH, Int DX, Int DY, Double Scale, Double Delta, Int BorderType)
매개 변수 설명 :
SRC : 소스 이미지
DST : 탐지 결과 이미지
ddepth : 출력 이미지의 깊이
DX : X 방향의 차이 순서
DY : Y 방향의 차이 순서
스케일 : 스케일링 계수
델타 : 결과가 출력 이미지에 저장되기 전에 델타 값 선택 사항, 기본값은 0입니다.
BorderType : 경계 모드, Default Border_Default
샘플 코드 :
public static void main (String [] args) {System.LoadLibrary (core.native_library_name); mat src = imgcodecs.imread ( "f : //201103121320580528.jpg"); mat dst = src.clone (); mat dstx = src.clone (); mat dsty = src.clone (); imgproc.gaussianblur (SRC, DST, New Size (3, 3), 0); imgproc.cvtcolor (dst, dst, imgproc.color_rgb2gray); imgproc.scharr (dst, dstx, -1, 1, 0, 1, 0, core.border_default); imgcodecs.imwrite ( "f : //dstx.jpg", dstx); imgproc.scharr (dst, dsty, -1, 0, 1, 1, 0, core.border_default); imgcodecs.imwrite ( "f : //dsty.jpg", dsty); core.addweighted (dstx, 0.5, dsty, 0.5, 0, dst); imgcodecs.imwrite ( "f : //dst.jpg", dst); } 소스 이미지 :
X 방향의 Scharr :
Y 방향으로 Scharr :
그라디언트 병합 후 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.