2013-03-05 5 views
0

소벨 (Gx 및 Gy)의 정확한 마스크는 무엇입니까? 내가 본 것은 사람들이 그런 아래와 같이 작성 방법에 대한 두 가지 유형,소벨 마스크에 대한 혼란

스타일 1

Gx = [-1 -2 -1 
     0 0 0 
     1 2 1] 

Gy = [-1 0 1 
     -2 0 2 
     -1 0 1] 

스타일이

Gx = [-1 0 1 
     -2 0 2 
     -1 0 1] 

Gy = [-1 -2 -1 
     0 0 0 
     1 2 1] 

편집가있다

@Aurelis

> (X 행의 COL)에서 OpenCV에서

- - 매트랩

> (COL의 X 행)은

그러나, 아래의 그림은 매트랩 아마도 모두

-->column 
^ 
|row 
| 

대한 올바른 스타일 1이 사용되면 Gx == 가로 에지, Gy == 세로 에지, 스타일 2가 사용되면 Gx == 가로 에지, Gy == 세로 에지를 출력합니다. 두 가지 모두 동일한 출력을 생성합니다 (내부 행렬이 주요 행 순서에 따라 다를 수 있음).

@Abhishek 스타일 1을 사용하여 가로 및 세로 가장자리를 계산하고 있습니까? Gx는 수직 에지에 대응하고 Gx는 수평 에지에 대응한다. 스타일 2가 그 스타일을 보완한다는 의미입니까? 예를 들면. Gx 컴퓨팅은 수직 에지를 제공하고 Gy는 수평 에지를 제공합니까?

+0

당신은 나에게 당신의 편집에 주문을 전환했다. MATLAB은 두 번째 순서입니다. OpenCV, – Aurelius

답변

1

수학 표기법을 사용하는 경우 적절한 마스크는 스타일 2입니다 (here 참조).

MATLAB과 OpenCV의 행렬 차이로 인해 혼란이 올 수 있습니다. MATLAB 행렬은 행 우선 순서로 지정되며 OpenCV 행렬은 행 우선 순서로 지정됩니다.

스타일 1은 열 - 주요 방식으로 소벨 마스크를 나타내고 스타일 2는 행 - 주요 순서로 동일한 마스크를 나타냅니다.

+0

방금 ​​편집했습니다. 아마도 지금은 맞습니까? – Mzk

+0

나는 당신의 편집을 정말로 이해하지 못합니다. 아마도 [this] (http://en.wikipedia.org/wiki/Row-major_order)가 도움이 될 것입니다. – Aurelius

+0

아. 내가 참조. 감사합니다. – Mzk

3

스타일 2가 정확합니다. 그러나 두 스타일을 모두 사용하면 커널이 이미지와 컨볼 루션됨에 따라 동일한 결과를 얻을 수 있습니다.

Gx = [-1 -2 -1 --- Y 방향으로 피쳐를 추출합니다. X 방향. 1 2 1]

Gy = [-1 0 1 -2 0 2 < --- Y 방향이 아닌 X 방향으로 피쳐를 추출합니다. -1 0 1]

이는 간단한 2 차원 컨벌루션을 사용하여 확인할 수 있습니다.

원본 이미지 :을 Style1, GX를 사용 original image

: enter image description here

사용을 Style1, Gy의 선량 : enter image description here