2017-04-24 8 views
1

가 수직 라인을 검출하기위한 커널이라고 말한다 :Skimage filters.sobel_v는 의미가 없습니다. 왜? <a href="http://scikit-image.org/docs/dev/api/skimage.filters.html#skimage.filters.sobel_v" rel="nofollow noreferrer">scikit-image's documentation</a>에서

1 0 -1 
2 0 -2 
1 0 -1 

내가 할 경우

img = np.array([[1.0, 2.0, 3.0], [4, 5, 6], [7, 8, 9]]) 
Lx = filters.sobel_v(img) 

하고, 다음 Lx를 인쇄, 내가 얻을 :

Lx 
0.0000 0.0000 0.0000 
0.0000 2.0000 0.0000 
0.0000 0.0000 0.0000 

그 결과는 다음과 같아야하므로 의미가 없습니다.

1*(-1) + 3*1 + 4*(-2) + 6*2 + 7*(-1) + 9*1 = -16 + 24 = 8 

이고 2이 아니라 중앙 위치에 있습니다.

무슨 일입니까?

+0

답변 해 주셔서 감사합니다. 굉장히 유용하다. –

+0

그리고 내 convolution 수정 주셔서 감사합니다 :) –

답변

1

차이는 스케일링 팩터1/4입니다.

outer product

:

Gv

이 커널 평활화 커널의 생성물 및 이런 유도체 커널로 분해 될 수있다 :

수직 에지 검출 용 소벨 커널은 일반적으로 정의

평활화 커널이 진정한 평균화 필터가되도록하려면, 계수는 1/(1+2+1) = 1/4으로 조정해야합니다. 그렇게함으로써, 소벨 커널이된다 : 스케일링 인자는 문서에 언급되지 않은

Gv scaled

있지만, 실제로 (자신을 설득하기 위해 source code 체크 아웃) 구현에 사용된다.