2011-10-26 4 views
4

이 두 가지 기능을 사용하여 저울에서 가장자리를 찾습니다. 입력 이미지가 있고 입력 이미지에 마스크 (예 : prewitt)를 적용한 다음 결과 그림을 얻습니다.'imfilter'와 'conv2'의 차이점 [MATLAB]

mypic = imread('examplepic.jpg') 
hy = fspecial('prewitt') 
yimfilter = imfilter(mypic,hy) % Using imfilter 
yconv2 = conv2(mypic,hy) % Using conv2 

이 두 이론적 차이점은 무엇입니까? 나는 다른 출력을 가지고 있다는 것을 알고 있지만 차이점은 무엇입니까?

답변

9

CONV2

덕분 yconv2가 mypic보다 커야한다는 것을 의미 전체 2 차원 컨볼 루션을 출력한다. 반면 imfilter는 yimfilter가 mypic과 같은 크기가되도록 convolution의 가장자리를 기본적으로 잘라냅니다. conv2처럼 imfilter가 전체 컨볼 루션을 떠날 수있게 만들지 만 기본 동작은 아닙니다.

다른 차이점이 있습니다. imfilter의 "replicate"옵션, imfilter는 임의의 수의 차원 (2가 아닌)에서 컨볼 루션을 수행 할 수 있지만 그 점에 대해서는 묻지 않습니다.

0

글쎄, imfilter은 기본적으로 상관 관계를 사용하며 회선은 사용하지 않습니다. 당신이

yimfilter = imfilter(mypic,hy,'conv') 

를 호출 할 경우 yconv2yimfilter은 동일합니다. 상관과 컨볼 루션의 차이는 1D 컨볼 루션/상관 마스크를 사용하면 쉽게 볼 수 있습니다. 마스크의 방향에 따라 행/열의 위치가 바뀌어 출력이 동일합니다. 그런데

, filter2도 상관 관계를 사용하기 때문에 당신이, 당신이 yimfilteryfilter2이 동일한 지 확인할 수 있습니다

yimfilter = imfilter(mypic,hy) 
yfilter2 = filter2(hy,mypic) 

를 호출하는 경우.