MATLAB自编均值和中值滤波实验报告
matlab图象处理实验报告
![matlab图象处理实验报告](https://img.taocdn.com/s3/m/9cfd5dcf050876323112124e.png)
对图像lena.bmp 添加高斯噪声,并分别进行均值滤波和中值滤波。
程序:I=imread('d:\lena.bmp');subplot(2,2,1),imshow(I)title('原始图像')I=imnoise(I,'gaussian',0,0.02); % 添加均值为0,方差为0.02的高斯噪声 subplot(2,2,2),imshow(I)title('加噪图像')h=[1 1 1;1 1 1;1 1 1];h=h/9; % 产生3×3的均值滤波模板 J1=filter2(h,I,'same'); % 用均值模板对图像I 滤波 subplot(2,2,3),imshow(J1,[])%subplot(2,2,3),imshow(J1/255)%J1=uint8(J1);subplot(2,2,3),imshow(J1)title('均值滤波结果')J2=medfilt2(I); % 用3×3的滤波窗口对图像I 进行中值滤波 subplot(2,2,4),imshow(J2)title('中值滤波结果')结果:加噪图像中值滤波结果原始图像均值滤波结果I=imread('d:\lena.bmp');subplot(2,2,1),imshow(I)title('原始图像')hx=[-1 -2 -1;0 0 0;1 2 1]; % 生成Sobel 垂直梯度模板 hy=hx'; % 生成Sobel 水平梯度模板 gradx=filter2(hx,I,'same');gradx=abs(gradx); % 计算图像的Sobel 垂直梯度 subplot(2,2,2),imshow(gradx,[])title('图像的Sobel 垂直梯度')grady=filter2(hy,I,'same');grady=abs(grady);% 计算图像的Sobel 水平梯度 subplot(2,2,3),imshow(grady,[])title('图像的Sobel 水平梯度')grad=gradx+grady;% 得到图像的Sobel 梯度subplot(2,2,4),imshow(grad,[])title('图像的Sobel 梯度')结果:图像的Sobel 垂直梯度图像的Sobel 梯度原始图像图像的Sobel 水平梯度。
实验三 均值滤波和中值滤波
![实验三 均值滤波和中值滤波](https://img.taocdn.com/s3/m/c59b2916bd64783e09122b7d.png)
实验三图像滤波实验3.13*3均值滤波一.实验目的1.熟悉MATLAB图像处理工具箱及均值滤波函数的使用;2.理解和掌握3*3均值滤波的方法和应用;二.实验设备1.PC机一台;2.软件MATLAB;三.程序设计在MATLAB环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。
closeall;I=imread('cameraman.tif');figure;subplot(2,3,1);imshow(I);%加入Gaussian噪声J1=imnoise(I,'gaussian',0,0.005);subplot(2,3,2);imshow(J1);%加入椒盐噪声J2=imnoise(I,'salt&pepper',0.02);subplot(2,3,3);imshow(J2);h=fspecial('average',[33]);G1=imfilter(J1,h);subplot(2,3,5);imshow(G1);G2=imfilter(J2,h);subplot(2,3,6);imshow(G2);四.实验步骤1.启动MATLAB双击桌面MATLAB图标启动MATLAB环境;2.在MATLAB命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用MATLAB自带的图像,如:cameraman图像;再调用相应的图像增强(均值滤波)函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察MATLAB环境下原始图像经3*3均值滤波处理后的结果。
(a)原始图像(b)3*3均值滤波处理后的图像图(3)六.实验报告要求输入一幅灰度图像,给出其图像经3*3均值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行均值滤波,看看对25个点取均值与对9个点进行均值滤波有什么区别?有没有其他的算法可以改进滤波效果。
数字图像处理实验报告-基于Matlab
![数字图像处理实验报告-基于Matlab](https://img.taocdn.com/s3/m/ce91655fb52acfc789ebc9b3.png)
华东师范大学电子工程系2017.6实验1:图像灰度级修正【实验目的】掌握常用的图像灰度级修正方法(灰度变换法和直方图均衡化),加深对直方图的理解。
观察图像的增强效果,对灰度级修正前后的图像加以比较。
【实验内容】1)编程实现图像的灰度变换,改变图像的输入、输出映射参数范围(线性拉伸和反比);2)修改参数gamma值(大于、小于、等于1),观察处理结果;3)对图像直方图作均衡化处理,显示均衡前后的图像及其直方图。
【实验代码】original=imread('lena.bmp');linstr=imadjust(original,[0.3 0.7],[0 1]); %线性拉伸opposite=imadjust(original,[0 1],[1 0]); %反比above=imadjust(original,[0 1],[0 1],2); %gamma>1equal=imadjust(original,[0 1],[0 1],1); %gamma=1below=imadjust(original,[0 1],[0 1],0.5); %gamma<1subplot(3,3,1);imshow(original);title('原图像');subplot(3,3,2);imshow(linstr);title('线性拉伸');subplot(3,3,3);imshow(opposite);title('反比');subplot(3,3,4);imshow(above);title('gamma>1');subplot(3,3,5);imshow(equal);title('gamma=1');subplot(3,3,6);imshow(below);title('gamma<1');subplot(3,3,7);imhist(original);title('原图像直方图'); histequal=histeq(original);%对图像均衡化subplot(3,3,8);imshow(histequal);title('均衡后的图像'); subplot(3,3,9);imhist(histequal);title('均衡图像的直方图'); axis([0 256 0 2000]);【输出图像】【实验思考】根据以下图片以及实验结果可知gamma>1时图像整体变暗,灰度级整体变小;gamma<1时图像整体变亮,灰度级整体变小;而gamma=1时,图像维持不变。
MATLAB课程设计自适应中值滤波
![MATLAB课程设计自适应中值滤波](https://img.taocdn.com/s3/m/ad302ab0760bf78a6529647d27284b73f242360e.png)
采用快速排序算法,提高滤波速度 引入自适应阈值,提高滤波效果 采用并行计算,提高滤波效率 引入图像分割技术,提高滤波精度
课程设计任务和要 求
提 高 M AT L A B 编 程 能 力 掌握自适应中值滤波算法 提高问题解决能力 培养团队合作精神
掌握MATLAB的基 本语法和编程技巧
理解自适应中值滤 波的原理和实现方 法
添加标题
M AT L A B 实 现 自 适 应 中 值 滤 波 : 可 以 使 用 M AT L A B 中 的 i m f i l t e r 函 数 来 实 现 自 适 应 中 值 滤 波 , 该 函数可以方便地实现各种类型的滤波操作。 A B 图 像 处 理 工 具 箱 广 泛 应 用 于 图 像 处 理 、 计 算 机 视 觉 、 模 式 识 别 等 领 域 。
自适应中值滤波算 法介绍
中值滤波是一种非线性滤波技术,通过计算像素邻域的中值来代替像素值,以消除噪 声和模糊图像。
中值滤波可以有效地消除椒盐噪声和随机噪声,但对高斯噪声和脉冲噪声的抑制效果 较差。
中值滤波的缺点是会导致图像细节的丢失,特别是在处理边缘和纹理区域时。
自适应中值滤波是一种改进的中值滤波算法,可以根据图像的局部特性自适应地调整 滤波器的参数,以更好地保留图像的细节和边缘。
添加项标题
函数定义:使用符号"function"进行函数定义,如 "function y = f(x)"
添加项标题
赋值语句:使用符号"="进行赋值,如"x = 1"
添加项标题
条件语句:使用符号"if"、"elseif"、"else"进行条件判断, 如"if x > 0"
均值滤波与中值滤波的应用)
![均值滤波与中值滤波的应用)](https://img.taocdn.com/s3/m/6eb1f6a8dd3383c4bb4cd2df.png)
摘要通常,在自然界中大部分信号都存在噪声。
而在如今的数字信号处理中,有各种各样的数字信号滤波器,可以实现对噪声信号的滤波,恢复出原始信号的波形。
本课程设计是基于一维信号被噪声信号污染后,分别经过均值滤波和中值滤波处理后,提取出原始信号,并且观看不同M值时滤波后波形的比较。
均值滤波和中值滤波在数字信号处理中都是非常重要的滤波器,具有广泛的应用。
关键词均值滤波中值滤波数字信号处理目录摘要 (1)第1章均值滤波 (3)1.1 均值滤波的原理 (3)1.2 均值滤波的实现算法 (3)1.3 均值滤波的应用 (3)1.4 均值滤波器 (3)第2章中值滤波 (4)1.1 中值滤波的原理 (4)1.2 中值滤波的实现算法 (4)1.3 中值滤波的应用 (4)1.4 中值滤波器 (4)第3章均值滤波和中值滤波滤除噪声方法 (5)3.1 均值滤波和中值滤波对噪声信号滤波 (5)3.2 程序设计 (7)3.3 结果分析 (8)3.4 心得体会 (11)参考文献 (12)1.1均值滤波的原理均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。
再用模板中的全体像素的平均值来代替原来像素值。
均值滤波也称为线性滤波,其采用的主要方法为领域平均法。
线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度值u(x,y),即u(x,y)=1/m ∑f(x,y)①m为该模板中包含当前像素在内的像素总个数。
1.2均值滤波的实现算法均值滤波将每个像素点的灰度值设置为以该点为中心的邻域窗口内的所有像素灰度值的平均值,以实现像素的平滑,达到图像去噪的目的。
设输入图像信号为f(x,y),去噪处理后的输出图像为g(x,y),则有g(x,y)=| f(x,y)- u (x,y)| ②通过上式可以达到消除信号噪声的目的,但对于其中的每一个灰度值来说,都需要按照式①求取以该点中心的邻域窗口内所有像素的平均值,对长度为(2n+1)的信号来说,需要进行(2n+1)次加法、一次乘法、一次除法。
MATLAB图像滤波实验报告
![MATLAB图像滤波实验报告](https://img.taocdn.com/s3/m/95eafb55a216147916112819.png)
1图像处理实验实验报告院(系)名称专业名称学生姓名学号任课老师年月日1 实验目的利用MATLAB实现图像滤波,边界检测,从空间域与频域上加深对图像滤波的理解。
2 实验内容1. 对lena.bmp分别添加高斯、椒盐、泊松噪声,并比较高斯滤波与中值滤波的效果。
(使用matlab自带函数即可)2. 对lena.bmp实现laplace算子、Sobel算子、Kirch算子、Canny算子等边界检测算子中的任何两个;(不使用matlab自带函数)3. 通过观察rect.bmp和rect-45度.bmp的傅立叶频谱,了解图像傅立叶变换的旋转、平移等特性;4. 对grid.bmp实现理想低通;5. 对cave.jpg实现同态滤波算法,观察光照校正的效果(使用高斯型高通滤波器的离散化结果作为模板)。
3 实验步骤及算法流程4 实验结果分析4.1 空间域滤波图1 加高斯噪声与滤波图2 密度为0.1的椒盐噪声与滤波图3 密度为0.5的椒盐噪声与滤波图4 加泊松噪声与滤波高斯滤波是构造一个高斯卷积掩膜,对每一个点的邻域进行卷积达到滤波的效果,中值滤波是用邻域中像素的中值代替当前像素,是非线性的。
分析以上三幅图,知高斯滤波的效果对每种噪声差不多;中值滤波对椒盐噪声来说效果非常好,在椒盐密度不大的情况下几乎可以完全去除噪声。
以以上四幅图来说,中值滤波的效果要比高斯滤波的效果好。
4.2 边界检测图5 Laplace算子检测边界图6 Sobel算子检测边界4.3 频域转换图7 旋转前的频域(经fftshift处理)图8 旋转45°后的频域(经fftshift处理) 经上图可知,当图像旋转45°后,相应的频域也旋转45°。
4.4 频域低通滤波图9 原始图像grid.bmp的频域(经fftshift处理)中心尖峰的两侧出现两个次尖峰,对应正弦噪声的频率,需将其滤掉。
图10 处理后的频域进行频域的处理后,空间域上的图像如下所示:图11 对grid.bmp低通滤波4.5 同态滤波图12 原始图像cave.jpg 选择合适的高通滤波器进行同态滤波的效果如下:图13 同态滤波后的图像5 思考题1. 依次给出“高斯平滑滤波器、中值滤波器、laplace滤波器”是线性还是非线性的。
吉林农业大学实验报告纸.doc
![吉林农业大学实验报告纸.doc](https://img.taocdn.com/s3/m/b0e35d10b7360b4c2e3f6423.png)
(1)、均值滤波:
f=imread('lena.bmp');
subplot(121),imshow(f),title('原图');
f1=imnoise(f,'gaussian',0.002,0.0008);
%subplot(222),imshow(f1),title('添加高斯噪声图');
imageWidth = imageSize(2);
Result = imageData;
for y = 1:imageHeight
for x = 1:imageWidth
if (y>1 && y <imageHeight && x>1 && x < imageWidth)
Result(y,x,1) = sum(sum(image#43;1,1)))/9;
Result(y,x,2) = sum(sum(imageData(y-1:y+1,x-1:x+1,2)))/9;
Result(y,x,3) = sum(sum(imageData(y-1:y+1,x-1:x+1,3)))/9;
end
end
end
imwrite (Result,'final.jpg');
Y(i+k1,j+k2)=h;
end;
end;
Y=Y/255;
subplot(122),imshow(Y),title('均值滤波');
(2)、中值滤波:
imageData = imread ('Image.jpg');
matlab数值滤波
![matlab数值滤波](https://img.taocdn.com/s3/m/b62f55854128915f804d2b160b4e767f5acf800c.png)
matlab数值滤波摘要:一、MATLAB数值滤波概述二、MATLAB中的滤波函数与方法1.均值滤波2.中值滤波3.其他滤波方法三、MATLAB滤波实例与应用四、总结与展望正文:【提纲】一、MATLAB数值滤波概述MATLAB作为一种强大的科学计算软件,提供了丰富的数值滤波功能,可以帮助用户对图像、信号等数据进行平滑、降噪等处理。
数值滤波是一种基于数学算法的处理方法,通过设计特定的滤波器对数据进行卷积运算,达到去除噪声、保留主要特征的目的。
二、MATLAB中的滤波函数与方法1.均值滤波:均值滤波是一种简单有效的平滑方法,通过计算邻域内像素的平均值来减小噪声。
在MATLAB中,可以使用`fspecial`函数创建均值滤波器,并设置滤波器模板尺寸。
2.中值滤波:中值滤波适用于去除图像中的椒盐噪声,它通过选取邻域内像素的中值来达到去噪目的。
在MATLAB中,可以使用`medfilt2`函数实现中值滤波,并设置滤波器大小。
3.其他滤波方法:MATLAB还提供了许多其他滤波方法,如高斯滤波、双边滤波、巴特沃兹滤波等,均可通过`fspecial`函数创建相应的滤波器。
三、MATLAB滤波实例与应用以下以均值滤波和中值滤波为例,展示MATLAB滤波的应用:1.均值滤波:读取一张图像,如"c:imagelena2.jpg",将其转换为RGB灰度图像,然后进行均值滤波处理。
```matlabimg = imread("c:imagelena2.jpg");gray_img = rgb2gray(img);filtered_img = imfilter(gray_img, "average", [3, 3]);imshow(filtered_img);```2.中值滤波:同样读取一张图像,如"c:imagelena2.jpg",将其转换为RGB灰度图像,然后进行中值滤波处理。
用MATLAB实现直方图均衡化和中值滤波
![用MATLAB实现直方图均衡化和中值滤波](https://img.taocdn.com/s3/m/3dbdb922647d27284b735146.png)
一、直方图均衡化1.直方图均衡化直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
2.Matlab中直方图均衡化程序clear all ;close all ;tuu=imread('picture1.JPG');tu=rgb2gray(tuu); %将彩色图片转换为灰度图graydis=zeros(1,256);%设置矩阵大小graydispro=zeros(1,256);new_graydis=zeros(1,256);new_graydispro=zeros(1,256);[h, w]=size(tu);new_tu=zeros(h,w);% 计算原始直方图各灰度级像素个数graydisfor x=1:hfor y=1:wgraydis(1,(tu(x,y)+1))=graydis(1,(tu(x,y)+1))+1;endend%计算原始直方图graydisprograydispro=graydis./sum(graydis);subplot(1,2,1);plot(graydispro);title('灰度直方图');xlabel('灰度值');ylabel('像素的概率密度');%计算原始累计直方图for i=2:256graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);end%计算和原始灰度对应的新的灰度t[],建立映射关系for i=1:256t(1,i)=floor(255*graydispro(1,i)+0.5);end%统计新直方图各灰度级像素个数new_graydisfor i=1:256new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i); end%计算新的灰度直方图new_graydispronew_graydispro=new_graydis./sum(new_graydis);subplot(1,2,2);plot(new_graydispro);title('均衡化后的灰度直方图');xlabel('灰度值');ylabel('像素的概率密度');%计算直方图均衡后的新图new_tufor x=1:hfor y=1:wnew_tu(x,y)=t(1,tu(x,y)+1);endendfigure,imshow(tu,[]);title('原图');figure,imshow(new_tu,[]);title('直方图均衡化后的图');3.程序运行结果图1 原始图像图2 直方图均衡化后的图从图1和图2中明显可以看出,原始图像中树下的暗区几乎看不清有什么,而经过直方图均衡化以后可以看到有两只猴子,不但如此,均衡化后的途中树枝和树干也变得更加清晰。
数字图像处理实验三中值滤波和均值滤波实验报告
![数字图像处理实验三中值滤波和均值滤波实验报告](https://img.taocdn.com/s3/m/99f80a25bceb19e8b8f6bad4.png)
数字图像处理实验三均值滤波、中值滤波的计算机实现12281166 崔雪莹计科1202 班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC++ 6。
0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。
二、实验的软、硬件平台:硬件:微型图像处理系统,包括:主机,PC机;摄像机;软件:操作系统:WINDOWS2000或WINDOWSXP应用软件:VC++6.0三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察处理结果。
四、实验要求:1)学习VC+确6。
0编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。
五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。
边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。
均值氓浜1W赵六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。
本次实验更加增加了对数字图像处理的了解与学习。
七、实验程序代码注释及分析// HistDemoADIg.h :头文件//#in elude "ImageWnd.h"#pragma once// CHistDemoADIg 对话框classCHistDemoADIg : public CDialogEx{//构造public:CHistDemoADlg(CWnd* pParent = NULL); // 标准构造函数intnWidth;intnHeight;intnLen;intnByteWidth;BYTE *lpBackup;BYTE *lpBitmap;BYTE *lpBits;CStringFileName;CImageWndsource,dest;// 对话框数据enum { IDD = IDD_HISTDEMOA_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:voidLoadBitmap(void);afx_msg void OnOpen();afx_msg void OnHist();voidHistogramEq(void);voidNoColor(void);void HistogramEq1(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMeanFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMedianFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput); afx_msgvoid OnBnClickedClose();afx_msg void OnBnClickedMeanfilter();afx_msg void OnBnClickedMedianfilter();};HistDemoADlg.cpp 对HistDemoADlg.h 进行具体的实现,OnOpen() 函数响应ID 为IDC_OPEN的按钮事件,而且会调取文件选择对话框,选取文件之后,会显示在原始图像区域显示对应的位图图像,OnHist()函数会响应ID为IDC_HIST的按钮事件,调用HistogramEq()进行直方图均衡化的处理,HistogramEq()会调用HistogramEq1()进行直方图均衡化的处理,并用dst.setlmage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。
数字图像处理-平均滤波与中值滤波(含MATLAB代码)
![数字图像处理-平均滤波与中值滤波(含MATLAB代码)](https://img.taocdn.com/s3/m/27c7a27f6529647d262852c4.png)
数字图像处理实验二15生医一、实验内容产生教材104页题图4.18〔右图〕所示的二值图像〔白为1,黑为0〕,编程实现习题4.18所要求的处理〔3x3的平均滤波和中值滤波〕功能〔图像四周边界不考虑,处理结果按四舍五入仍取0或1〕,显示处理前后的图像,比较其异同。
二、运行环境MATLAB R2014a三、运行结果及分析1. 四种不同的窗的3x3平均滤波 ①在MATLAB 图形窗界面进行放大可以看出四者之间的差异:4领域与8邻域之间没有明显差异,但是加权与未加权之间的差异较为明显,表达在:加权后每个矩形块的四个尖角部分都被保留了下来4邻域平均滤波后图像8邻域平均滤波后图像4邻域加权平均滤波后图像8邻域加权平均滤波后图像〔图像四周边界不考虑〕,而未加权的尖角处黑色变为白色。
②原因分析:加权后尖角处原来白色的点〔1〕进行计算3/5=0.6四舍五入后值为1,保持白色,原来黑色的点〔0〕进行计算2/5=0.4四舍五入后值为0,保持黑色;而未加权尖角处无论原来是黑色还是白色,进行计算2/4=0.5四舍五入后值为1,所以原先的黑色〔0〕也变成了白色〔1〕。
③下列图为放大后的截图:2.中值滤波与原图像的比照①在MATLAB图形窗界面进行放大后可观察出:使用3x3方形中值滤波模板的效果与4领域、8领域加权平均滤波的效果相同,每个矩形块的四个尖角部分都被保留了下来〔图像四周边界不考虑〕。
②原因分析:套用3x3方形中值滤波模板后,尖角处原来白色的点〔1〕在窗内1多于0,取中值后仍保持白色,原来黑色的点〔0〕在窗内0多于1,取中值后仍保持白色。
③下列图为放大后的截图:原图像中值滤波后图像四、心得体会通过MATLAB编程更加理解了课后题的计算结果,直观地看出了黑白像素点灰度值变化前后的取值异同。
同时,对MATLAB实现像素点灰度值的替换机理也有所掌握,比方后边附的程序中会提到的“%”标注的思考。
五、具体程序% 生成黑白块图像unit=zeros(64,64);f=zeros(256,256);for i=1:1:32for j=1:1:32unit(i,j)=1; % 1/4白块endendfor i=33:1:64for j=33:1:64unit(i,j)=1; % 1/4白块endendfor i=1:64:256for j=1:64:256f(i:i+63,j:j+63)=unit;endend% 对原图像进行3x3平均滤波for i=2:1:255for j=2:1:255fave4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1))/4;fave8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1,j+1))/8;fave4_weighted(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1)+f(i,j))/5;fave8_weighted(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1) +f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)+f(i,j))/9;endendfave4=round(fave4); % 平均后灰度值有可能是小数,要取整fave8=round(fave8);fave4_weighted =round(fave4_weighted);fave8_weighted =round(fave8_weighted);subplot(2,2,1);imshow(fave4);title('4邻域平均滤波后图像');subplot(2,2,2);imshow(fave8);title('8邻域平均滤波后图像')subplot(2,2,3);imshow(fave4_weighted);title('4邻域加权平均滤波后图像')subplot(2,2,4);imshow(fave8_weighted);title('8邻域加权平均滤波后图像')% 对原图像进行3x3方形中值滤波for i=2:1:255for j=2:1:255a=[f(i-1,j-1),f(i-1,j),f(i-1,j+1),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j-1),f(i+1,j),f(i+1,j+1)];b=sort(a); % 排序函数fmid(i,j)=b(5); % 9个数排序的中值endendsubplot(1,2,1);imshow(f);title('原图像');subplot(1,2,2);imshow(fmid);title('中值滤波后图像')4邻域平均滤波后图像8邻域平均滤波后图像4邻域加权平均滤波后图像8邻域加权平均滤波后图像原图像中值滤波后图像。
Matlab中的图像滤波方法与实例分析
![Matlab中的图像滤波方法与实例分析](https://img.taocdn.com/s3/m/19b7bf25b6360b4c2e3f5727a5e9856a5612262d.png)
Matlab中的图像滤波方法与实例分析引言图像滤波是数字图像处理中的一项重要技术,用于降低图像噪声、平滑图像以及增强图像细节。
在Matlab中,有多种图像滤波方法可供选择。
本文将对这些方法进行介绍和实例分析。
一、线性滤波方法1. 均值滤波均值滤波是一种最简单的线性平滑滤波方法。
其基本思想是用邻域内像素的平均值替代当前像素的值。
在Matlab中,可使用imfilter函数实现均值滤波。
下面是一个示例:```I = imread('example.jpg');filtered_img = imfilter(I, fspecial('average', 3));```2. 中值滤波中值滤波是一种非线性滤波方法,在处理含有椒盐噪声等图像时表现出较好的效果。
它的原理是用中值取代邻域内的元素值。
在Matlab中,使用medfilt2函数可以实现中值滤波。
下面是一个示例:```I = imread('example.jpg');filtered_img = medfilt2(I);```二、非线性滤波方法1. 双边滤波双边滤波是一种非线性滤波方法,可以同时平滑图像和保留边缘信息。
它的核心思想是考虑像素的空间距离和像素值的差异。
在Matlab中,可使用bfilter2函数实现双边滤波。
下面是一个示例:```I = imread('example.jpg');filtered_img = bfilter2(I, 3, 25, 10); % 参数可根据需要自行调整```2. 自适应中值滤波自适应中值滤波是一种根据像素邻域内像素值的分布特性动态调整滤波窗口大小的方法。
在Matlab中,可使用adpmedian函数实现自适应中值滤波。
下面是一个示例:```I = imread('example.jpg');filtered_img = adpmedian(I, 5); % 参数可根据需要自行调整```三、时域滤波方法1. Laplace滤波Laplace滤波是一种高频增强滤波方法,能够提取图像的细节信息。
MATLAB自编均值和中值滤波实验报告
![MATLAB自编均值和中值滤波实验报告](https://img.taocdn.com/s3/m/b67af9066c85ec3a87c2c552.png)
实验二数字图像的空间域滤波一、实验目的1、理解图像空间域滤波的原理;2、掌握图像均值滤波、中值滤波的原理与实现方法;3、掌握上述方法的改进方法。
二、实验原理均值滤波的主要步骤为:(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)将模板上系数与模板下对应象素相乘;(3)将所有乘积相加;(4)将和(模板的输出响应)赋给途中对应模板中心位置的象素。
中值滤波的主要步骤为:(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)读取模板下各对应象素的灰度值;(3)将这些灰度值从小到大排成1列;(4)找出这些值里排在中间的1个;(5)将这个中间值赋给对应模板中心位置的象素。
三、实验内容基本要求:1、自己编程实现图像的均值滤波;2、自己编程实现图像的中值滤波;3、利用matlab图像处理工具箱中的函数实现图像的上述处理;扩展要求:4、实现一种图像加权中值滤波或加权均值滤波;四、实验步骤1、编程实现图像的均值滤波程序代码:h=imread('444.jpg'); %读入彩色图片c=rgb2gray(h); %把彩色图片转化成灰度图片,256级figure,imshow(c),title('原始图象'); %显示原始图象g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声figure,imshow(g),title('加入高斯噪声之后的图象');Y2=avefilt(g,3); %调用自编函数进行均值滤波,n为模板大小figure,imshow(Y2),title('用自己的编写的函数进行均值滤波之后的结果'); Y4=midfilt(g,3); %调用自己编写的函数进行中值滤波,figure,imshow(Y4),title('用自己编写的函数进行中值滤波之后的结果');自己编写的脚本代码均值滤波function d=avefilt(x,n)a(1:n,1:n)=1; %a即n×n模板,元素全是1p=size(x); %输入图像是p×q的,且p>n,q>nx1=double(x);x2=x1;%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素for i=1:p(1)-n+1for j=1:p(2)-n+1c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘s=sum(sum(c)); %求c矩阵(即模板)中各元素之和x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);中值滤波function d=midfilt(x,n)p=size(x); %输入图像是p×q的,且p>n,q>nx1=double(x);x2=x1;for i=1:p(1)-n+1for j=1:p(2)-n+1c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)e=c(1,:); %是c矩阵的第一行for u=2:ne=[e,c(u,:)]; %将c矩阵变为一个行矩阵endmm=median(e); %mm是中值x2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);程序运行截图五、实验结果分析从实验结果可以看出,中值滤波较均值滤波效果好些,并且滤波与所选的模板有关,若选择权值相同(本实验为0.1/9)相对不同权值的效果好些。
数字图像 中值滤波实验报告 matlab
![数字图像 中值滤波实验报告 matlab](https://img.taocdn.com/s3/m/594d57027375a417866f8fae.png)
数字图像中值滤波实验报告 matlab中值滤波一、实验目的:①掌握中值滤波的原理、滤波过程;②熟悉Matlab编程。
二、实验内容:利用中值滤波,对图像进行滤波;三、实验原理:中值滤波是一种非线性滤波,于它在实际运算过程中并不需要图像的统计特性,所以比较方便。
中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。
在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。
但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。
中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。
设有一个一维序列f1,f2,…,fn,取窗口长度为m(m 为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m个数,fiv,…。
fi1,…,f1,…,fi1,…,fiv,其中i为窗口的中心位置。
vm12。
再将这m个点按其数值大小排列,取其序号为正中间的那作为出。
用数学公式表示为:YiMedfiv,,fi,,fiviZ,vm12 (2-2)例如:有一个序列为{0,3,4,0,7},则中值滤波为重新排序后的序列{0,0,3,4,7}中间的值为3。
此例若用平均滤波,窗口也是取5,那么平均滤波输出为般输出为: Zifivfiv1fifivm iZ (2-3)034075。
因此平均滤波的一对于二位序列Xij进行中值滤波时,滤波窗口也是二维的,但这种二位窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。
二维数据的中值滤波可以表示为:Yi,jMed{Xij},A为滤波窗口A (2-4)在实际使用窗口时,窗口的尺寸一般先用33再取55逐渐增大,直到其滤波效果满意为止。
对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜,对于包含尖顶角物体的图像,适宜用十字形窗口。
使用二维中值滤波最值得注意的是保持图像中有效的细线状物体。
实验三均值滤波和中值滤波
![实验三均值滤波和中值滤波](https://img.taocdn.com/s3/m/7ad7543ea0116c175f0e48c4.png)
实验三 均值滤波和中值滤波实验目的进一步了解 MatLab 软件 /语言,学会使用 MatLab 对图像作滤波处理,使学生有机会掌握滤波 算法,体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配 套的实践机会。
(1) 学生应当完成对于给定图像 +噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。
(2) 利用 MATLAB 软件实现空域滤波的程序:I=imread('electric.tif');J = imnoise(I,'gauss',0.02); J = imnoise(I,'salt & pepper',0.02); (注意空格 ) %添加椒盐噪声figure,imshow(K);figure,imshow(L);figure,imshow(M);figure,imshow(N);三、实验设备与软件(1) IBM-PC 计算机系统(2) MatLab 软件 /语言包括图像处理工具箱 (Image Processing Toolbox)(3) 实验所需要的图片实验要求%添加高斯噪声ave1=fspecial('average',3);ave2=fspecial('average',5); K =filter2(ave1,J)/255; L =filter2(ave2,J)/255; M =medfilt2(J,[3 3]); N =medfilt2(J,[4 4]);%产生3X3的均值模版 %产生5X5的均值模版 %均值滤波 3X3 %均值滤波 5X5 %中值滤波 3X3 模板 % 中值滤波 4X4 模板四、实验内容与步骤a)调入并显示原始图像 Sample2-1.jpg 。
b)利用 imnoise 命令在图像 Sample2-1.jpg 上加入高斯 (gaussian) 噪声c)利用预定义函数fspecial命令产生平均(average)滤波器。
matlab数值滤波
![matlab数值滤波](https://img.taocdn.com/s3/m/1df36076e55c3b3567ec102de2bd960590c6d988.png)
matlab数值滤波【实用版】目录一、引言二、MATLAB 数值滤波处理方法1.均值滤波2.中值滤波3.高斯滤波三、MATLAB 中值滤波原理及实例四、MATLAB 中值滤波程序编写五、结论正文一、引言在信号处理领域,滤波技术是一种重要的方法,可以有效去除信号中的噪声,提高信号质量。
MATLAB 作为一款强大的信号处理软件,提供了丰富的滤波函数和工具箱。
本文将介绍 MATLAB 中的数值滤波处理方法,重点探讨中值滤波的原理及其在 MATLAB 中的实现。
二、MATLAB 数值滤波处理方法1.均值滤波均值滤波是一种简单的线性滤波方法,可以用于降低信号的噪声。
在MATLAB 中,可以使用 fspecial 函数建立预定义的滤波算子,然后使用filter 函数对信号进行滤波。
均值滤波的参数为 hsize,代表模板尺寸,默认值为 [3, 3]。
2.中值滤波中值滤波是一种非线性滤波方法,主要用于去除脉冲噪声。
中值滤波的原理是从信号的一个小区间内选取中间值作为输出。
在 MATLAB 中,可以使用 k1medfilt2 和 k2medfilt2 函数实现中值滤波。
3.高斯滤波高斯滤波是一种线性滤波方法,可以减小信号的噪声,同时保留信号的边缘。
在 MATLAB 中,可以使用 gauss 函数构建高斯滤波器,然后使用 filter 函数对信号进行滤波。
三、MATLAB 中值滤波原理及实例中值滤波的原理是在一个窗口内,选择位于窗口中心的值作为输出。
对于一个长度为 N 的信号,如果窗口长度为 2K,那么从信号的第 K+1 个位置开始,到第 K+K 个位置,这 K 个位置的中间值作为输出。
下面是一个 MATLAB 中值滤波的示例:```matlab% 创建一个信号x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];% 中值滤波y = k1medfilt2(x, 2);% 显示结果subplot(2, 1, 1); plot(x); title("原始信号");subplot(2, 1, 2); plot(y); title("中值滤波后的信号");```四、MATLAB 中值滤波程序编写以下是一个 MATLAB 中值滤波的程序实例:```matlabfunction y = my_median_filter(x, window_size)% 获取信号长度N = length(x);% 计算窗口中心K = floor(window_size / 2);% 初始化输出信号y = zeros(N);% 对信号进行中值滤波for i = K + 1:N - Kwindow = x(i - K:i + K);y(i) = median(window);endend```五、结论本文介绍了 MATLAB 中的数值滤波处理方法,重点讨论了中值滤波的原理及其在 MATLAB 中的实现。
图像去噪实验报告
![图像去噪实验报告](https://img.taocdn.com/s3/m/9d4fdd7f01f69e3143329453.png)
姓名:学号:图像去噪——数字图像处理实验二报告一、实验目的1. 熟悉图像高斯噪声和椒盐噪声的特点;2. 掌握利用均值滤波和中值滤波去除图像噪声的方法。
二、实验内容1. 打开Matlab 编程环境。
2. 读入图像,在图像上分别添加高斯噪声和椒盐噪声。
3. 显示原图像和噪声图像。
4. 对噪声图像进行均值滤波和中值滤波处理。
5. 显示处理效果图。
三、实验程序及结果1.实验程序2.实验结果图 1. 原图像图2. 加入噪声后的图像图3. 处理后的图像四、实验思考:1. 比较均值滤波和中值滤波的对高斯噪声和椒盐噪声图像的处理效果,分析原理?答:(1).从实验结果可以看出:○1对于加了椒盐噪声的图像,利用中值滤波抑制噪声得到的效果更好;○2对于加了高斯噪声的图像,利用均值滤波抑制噪声得到的效果更好;○3均值滤波是图像变得平滑、模糊;○4中值滤波对高斯噪声的抑制作用更差,中值滤波适合处理含椒盐噪声的图像。
(2).分析如下:○1椒盐噪声包含椒噪声(低灰度值)和盐噪声(高灰度)。
若进行中值滤波,对模板中的像素从小到大排列,取模板中排在中间位置的像素值来替代原来的像素值,则最亮和最暗的点一定被排在两侧,排在中间位置的像素值接近原像素值,这样就能达到滤除噪声的目的。
若进行均值滤波,用模板中全体像素点均值来替代原来的像素值,则较大和较小的像素值对结果影响大,这样就把椒盐噪声平均到了最终结果中,不利于滤除噪声。
○2高斯噪声是服从高斯分布(即正态分布)的噪声。
若进行中值滤波,则随机地将噪声像素点的灰度值加到了最终得到的像素值中,不利于滤除噪声。
若进行均值滤波,则可以将高斯噪声取平均隐含于最终得到的像素值中,能较好地滤除噪声。
○3由于均值滤波是用模板中全体像素点均值来替代原来的像素值,所以它在降低噪声的同时会使图像模糊,特别是边缘和细节处。
而且邻域越大,在去噪能力增强的同时模糊程度也越严重。
○4由于中值滤波对模板中的像素从小到大排列,取模板中排在中间位置的像素值来替代原来的像素值,则最亮和最暗的点一定被排在两侧,排在中间位置的像素值接近原像素值,所以中值滤波对去除椒盐噪声有奇效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数字图像的空间域滤波
一、实验目的
1、理解图像空间域滤波的原理;
2、掌握图像均值滤波、中值滤波的原理与实现方法;
3、掌握上述方法的改进方法。
二、实验原理
均值滤波的主要步骤为:
(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)将模板上系数与模板下对应象素相乘;
(3)将所有乘积相加;
(4)将和(模板的输出响应)赋给途中对应模板中心位置的象素。
中值滤波的主要步骤为:
(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)读取模板下各对应象素的灰度值;
(3)将这些灰度值从小到大排成1列;
(4)找出这些值里排在中间的1个;
(5)将这个中间值赋给对应模板中心位置的象素。
三、实验内容
基本要求:
1、自己编程实现图像的均值滤波;
2、自己编程实现图像的中值滤波;
3、利用matlab图像处理工具箱中的函数实现图像的上述处理;
扩展要求:
4、实现一种图像加权中值滤波或加权均值滤波;
四、实验步骤
1、编程实现图像的均值滤波
程序代码:
h=imread('444.jpg'); %读入彩色图片
c=rgb2gray(h); %把彩色图片转化成灰度图片,256级
figure,imshow(c),title('原始图象'); %显示原始图象
g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声
figure,imshow(g),title('加入高斯噪声之后的图象');
Y2=avefilt(g,3); %调用自编函数进行均值滤波,n为模板大小figure,imshow(Y2),title('用自己的编写的函数进行均值滤波之后的结果'); Y4=midfilt(g,3); %调用自己编写的函数进行中值滤波,
figure,imshow(Y4),title('用自己编写的函数进行中值滤波之后的结果');
自己编写的脚本代码
均值滤波
function d=avefilt(x,n)
a(1:n,1:n)=1; %a即n×n模板,元素全是1
p=size(x); %输入图像是p×q的,且p>n,q>n
x1=double(x);
x2=x1;
%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:p(1)-n+1
for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素end
end
%未被赋值的元素取原值
d=uint8(x2);
中值滤波
function d=midfilt(x,n)
p=size(x); %输入图像是p×q的,且p>n,q>n
x1=double(x);
x2=x1;
for i=1:p(1)-n+1
for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)
e=c(1,:); %是c矩阵的第一行
for u=2:n
e=[e,c(u,:)]; %将c矩阵变为一个行矩阵
end
mm=median(e); %mm是中值
x2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素end
end
%未被赋值的元素取原值
d=uint8(x2);
程序运行截图
五、实验结果分析
从实验结果可以看出,中值滤波较均值滤波效果好些,并且滤波与所选的模板有关,若选择权值相同(本实验为0.1/9)相对不同权值的效果好些。
模板的不同对均值滤波的影响较大。