当前位置:网站首页>【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
2022-07-04 12:50:00 【Nirvana;】
【Matlab】conv、filter、conv2、filter2和imfilter函数总结
1. conv函数
作用:
1.计算一维向量卷积
u = [1 1 1];
v = [1 1 0 0 0 1 1];
w = conv(u,v)
2.通过卷积计算多项式乘法
u = [1 0 1];
v = [2 7];
w = conv(u,v)
2. filter函数
作用:一维数字滤波器
y = filter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数 对输入数据 x 进行滤波。
// 移动平均滤波器是用于对含噪数据进行平滑处理的常用方法。
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')
3. conv2函数
作用:二维卷积
A = rand(3);
B = rand(4);
C = conv2(A,B)
conv2函数
1、用法
C=conv2(A,B,shape); %卷积滤波
A:输入图像,B:卷积核
假设输入图像A大小为ma x na,卷积核B大小为mb x nb,则
当shape=full时,返回全部二维卷积结果,即返回C的大小为(ma+mb-1)x(na+nb-1)
shape=same时,返回与A同样大小的卷积中心部分
shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回C的大小为(ma-mb+1)x(na-nb+1)
2、实现步骤
假设输入图像A大小为ma x na,卷积核大小为mb x nb,则MATLAB的conv2函数实现流程如下:
a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零)。
b、关于卷积核的中心,旋转卷积核180度。
c、滑动卷积核,将卷积核的中心位于图像矩阵的每一个元素。
d、将旋转后的卷积核乘以对应的矩阵元素再求和。
4. filter2函数
1、用法
B = filter2(h,A,shape) ; %相关(correlation)滤波
- A:输入图像,h:相关核
- 假设输入图像A大小为ma x na,相关核h大小为mb x nb,则
当shape=full时,返回全部二维卷积结果,即返回B的大小为(ma+mb-1)x(na+nb-1) - shape=same时,返回与A同样大小的卷积中心部分
- shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回B的大小为(ma-mb+1)x(na-nb+1)
2、实现步骤
假设输入图像A大小为ma x na,相关核h大小为mb x nb,MATLAB的filter2的实现流程如下:
- a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意filter2不支持其他的边界补充选项,函数内部对输入总是补零)。
- b、滑动相关核,将相关核的中心位于图像矩阵的每一个元素。
- c、将相关核乘以对应的矩阵元素再求和
注意filter2不对核进行180°旋转,直接对应相乘再相加,这一点与filter2不同。
5. imfilter函数
1、用法
B=imfilter(A,H,option1,option2,option3);
A:输入图像,H:滤波核
- option1:边界选项,可选的有:补充固定的值X(默认都补零),symmetric,replicate,circular
- option2:输出图像大小选项,可选的有same(默认),full
- option3:决定采用与filter2相同的相关滤波还是与conv2相同的卷积滤波
2、优势:
Padding Options 填充选项
1)默认补0
2)symmetric 对称:数组边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到
3)replicate 复制:数组边界之外的输入数组值假定为等于最近的数组边界值.
4)circular 循环:数组边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算的。
Output Size 输出大小
same:输出数组与输入数组大小相同。这是未指定输出大小选项时的默认行为。
full:输出数组是完全滤波后的结果,因此比输入数组大。
6. fspecial函数
作用:构造卷积核,可以与filter2、conv2和imfilter配合使用
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')
7. 总结
filter2、conv2将输入转换为double类型,输出也是double的,输入总是补零(zero padded), 不支持其他的边界补充选项。
imfilter:不将输入转换为double,输出只与输入同类型,有灵活的边界补充选项。建议使用~
8. 代码演示
MATLAB代码:
clear;
close all;
clc;
%% fspecial函数
value = 5;
h = fspecial('gaussian',[5 5],value);
srcImage = imread('lena.jpg');
srcImage = rgb2gray(srcImage);
srcImage_double = double(srcImage);
%% conv2函数 默认:'full',只能补零
image_conv2 = conv2(srcImage_double,h);
%% filter2函数 默认:'same',只能补零
image_filter2 = filter2(h,srcImage_double);
%% imfilter函数 默认:'same'
image_imfilter = imfilter(srcImage,h,'replicate');
%% 显示图像
figure(1);
subplot(221);imshow(srcImage,[]); title('原图');
subplot(222);imshow(image_conv2,[]); title('conv2');
subplot(223);imshow(image_filter2,[]); title('filter2');
subplot(224);imshow(image_imfilter,[]); title('imfilter');
效果图:
边栏推荐
猜你喜欢
Huahao Zhongtian sprint Technology Innovation Board: perte annuelle de 280 millions de RMB, projet de collecte de fonds de 1,5 milliard de Beida Pharmaceutical est actionnaire
30:第三章:开发通行证服务:13:开发【更改/完善用户信息,接口】;(使用***BO类承接参数,并使用了参数校验)
好博医疗冲刺科创板:年营收2.6亿 万永钢和沈智群为实控人
華昊中天沖刺科創板:年虧2.8億擬募資15億 貝達藥業是股東
Qt如何实现打包,实现EXE分享
吃透Chisel语言.05.Chisel基础(二)——组合电路与运算符
德明利深交所上市:市值31亿 为李虎与田华夫妻档
1200. Minimum absolute difference
安装trinity、解决报错
.Net之延迟队列
随机推荐
Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型(转)
C语言集合运算
硬件基础知识-二极管基础
JVM series - stack and heap, method area day1-2
CVPR 2022 | 大幅减少零样本学习所需的人工标注,提出富含视觉信息的类别语义嵌入(源代码下载)...
IDEA快捷键大全
MySQL version 8 installation Free Tutorial
find命令报错: paths must precede expression(转)
2022 Shandong Province safety officer C certificate examination question bank and online simulation examination
2022年山东省安全员C证考试题库及在线模拟考试
Introduction to XML II
2022G3锅炉水处理考试题模拟考试题库及模拟考试
.Net之延迟队列
【Antd】Antd 如何在 Form.Item 中有 Input.Gourp 时获取 Input.Gourp 的每一个 Input 的value
动画与过渡效果
BLOB,TEXT GEOMETRY or JSON column 'xxx' can't have a default value query 问题
基于YOLOv1的口罩佩戴检测
xshell/bash/zsh 等终端鼠标滚轮乱码问题(转)
Unittest框架之断言
锐成芯微冲刺科创板:年营收3.67亿拟募资13亿 大唐电信是股东