美文网首页
4、空间滤波器

4、空间滤波器

作者: sumpig | 来源:发表于2019-03-26 21:11 被阅读0次

1、线性空间滤波

相关:
w(x,y)☆f(x,y)=\sum^a_{s=-a}\sum^b_{t=-b}w(s,t)f(x+s,y+t)
卷积(w旋转180°):
w(x,y)★f(x,y)=\sum^a_{s=-a}\sum^b_{t=-b}w(s,t)f(x-s,y-t)

工具箱使用 imfilter 来实现线性空间滤波

g = imfilter(f, w, filtering_mode, boundary_options, size_options)

滤波模式: 'corr' ,相关,默认值;'conv',卷积。
边界选项:
P,使用P值来填充扩展,默认选项,值为0;
'replicate',图像的大小通过复制图像边界外的值来扩展;
'symmetric',图像的大小通过边界镜像反射来扩展;
'circular',图像的大小通过将图像处理为二维周期函数的一个周期来扩展;
大小选项:
'full',输出与填充后的图像大小相同;
'same',输出图像的大小与输入图像的大小相同。

w = ones(31); %31 x 31的滤波器
f8 = im2uint8(f);
g8 = imfilter(f8, w, 'replicate');
imshow(g8, [])

2、非线性空间滤波

实现非线性空间滤波时,常用 colfilt 函数

g = colfilt(f, [m n], 'sliding', fun)

使用 colfilt 时,滤波前需要显示的填充输入图像,使用二维函数 padarray 可以实现

fp = padarray(f, [r c], method, direction)

[r c]: 表示填充 f 的行和列数
method: symmetric, repliacte, circular
direction: pre, post, both(默认值)

f = [1 2; 3 4]
fp = padarray(f, [1 1], 'replicate', 'both')
%几何平均滤波
gmean = @(A) prod(A, 1)^(1/size(A, 1));
f = padarray(f, [m n], 'replicate');
g = colfit(f, [m n], 'sliding', @gmean)
[M N] = size(f);
g = g((1:M) + m, (1:N) + n);

3、标准线性空间滤波器

工具箱中预定义了一些二维线性空间滤波器,可以通过函数 fspecial 生成

w = fspecial('type', parameters)

'average': 矩形平均滤波器
fspecial('average', [r c])
'disk': 圆形平均滤波器
fspecial('disk', r)
'gaussian': 高斯低通滤波器
fspecial('gaussian', [r c], sig)
'laplacian': 拉普拉斯滤波器
fspecial('laplacian', alpha)
'log': 高斯拉普拉斯滤波器
fspecial('log', [r c], sig)
'motion' 近似计算 len 个像素的线性运动
fspecial('motion', len, theta)
'prewitt:' prewitt 滤波器,近似计算垂直梯度
fspecial('prewitt')
'sobel': sobel滤波器,近似计算垂直梯度
fspecial('sobel')
'unsharp': 非尖锐滤波器
fspecial('unsharp', alpha)

<拉普拉斯算子>

\nabla^2f(x,y)=\frac{\partial^2f(x,y)}{\partial x^2}+\frac{\partial^2f(x,y)}{\partial y^2}

近似为

\nabla^2f(x,y)=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)

空间模板

w = fspecial('laplacian', 0)
% 0  1  0
% 1 -4  1
% 0  1  0

拉普拉斯滤波器实现如下

w = fspecial('laplacian', 0)
f2 = tofloat(f);
g1 = imfilter(f2, w, 'replicate');
g = f2 - g1;

4、标准非线性空间滤波器

  • 排序滤波器
g = ordfilt2(f, order, domain)

order:排序中的第 order 个元素代替 f 中的每个元素
domain: 一个由 0 和 1 组成的大小为 m x n 的矩阵,计算时,不使用对应为 0 的像素。

%最小滤波器
g = ordfilt2(f, 1, ones(m, n))
%最大滤波器
g = ordfilt2(f, m*n, ones(m, n))
%中值滤波器
g = ordfilt2(f, (m*n + 1)/2, ones(m, n))

工具箱中提供了一个专门的二维终止滤波器函数 medfilt2

g = medfilt2(f, [m n], padopt)

padopt: 指定边界填充选项
'zeros:'零填充,(默认值)
'symmetric': 镜像方式
'indexed':若 f 是 double 类的则用 1 填充,否则用 0 填充

fn = imnoise(f, 'salt & pepper', 0.2);
gm = medfilt2(fn, 'symmetric');

相关文章

  • 滤波器的分类

    a.平滑空间滤波器:去除图像中不重要的细节,减少噪声b.锐化空间滤波器: a.平滑空间滤波器 线性滤波器(均值滤波...

  • 4、空间滤波器

    1、线性空间滤波 相关:卷积(w旋转180°): 工具箱使用 imfilter 来实现线性空间滤波 滤波模式: '...

  • Scharr与Laplacian滤波器---OpenCV-Pyt

    Scharr滤波器 OpenCV还给我们提供了Scharr滤波器,该滤波器与Sobel滤波器具有同样的处理速度,且...

  • 直接生成频域滤波

    接上文:傅立叶变换滤波 频域滤波器 理想低通滤波器 巴特沃兹低通滤波器 高斯低通滤波器 dftuv的实现 dftu...

  • 深入理解互补滤波器

    低通滤波器:滤掉高频噪声高通滤波器:滤掉低频噪声互补滤波器:滤掉部分高频噪声和部分低频噪声卡尔曼滤波器:动态版本的...

  • Gabor滤波器

    Gabor滤波器 Gabor 滤波器是一种结合了高斯分布和频率变换的滤波器,用于在图像的特定方向提取边缘。 滤波器...

  • 信号处理(二)

    本篇介绍 本篇继续信号处理的介绍。 卷积滤波器 首先先总结下几种卷积滤波器。 盒子滤波器 盒子滤波器的值要不是常数...

  • 作为电气人应该掌握的基本模拟电路

    一、 桥式整流电路 二、 电源滤波器 三、 信号滤波器 1、信号滤波器的作用:电源滤波器的区别和相同点: 2、LC...

  • 浅尝图像处理——几种滤波器Matlab程序

    同学那里copy来的代码,仅供使用时参考 理想低通滤波器 巴特沃斯低通滤波器 高斯低通滤波器

  • (二十二)去块滤波器简介(H.264 / MPEG-4 Part

    重建滤波器 1.介绍 2.重建滤波器的描述 滤波器是为了对每个解码宏块进行去块效应。在编码器中,去块滤波器在反变换...

网友评论

      本文标题:4、空间滤波器

      本文链接:https://www.haomeiwen.com/subject/jtnkuqtx.html