matlab图像处理,matlab 图像处理
MATLAB--数字图像处理 频域图像分析
频域图像分析
1.熟悉MATLAB软件的使用。
2.掌握频域图像分析的原理及数学运算。
1.自选一幅图像,并对其分别添加一定强度的周期噪声和高斯噪声,然后分别采用高斯模板、中值滤波的时域方法以及傅里叶变换和小波变换的频率滤波方法对该含噪图像进行去噪处理,并基于PSNR值和视觉效果这两个指标来比较这四种滤波方法对两种不同噪声的去噪能力。
2.编写一个程序,要求实现下列算法:首先将阁像分割为8x8的子图像,对每个予图像进行FFT.对每个了图像中的64个系数。按照每个系数的方差来排序后,舍去小的变换系数,只保留16个系数,实现4: I的图像压缩。
3.给定一幅行和列都为2的整数次幕图像,用Haar小波基函数对其进行二维小波变换,试着将最低尺度近似分量置零再反变换,结果是什么?如果把垂直方向的细节分量置零,反变换后结果又是什么呢?试解释一下原因。
4.基于小波变换对图像进行不同压缩比的压缩。在同压缩比情况下,对于基于小波变换和基于傅里叶变换的压缩结果,比较=二者保留原图像能里百分比情况。
Win10 64位电脑
MATLAB R2017a
1.傅里叶变换
从纯粹的数学意义上看,傅里叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。
傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数傅里叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,通常用一个二维矩阵表示空间上各点,记为z=f(x,y)。又因空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就必须由梯度来表示,这样我们才能通过观察图像得知物体在三维空间中的对应关系。
2.小波变换
小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节带噪声信号经过预处理,然后利用小波变换把信号分解到各尺度中,在每一尺度下把属于噪声的小波系数去掉,保留并增强属于信号的小波系数,最后再经过小波逆变换回复检测信号。
小波变换在去除噪声时可提取并保存对视觉起主要作用的边缘信息,而传统的基于傅里叶变换去除噪声的方法在去除噪声和边沿保持上存在着矛盾,因为傅里叶变换方法在时域不能局部化,难以检测到局域突变信号,在去除噪声的同时,也损失了图像边沿信息。由此可知,与傅里叶变换去除噪声的方法相比较,小波变换法去除噪声具有明显的性能优势。
3.PSNR算法
peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来衡量某个处理程序能否令人满意。它是原图像与被处理图像之间的均方误差相对于(2 n-1) 2的对数值(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。
SNRP算法
haar基函数进行小波变换
七、实验结果与分析
图 1原图
1.加入周期噪声、高斯噪声
2.对添加了高斯噪声和周期噪声的图像进行高斯滤波
PSNR值
1.对高斯噪声进行高斯滤波后 23.0287
2.对周期噪声进行高斯滤波后 23.4837
2.中值滤波
PSNR值:
1.对高斯噪声进行中值滤波 23.9931
2.对周期噪声进行中值滤波 24.3134
3.傅里叶变换滤波
PSNR值:
1.对添加了高斯噪声的图像进行傅里叶变换滤波 20.4922
2.对添加了周期噪声的图像进行傅里叶变换滤波 18.9736
4.小波变换滤波
PSNR值:
1.对添加了高斯噪声的图像进行小波变换滤波 23.4712
2.对添加了周期噪声的图像进行小波变换滤波 24.4525
分析:
对于高斯噪声,高斯滤波和傅里叶变换滤波声的除噪效果较好,中值滤波效果较差,小波变换滤波的处理效果也比较好
对于周期噪声,中值滤波和高斯滤波效果不是很好,傅里叶变换变换滤波对噪声的去处效果比较好,对于原图像损坏不大,小波变换对原图的损坏较大,但是图片可以看出噪声也去除的比较好。
5.图像压缩(4:1压缩) 原图-左 压缩后-右
分析:
图像压缩算法就是先将一副图像分成很多小块,然后分别对这些小块进行变换,这里采用的是傅里叶变换,然后过滤掉冗余的像素点,然后再利用反变换得到压缩后的图像即可。
小波变换
1.定义
小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节带噪声信号经过预处理,然后利用小波变换把信号分解到各尺度中,在每一尺度下把属于噪声的小波系数去掉,保留并增强属于信号的小波系数,最后再经过小波逆变换回复检测信号。
2.优点
小波变换在去除噪声时可提取并保存对视觉起主要作用的边缘信息,而传统的基于傅里叶变换去除噪声的方法在去除噪声和边沿保持上存在着矛盾,因为傅里叶变换方法在时域不能局部化,难以检测到局域突变信号,在去除噪声的同时,也损失了图像边沿信息。由此可知,与傅里叶变换去除噪声的方法相比较,小波变换法去除噪声具有明显的性能优势。
Haar基函数进行小波变换
图 2原图
图 3 haar变换
图 4 haar反变换后
图 5 最低分量近似置零
图 6 垂直分量置零
小波变换进行图像压缩与傅里叶变换压缩对比
1.压缩比 1:2(左-小波压缩 右-傅里叶压缩)
2.压缩比 1:4(左-小波压缩 右-傅里叶压缩)
通过这次实验,学到了很多。特别是在傅里叶变换和小波变换等方面,开始的时候连傅里叶变换的基础基础也不懂,后来在csdn上看了一篇讲解傅里叶变换的文章,豁然开朗,傅里叶变换居然可以将一个时域信号转化到频域,而且自己还对与i有了更加深刻的理解。虽然傅里叶变换可以把信号从时域转换到频域,但是频域与时域的对应关系却无法一一对应,所以诞生了小波变换。小波变换的特别之处就是可以把一个时域上的信息转换为时域-频域一一对应,这对应特殊信号的提取是有很好的效果,在一定程度上比傅里叶变换更厉害。但是在傅里叶、小波等基础概念知识方面,自己还是涉猎的比较少,原理的论证公式太复杂了。
MATLAB的图像处理
视频采集的图像一般是大批量的 所以需要用批量读取数据的方法 比如你视频采集的数据放在E\:shipin里
p1=dir('E\:shipin\*.p*');%读取文件夹里的 所有.png ppm格式的图片%你的图片格式如果是jpg的那你就改为p1=dir('E\:shipin\*.j*');
[r1 c1]=size(p1);%r1是文件夹里图像的个数
for i=1:r1
ImgN=p1(i).name;%图片的名称
ImgN=strcat('E\:shipin\',ImgN);%图片的路径
Img=(imread(ImgN));%读取图片
if size(Img,3) == 3 %如果维数为三 则RGB图像转化为灰度图像
Img = rgb2gray(Img);
else
Img = Img;
end
figure,imshow(Img) ;
%还可以加入相关的处理函数
end
这样就可以自动读取视频采集的所有图像进行处理了
怎样用matlab进行图像滤波处理
1、打开软件,读入图片。
2、分别建立3*3高斯滤波模板和平均滤波模板,并对加噪的图片进行滤波处理。显示原图、加噪后的图片和分别用高斯、平均模板滤波后的图片。
3、图片结果如图,可以看出平均模板滤波后噪声十分明显,高斯模板滤波后噪声影响相对较小,但也很容易看出。
4、使用中值滤波对图片进行处理,并显示处理后的图像。
5、从图片可以看出,中值滤波后的图像基本上看不出来噪声的影响。完成保存就可以了。
matlab图像处理教程
楼主你太狠了,5分要别人做这么多!
1.图像的读入、显示及信息查询:
(1)I=imread ('lena.jpg') %图像读入
imshow(I) %图像显示
(2)inf=imfinfo('lena.jpg') % 图像信息查询
2.图像的常用处理语句:
(1) X=rgb2gray(I) ; imshow(X) %彩色图像转灰度图像
(2)X2=grayslice(I,64) ; imshow(X2,hot(64)) %将灰度图像转为索引色图像
(3) X3=im2bw(X1) ; imshow(X3) %将图像转二值图像
3.图像滤波:
clear all
g0=imread('lena.tif')
g0 = g0(:,:,2); %三维转二维
figure(1);imshow(g0) ;title('原图') %如图 5
g1=imnoise(g0,'salt pepper',0.2)
g1=im2double(g1);
figure(2);imshow(g1);title('加入椒盐噪声') %如图 6
h1=fspecial('gaussian',4,0.3)
g2=filter2(h1,g1,'same')
figure(3);imshow(g2);title('进行高斯滤波') %如图 7
h2=fspecial('sobel')
g3=filter2(h2,g1,'same')
figure(4);imshow(g3);title('进行sobel滤波') %如图 8
h3=fspecial('prewitt')
g4=filter2(h3,g1,'same')
figure(5);imshow(g4);title('进行prewitt滤波') %如图 9
h4=fspecial('laplacian',0.5);
g5=filter2(h4,g1,'same');
figure(6);imshow(g5);title('进行拉普拉斯滤波'); %如图 10
h5=fspecial('log',4,0.3);
g6=filter2(h5,g1,'same');figure(7);
imshow(g6);title('进行高斯拉普拉斯滤波'); %如图 11
h6=fspecial('average');
g7=filter2(h6,g1,'same');figure(8);
imshow(g7);title('进行均值滤波'); %如图 12
h7=fspecial('unsharp',0.3);
g8=filter2(h7,g1,'same');
figure(9);imshow(g8);title('进行模糊滤波'); %如图 13
h8=[0 -1 0;-1 5 -1;0 -1 0];
g9=filter2(h8,g1,'same');
figure(10);imshow(g9);title('进行高通高斯滤波'); %如图 14
h9=g1;g10=medfilt2(h9);
figure(11);imshow(g10);title('进行中值滤波'); %如图 15
matlab图像处理
I=imread('D:\我的文档\MATLAB\cameraman.bmp');
J0=imnoise(I,'gaussian');
J1=imnoise(I,'salt pepper');
J0J3=imfilter(J0,fspecial('average'));
J0J5=imfilter(J0,fspecial('average',[5 5]));
J0Z3=medfilt2(J0);
J0Z5=medfilt2(J0,[5 5]);
J1J3=imfilter(J1,fspecial('average'));
J1J5=imfilter(J1,fspecial('average',[5 5]));
J1Z3=medfilt2(J1);
J1Z5=medfilt2(J1,[5 5]);
subplot(2,2,1),imshow(I);
title('原始图像');
subplot(2,2,2),imshow(J0);
title('加入零均值高斯噪声');
subplot(2,2,3),imshow(J1);
title('加入椒盐噪声');
figure,
subplot(2,2,1),imshow(J0J3);
title('对高斯噪声,采用3x3均值滤波');
subplot(2,2,2),imshow(J0J5);
title('对高斯噪声,采用5x5均值滤波');
subplot(2,2,3),imshow(J0Z3);
title('对高斯噪声,采用3x3中值滤波');
subplot(2,2,4),imshow(J0Z5);
title('对高斯噪声,采用5x5中值滤波');
figure,
subplot(2,2,1),imshow(J1J3);
title('对椒盐噪声,采用3x3均值滤波');
subplot(2,2,2),imshow(J1J5);
title('对椒盐噪声,采用5x5均值滤波');
subplot(2,2,3),imshow(J1Z3);
title('对椒盐噪声,采用3x3中值滤波');
subplot(2,2,4),imshow(J1Z5);
title('对椒盐噪声,采用5x5中值滤波');