2013-06-28 23 views

Trả lời

10

Nếu bạn sử dụng imfilter(I,fil,'same','conv') thì chúng giống nhau.

Sự khác biệt là imfilter sử dụng tương quan để lọc hình ảnh theo mặc định, có một số khác biệt nhỏ - về cơ bản, convolution bắt đầu từ một bên của hình ảnh, trong khi tương quan bắt đầu từ bên kia, vì vậy có một số khác biệt nhỏ trong bộ lọc đầu ra. Nếu bạn lật hình ảnh đầu tiên, bạn nhận được cùng một kết quả:

out4=fliplr(flipud(imfilter(fliplr(flipud(I)),fil,'same'))); 

Điều này hoàn toàn bằng out2.

+0

Cảm ơn @Hugh Nolan. Tôi nghĩ rằng bạn nên thay thế 'lưu' bằng 'giống nhau'. và một câu hỏi tăng lên. Bạn thấy trong [câu hỏi này] (http://stackoverflow.com/questions/10672184/implementing-imfilter-in-matlab) [petrichor] (http://stackoverflow.com/users/198428/petrichor) chưa được sử dụng 'conv' nhưng câu trả lời của anh ta đã được người hỏi chấp nhận !!! – sepideh

+0

Nếu bạn quen thuộc với xử lý hình ảnh, bạn sẽ biết rằng các bộ lọc tuyến tính không gian là mặt nạ chập thực tế. Nhưng mặc định của MATLAB cho một hàm áp dụng các bộ lọc không gian tuyến tính là tương quan. Tôi đã nghiên cứu nó ngay bây giờ trong tài liệu !!!!!!!!!!!!! – sepideh

+1

Cảm ơn, sửa lỗi chính tả. Trong liên kết bạn đã đăng, bộ lọc được sử dụng là đối xứng, vì vậy đầu ra sẽ giống nhau. Bạn cũng có thể lật bộ lọc thay vì hình ảnh, như được đề cập trong câu trả lời đó. –

3

Câu trả lời của bạn nằm trong phần giải thích của đối số đầu vào thứ tư để lọc.

  • Tương quan và chập
'corr'  imfilter performs multidimensional filtering using 
       correlation, which is the same way that FILTER2 
       performs filtering. When no correlation or 
       convolution option is specified, imfilter uses 
       correlation. 

    'conv'  imfilter performs multidimensional filtering using 
       convolution. 

Hãy thử out3=imfilter(I,fil,'same','conv'); và bạn sẽ nhận được kết quả giống với conv2.

Các vấn đề liên quan