function output=gaussFilter(I,sigma)
output=I;
ksize=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma
window = fspecial('gaussian', [1,ksize], sigma); %使用1行ksize列的高斯核对图像先进行x方向卷积,再进行y方向卷积
for i = 1:size(I,3)
ret = imfilter(I(:,:,i),window,'replicate');
ret = imfilter(ret,window','replicate');
output(:,:,i) = ret;
end
下面是一般算法
function output=gaussFilter(I,sigma)
output = I.*0;
window=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma
H=fspecial('gaussian', window, sigma);
for c=1:size(I,3)
output(:,:,c)=imfilter(I(:,:,c),H,'replicate');
双边滤波器、高斯滤波
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。普通的高斯滤波会将图像的边缘模糊掉,而双边滤波器具有保边特性。
一般的高斯模糊在进行采样时主要考虑了像素间的空间距离关系,但是却并没有考虑像素值之间的相似程度,因此这样我们得到的模糊结果通常是整张图片一团模糊。Bilateral blur的改进就在于在采样时不仅考虑像素在空间距离上的关系,同时加入了像素间的相似程.
MATLAB(Matrix Laboratory的缩写)是一个以矩阵为基础的科学计算软件环境。软件界面主要由四部分组成:Command Window(命令窗口):进行交互式计算,输入命令得到结果。Current Directory(当前目录):显示当前目录下的文件和文件夹,可进行文件管理操作。Workspace(工作空间):显示当前打开的变量,可以查看和编辑变量的值。Editor/Debugger(编辑器/调试器):用于编写和调试代码。
1、图像滤波
在三维计算机视觉领域,通常对于二维图像的特征抽取是很关键的第一步,这主要包括抽取二维图像上的边缘、角点、纹理等。通常从这些被称为基元图的组成部分中,我们可以提取图像的以下特征:
1)不同物体边缘成像所带来的灰度跃变;
2)物体不同材料或
将一维矩阵进行fft变换,得到其频谱图。然后对其进行带通滤波,只将其中的信号中的部分频率的信号保留下来,于是设计一个带通滤波器进行滤波。最后可以对比信号滤波前后的波形图查看滤波效果。
运行结果如图:............
x=0:2047;
a=load('data.txt'); %运行时data.txt文件要放到当前目录(current directory)中
n=5; % n为模板长度,值可以改变
y = medfilt1(a,n);
figure;
subplot(1,2,1);plot(x,a);
xlabel('中值滤波前的序列');
subplot(1,2,2);pl
也就是对图像的像素点求偏导数,如果某个方向偏导数很大,一般来说就是不连续的,即轮廓线
但是图像里往往会有很讨厌的噪声点
如果不考虑这些点,直接对图像求梯度函数的话,就会收到很大的影响
滤波矩阵就是为了一定程度上消除噪声,其中比较常见的是高斯卷积滤波矩阵
在Matlab中是用fspecial('gaus