当前位置:网站首页>[matlab] summary of conv, filter, conv2, Filter2 and imfilter convolution functions

[matlab] summary of conv, filter, conv2, Filter2 and imfilter convolution functions

2022-07-04 14:10:00 Nirvana;

【Matlab】conv、filter、conv2、filter2 and imfilter Function summary

1. conv function

effect :
1. Calculate one-dimensional vector convolution

u = [1 1 1];
v = [1 1 0 0 0 1 1];
w = conv(u,v)

2. Calculate polynomial multiplication through convolution

u = [1 0 1];
v = [2 7];
w = conv(u,v)

2. filter function

effect : One dimensional digital filter
y = filter(b,a,x) Use the numerator and denominator coefficients b and a Defined rational transfer function For input data x Filtering .

//  Moving average filter is a common method for smoothing noisy data .
t = linspace(-pi,pi,100);
rng default  %initialize random number generator
x = sin(t) + 0.25*rand(size(t));
windowSize = 5; 
b = (1/windowSize)*ones(1,windowSize);
a = 1;
y = filter(b,a,x);
plot(t,x)
hold on
plot(t,y)
legend('Input Data','Filtered Data')

 Insert picture description here

3. conv2 function

effect : Two dimensional convolution

A = rand(3);
B = rand(4);
C = conv2(A,B)

conv2 function
1、 usage
C=conv2(A,B,shape); % Convolution filtering
A: The input image ,B: Convolution kernel
Assumed input image A The size is ma x na, Convolution kernel B The size is mb x nb, be
When shape=full when , Return all two-dimensional convolution results , Return C The size is (ma+mb-1)x(na+nb-1)
shape=same when , Return and A The central part of the convolution of the same size
shape=valid when , Do not consider boundary zero filling , That is, as long as there is a boundary complement of zero, those involved in the operation are rounded off , return C The size is (ma-mb+1)x(na-nb+1)
2、 Implementation steps
Assumed input image A The size is ma x na, The convolution kernel size is mb x nb, be MATLAB Of conv2 The function implementation process is as follows :
a、 Zero the input image , Before the first line and after the last line mb-1 That's ok , Before the first column and after the last column nb-1 Column ( Be careful conv2 Other boundary supplement options are not supported , The function always fills the input with zero ).
b、 About the center of convolution kernel , Rotating convolution kernel 180 degree .
c、 Sliding convolution kernel , The center of the convolution kernel is located in each element of the image matrix .
d、 Multiply the rotated convolution kernel by the corresponding matrix elements and then sum .

4. filter2 function

1、 usage
B = filter2(h,A,shape) ; % relevant (correlation) wave filtering

  • A: The input image ,h: Related nuclear
  • Assumed input image A The size is ma x na, Related nuclear h The size is mb x nb, be
    When shape=full when , Return all two-dimensional convolution results , Return B The size is (ma+mb-1)x(na+nb-1)
  • shape=same when , Return and A The central part of the convolution of the same size
  • shape=valid when , Do not consider boundary zero filling , That is, as long as there is a boundary complement of zero, those involved in the operation are rounded off , return B The size is (ma-mb+1)x(na-nb+1)

2、 Implementation steps
Assumed input image A The size is ma x na, Related nuclear h The size is mb x nb,MATLAB Of filter2 The implementation process of is as follows :

  • a、 Zero the input image , Before the first line and after the last line mb-1 That's ok , Before the first column and after the last column nb-1 Column ( Be careful filter2 Other boundary supplement options are not supported , The function always fills the input with zero ).
  • b、 Sliding correlation core , The center of the correlation kernel is located in each element of the image matrix .
  • c、 Multiply the correlation kernel by the corresponding matrix elements and then sum

Be careful filter2 No nuclear 180° rotate , Directly correspond to multiply and add , This is related to filter2 Different .

5. imfilter function

1、 usage
B=imfilter(A,H,option1,option2,option3);

A: The input image ,H: Filter core

  • option1: Boundary options , Optional : Add a fixed value X( Zero is filled by default ),symmetric,replicate,circular
  • option2: Output image size options , Optional same( Default ),full
  • option3: Decide to adopt and filter2 The same correlation filtering is still the same as conv2 The same convolution filter

2、 advantage :
Padding Options Fill options
1) Default complement 0
 Please add a picture description
 Please add a picture description
2)symmetric symmetry : The input array value outside the array boundary is obtained by specular reflection of the array along the array boundary
 Please add a picture description
 Please add a picture description
3)replicate Copy : The input array value outside the array boundary is assumed to be equal to the nearest array boundary value
 Please add a picture description .
 Please add a picture description
 Please add a picture description
4)circular loop : The input array value outside the array boundary is calculated by implicitly assuming that the input array is periodic .
 Please add a picture description
 Please add a picture description
Output Size Output size

same: The output array is the same size as the input array . This is the default behavior when the output size option is not specified .
full: The output array is the result of complete filtering , Therefore, it is larger than the input array .

6. fspecial function

effect : Constructing convolution kernel , It can be done with filter2、conv2 and imfilter In combination with

h = fspecial(type)
h = fspecial('average',hsize)
h = fspecial('disk',radius)
h = fspecial('gaussian',hsize,sigma)
h = fspecial('laplacian',alpha)
h = fspecial('log',hsize,sigma)
h = fspecial('motion',len,theta)
h = fspecial('prewitt')
h = fspecial('sobel')

 Insert picture description here

7. summary

filter2、conv2 Convert the input to double type , The output is double Of , Input is always filled with zero (zero padded), Other boundary supplement options are not supported .
imfilter: Do not convert input to double, Output is only of the same type as input , There are flexible boundary supplement options . It is recommended to use ~

8. Code demonstration

MATLAB Code :

clear; 
close all;
clc;

%% fspecial function 
value = 5;
h = fspecial('gaussian',[5 5],value); 

srcImage = imread('lena.jpg');
srcImage = rgb2gray(srcImage);
srcImage_double = double(srcImage);

%% conv2 function     Default :'full', Only zero can be filled 
image_conv2 = conv2(srcImage_double,h);

%% filter2 function    Default :'same', Only zero can be filled 
image_filter2 = filter2(h,srcImage_double);

%% imfilter function   Default :'same'
image_imfilter = imfilter(srcImage,h,'replicate');

%%  Display images 
figure(1);
subplot(221);imshow(srcImage,[]); title(' Original picture '); 
subplot(222);imshow(image_conv2,[]); title('conv2'); 
subplot(223);imshow(image_filter2,[]); title('filter2'); 
subplot(224);imshow(image_imfilter,[]); title('imfilter');

design sketch :
 Insert picture description here

原网站

版权声明
本文为[Nirvana;]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207041119483027.html