所谓径向基函数(简称RBF),就是沿径向方向对称的标量函数。 它通常被定义为空间中任意一点x与某一中心xc的欧式距离的单调函数,可写为k(||x-xc||),其作用往往是局部的,即 当 x 远离 xc 时,函数值很小。 最常用的径向基函数是高斯核函数,形式为k(||x-xc||) = exp{-||x-xc||^2/(2*σ)^2)} 其中xc是核函数的中心,σ是函数的宽度参数,它控制着函数的径向范围。
高斯函数具有五个重要特性,使其在早期图像处理中特别有用。 这些特性表明高斯平滑滤波器在空间域和频域都是一种非常有效的低通滤波器,已经被工程师有效地应用于实际图像处理中。 高斯函数有五个非常重要的性质,它们是:
这里编辑公式比较麻烦,这里省略。 可以参考相关书籍,只给出matlab绘图的代码
alf=3;
n=7; %定义模板尺寸
n1=楼层((n+1)/2); % 确定中心
对于 i=1:n
a(i)= exp(-((i-n1).^2)/(2*alf^2));
对于 j=1:n
b(i,j) =exp(-((i-n1)^2 (j-n1)^2)/(4*alf))/(4*pi*alf);
结尾
结尾
subplot(121),plot(a),title('一维高斯函数')
subplot(122),surf(b),title('二维高斯函数')
3. 图像滤波
3.1 图像滤波的基本概念
图像经常受到强度随机信号(也称为噪声)的污染。 一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等。 椒盐噪声由随机出现的黑白强度值组成。 另一方面,脉冲噪声仅包含随机的白色强度值(正脉冲噪声)或黑色强度值(负脉冲噪声)。 与前两者不同,高斯噪声包含强度服从高斯或正态分布的噪声。 滤波的研究是为了消除噪声干扰。
图像滤波一般包括空间滤波和频域滤波。 频率滤波需要先经过傅里叶变换到频域处理,然后再逆变换回空间域来恢复图像。 空间域滤波是直接对图像数据进行空间变换,以达到滤波的目的。 它是一种邻域运算,即根据输入图像中对应像素点周围一定邻域内的像素值,采用一定的算法得到输出图像中任意像素点的值。 如果输出像素是输入像素邻域像素的线性组合,则称为线性滤波(如最常见的均值滤波、高斯滤波等),否则为非线性滤波(中值滤波、保边滤波等)。
线性平滑滤波器适用于高斯噪声,在大多数情况下,也适用于其他类型的噪声。 线性过滤器使用连续窗函数内的像素加权和来实现过滤。 通常,可以在每个窗口中应用相同模式的权重因子,这意味着线性滤波器是空间不变的,因此可以使用卷积模板来实现滤波。 如果图像的不同部分使用不同的滤波器加权因子并且仍然可以使用滤波器进行加权,则线性滤波器在空间上是可变的。 任何不是像素加权操作的滤波器都是非线性滤波器。 非线性滤波器也可以是空间不变的,即可以在图像中的任何位置执行相同的操作,而不管图像位置或空间的变化。
滤波通常用卷积或相关来描述,而线性滤波一般用卷积来描述。 它们非常相似,但仍然存在差异。 下面我们根据相关性和卷积计算过程来看一下它们的具体区别:
卷积计算步骤:
- 卷积核绕组旋转自己的核 元素顺时针旋转180度
- 移动卷积核的中心元素,使其位于输入图像中待处理像素的正上方
- 在旋转后的卷积核中,将像素相乘 输入图像的值作为权重
- 第三步的结果和输入像素对应的输出像素
相关计算步骤:
- 移动相关核的中心元素,使其位于输入图像中待处理像素的正上方
- 将输入图像的像素值作为 weight,乘以相关的kernel
- 将以上步骤得到的结果作为输出添加
可以看出,它们之间的主要区别在于,当ca lculating卷积,卷积核需要先做旋转。 然而,在计算相关性期间不需要旋转相关核。
例如:
magic(3)=[8 1 6;3 5 7;4 9 2],旋转180度后变为[2 9 4;7 5 3 ;6 1 8]
4. 高斯平滑滤波器的设计
高斯函数的最佳逼近是由二项式展开的系数决定的,换句话说,使用杨辉三角(也称为帕斯卡三角),第n行使用 作为具有 n 个点的高斯滤波器的一维近似。 例如,五点近似为:
1 4 6 4 1
它们对应于帕斯卡三角形的第5行。 此模板用于水平平滑图像。 在高斯函数的可分离性中,指出二维高斯滤波器可以通过两个一维高斯滤波器的逐次卷积实现,一个沿水平方向,一个沿垂直方向。 实际上,可以通过使用单个一维高斯模板转置两个卷积之间的图像和最终卷积的结果图像来完成此操作。
该技术在模板大小 N 为 10 左右时具有出色的过滤效果。对于较大的过滤器,二项式展开系数对于大多数计算机来说太多了。 然而,可以通过重复使用小的高斯滤波器来实现任意大的高斯滤波器。 高斯滤波器的二项式近似σ可以通过将高斯函数拟合到二项式系数的最小方差来计算。
另一种设计高斯滤波器的方法是直接从离散高斯分布计算模板权重。 为了计算方便,一般希望滤波器权重为整数。 在模板的一个角处取一个值,然后选择一个 K 使该角处的值为 1。 滤波器可以通过该系数进行整数化。 由于整数化后的模板权重之和不等于1,为了保证图像均匀的灰度区域不受影响,必须对滤波器模板的权重进行归一化处理。
高斯滤波器的采样值或高斯滤波器的二项展开系数可以构成离散的高斯滤波器。 当使用离散高斯滤波器执行卷积时,结果是更大的离散高斯滤波器。 如果一张图像先经过N*N个离散高斯滤波器平滑,然后再用M*M个离散高斯滤波器平滑,那么平滑结果与(N M-1)*(N M-1) 离散高斯滤波器的平滑结果是一样的。 也就是说,第N M-1行是由杨辉三角形中的第N行和第M行卷积而成。
5. 使用高斯滤波器平滑图像
如果适配卷积运算来对图像进行滤波,可以使用两个不同的函数在matlab中实现conv2和imfliter。 它们的调用方式如下:
Img_n = conv2(Img,g,’same’);
和
Img_n = imfilter(Img,g,’ conv’);
这两个函数的结果是完全一样的。
imfiler函数默认使用相关性进行图像过滤计算
Img_n = imfilter(Img,g); % 使用相关计算滤波
下面是一个简单的例子,展示了使用相同的高斯滤波核函数,相关运算和卷积运算对图像平滑的效果可以直接在附件程序中查看。
从结果可以看出,相关运算和卷积运算用于图像平滑和滤波时效果差别不大。 当模板大小 N>50 时。 边界的系数已经很小了,对运算影响不大,所以平滑结果的差异非常细微,肉眼几乎察觉不到。
example.m
全部清除
我 = imread('lena.bmp');
Img = 双(一);
阿尔夫=3;
n=10; %定义模板尺寸
n1=楼层((n+1)/2); %计算中心
对于 i=1:n
对于 j=1:n
b(i,j) =exp(-((i-n1)^2 (j-n1)^2)/(4*alf))/(4*pi*alf);
结尾
结尾
Img_n = uint8(conv2(Img,b,'相同'));
K=uint8(imfilter(Img,b));
Img_n2=uint8(imfilter(Img,b,'conv'));
J=(Img_n2)-Img_n;
标志=平均值(J(:))
subplot(131),imshow(I);title('原图')
subplot(132),imshow(Img_n);title('卷积运算图')
subplot(133),imshow(K);title('相关操作图')
图(2),冲浪(b);