数字图像处理实验报告材料(邻域平均法和中值滤波法)
计算机图像处理学习报告
主要学习内容1.数字图像处理( Digital Image Processing )又称为计算机图像处理, 它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程, 以提高图像的实用性, 从而达到人们所要求的预期结果。
例如: 对照片反差进行变换;对被噪声污染的工业电视图像去除噪声;从卫星图片中提取目标物特征参数等等。
与人类对视觉机理着迷的历史相比, 数字图像处理还是一门相对年轻的学科。
但在其短短的历史中, 它却以程度不同的成功被应用于几乎所有与成像有关的领域。
由于其表现方式(用图像显示)所固有的魅力, 它几乎吸引了从科学家到平民百姓太多的注意。
几个新的技术发展趋势将进一步刺激该领域的成长: 包括由低价位微处理器支持的并行处理技术;用于图像数字化的低成本的电荷耦合器件(CCD);用于大容量、低成本存储阵列的新存储技术;以及低成本、高分辨的彩色显示系统。
另一个推动力来自于稳定涌现出的新的应用。
在商业、工业、医学应用中, 数字成像技术的使用持续增长。
尽管军费在削减, 在遥感成像中却更多地使用了数字图像处理技术。
低成本的硬件加上正在兴起的几个非常重要的应用, 我们可以预料到数字图像处理在将来会发挥更重要的作用。
2.图像增强技术图像增强是指按特定的需要突出一幅图像中的某些信息, 同时, 削弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强技术主要包含直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
空间域平滑技术为了抑制噪声改善图像质量所进行的处理称为图像平滑或去噪。
它可以在空间域或频率域中进行。
此处介绍空间域的几种平滑方法。
(1)局部平滑法局部平滑发又称邻域平均法或移动平均法。
它是利用像素邻域内的各像素的灰度平均值代替该像素原来的灰度值, 实现图像的平滑。
邻域平均法是将当前像素邻域内各像素的灰度平均值作为其输出值的去噪方法。
其作用相当于用这样的模板同图像卷积。
数字图像处理实验报告
目录实验一数字图像滤波处理 (2)实验二数字图像锐化处理 (10)实验三数字图像平滑处理 (14)实验四数字图像的直方图规定化 (16)实验五数字图像的傅立叶变换 (20)实验一 数字图像滤波处理一、 实验目的(一) 掌握数字图像滤波处理的算法原理。
(二) 熟悉数字图像滤波处理的算法原理。
二、 实验原理和方法(一)均值滤波平滑线形空间滤波的输出(响应)是包含在滤波掩模邻域内像素的简单平均值。
因此,这些滤波器也称均值滤波器,指的是低通滤波器。
它是用滤波掩模确定的邻域内像素的平均灰度值代替图像中每个像素点的值,这种处理减小了图像灰度的“尖锐”变化。
图1-1显示了两个33⨯的平滑滤波器。
第一个滤波器产生掩模下的标准像素平均值,把掩模系数代入式z w z w z w z w i i i R ∑==+++=91992211 (1.1)(w 为掩模系数,z 为与该系数对应的灰度值)即可得∑=911i z R (1.2)图1-1 两个33⨯均值滤波器掩模。
R 是由掩模定义的33⨯邻域像素灰度的平均值。
一个n m ⨯掩模应有mn 1的归一化常数。
图1-1第二种掩模更重要,也称加权平均,处于掩模中心位置的像素比其他任何像素就显得不太重要 。
由于对角项离中心比离正交方向相邻的像素更远,所以它的重要性比与中心直接相邻的四个像素低。
把中心点加强的最高,而随着距中心加强为最高,而随着距中心点距离的增加减小系数值,是为了减小平滑处理中的模糊。
所有系数的和是16,2的整数次幂,便于计算机的实现。
一幅N M ⨯的图像经过一个n m ⨯(m 和n 是奇数)的加权均值滤波器滤波的过程可由下式给出:)())(()(∑∑∑∑-=-=-=-=++=a a s bbt a a s bbt t s w t y s x f t s w y x g ,,,, (1.3)可理解为一幅完全滤波的图像是由对1,2,1,0-=M x 和1,2,1,0-=N y 执行式(1.3)得到的。
数字图像处理实验报告
数字图像处理试验报告实验二:数字图像的空间滤波和频域滤波姓名:XX学号:2XXXXXXX 实验日期:2017 年4 月26 日1.实验目的1. 掌握图像滤波的基本定义及目的。
2. 理解空间域滤波的基本原理及方法。
3. 掌握进行图像的空域滤波的方法。
4. 掌握傅立叶变换及逆变换的基本原理方法。
5. 理解频域滤波的基本原理及方法。
6. 掌握进行图像的频域滤波的方法。
2.实验内容与要求1. 平滑空间滤波:1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
3) 使用函数 imfilter 时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。
4) 运用 for 循环,将加有椒盐噪声的图像进行 10 次,20 次均值滤波,查看其特点, 显示均值处理后的图像(提示:利用fspecial 函数的’average’类型生成均值滤波器)。
5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
6) 自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。
2. 锐化空间滤波1) 读出一幅图像,采用3×3 的拉普拉斯算子 w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。
2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n 的拉普拉斯算子,如5×5的拉普拉斯算子w = [ 1 1 1 1 11 1 1 1 11 1 -24 1 11 1 1 1 11 1 1 1 1]3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对进行锐化滤波,并利用式g(x, y) ?f (x, y) ? ?2 f (x, y) 完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示。
数字图像处理滤波报告
2010年4月一,实验目的。
1.了解在数字图像处理中滤波的概念和意义。
2.掌握数字图像处理滤波程序。
二,实验原理。
图像的中值滤波是一种非线性的图像处理方法,它通过对邻域内像素按灰度排序的结果决定中心像素的灰度。
图像的中值滤波是统计排序滤波器的一种常见应用,它是通过对邻域内采样数据进行排序并取得中值来决定中心像素灰度的一种处理手段,图像的中值滤波在少量离散杂点的消除方面效果显著。
前面介绍过图像简单平滑和高斯平滑,以这两种算法为代表的平滑线性滤波算法在消除离散型杂点方面,都采取的是将杂点的干扰分摊到整个邻域中的每个像素,以减少杂点的影响,然而这样做的代价就是图像清晰度的大量损失。
如图11-14所示,a表示一个5×5邻域的像素灰度,其中中点位置的像素为孤立的杂点,b为对a进行一次简单平滑处理的结果,c 为对b进行简单平滑的结果,从图中可看出简单平滑将杂点对图像的影响分担到了邻域的其他像素。
图11-14 孤立杂点的简单平滑从图11-14中可以发现简单平滑对于孤立的杂点消除较为有效,而对于稍大的杂点或是密集的杂点,图像简单平滑的效果就不够理想。
如图11-15所示,其中a表示一个5×5邻域的像素灰度,其中灰度为0的点为杂点,b为对a进行简单平滑的结果,从图中可以看出简单平滑使画面质量严重下降,并且并没有很好地去除杂点影响。
图11-15 稍大杂点的简单平滑分析原因,可以发现平滑线性滤波器的工作原理可以比喻为用水冲洗桌面上的污点,冲洗的结果污点并没有消失,只是被淡化,如果污点较大较密集,则冲洗的结果是整个桌面都被污点所影响。
尝试换一种思路,如果不采取冲淡污点的办法而是将污点直接去除,这样就可以避免污点数量较多时难以去除的困难,这也就是中值滤波的基本思想。
在中值滤波算法中,对于孤立像素的属性并不非常关注,而是认为图像中的每个像素都跟邻域内其他像素有着密切的关系,对于每一个邻域,算法都会在采样得到的若干像素中,选择一个最有可能代表当前邻域特征的像素的灰度作为中心像素灰度,这样就有效避免了离散型杂点对图像的影响。
数字图像处理实验教学报告.doc
数字图像处理实验报告实验内容:主要实现以下几个内容:⑴直方图均衡化(histogram equalization ) ⑵直方图匹配(histogram matching ) ⑶邻域平均(neighborhood averaging ) ⑷局域增强(local enhancement ) ⑸中值滤波(median filtering )。
二.实验目的:下载安装MATLAB 图像处理工具箱,对图像进行处理;学会用Matlab 中的下列函数对输入图像进行上述5类运算;感受各种不同的图像处理方法对最终图像效果的影响。
Imhist :对灰度图像画直方图 Histeq :是图像直方图均衡化处理 Nlfilter :实现双边滤波器mean2:图像处理工具箱中的函数,用来计算矩阵元素的平均数 std2:计算矩阵元素的标准差 fspecial :建立预定义的滤波算子 filter2:使用指定的滤波器进行滤波 medfilt2:中值滤波三.实验步骤1.仔细阅读Matlab 帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。
2.将桌面上文件1(a).jpg 图像文件用函数imread 读入Matlab 中,对其作直方图均衡化和直方图匹配运算,显示运算前后该图像的直方图,处理后的图像和灰度变换函数。
直方图反映灰度等级的分布情况,本实验指定的直方图如下:1400×rr ≤5 7000-310×r 5<r ≤20 900-5×r 20<r ≤180 -1440+8×r 180<r ≤225 3060-12×r225<r ≤2553.将文件2.jpg 图像文件读入Matlab ,用nlfilter 对其进行3×3邻域平均和计算邻域标准差,再对其黑暗部分的特征进行局域增强而保持明亮部分图像不变,显示增强后的效果图。
在进行局域增强时,应按下列算法进行:E ·f (x ,y ) if m Sxy ≤k 0M G and k 1D G ≤σSxy ≤k 2D G f (x ,y )otherwisen =g (x ,y )=适当调整k 0,k 1和k 2的值,使局域增强达到最佳效果。
数字图像处理实验报告.doc
数字图像处理试验报告实验二:数字图像的空间滤波和频域滤波姓名: XX学号: 2XXXXXXX实验日期:2017年4月26日1. 实验目的1. 掌握图像滤波的基本定义及目的。
2. 理解空间域滤波的基本原理及方法。
3. 掌握进行图像的空域滤波的方法。
4. 掌握傅立叶变换及逆变换的基本原理方法。
5. 理解频域滤波的基本原理及方法。
6. 掌握进行图像的频域滤波的方法。
2. 实验内容与要求1. 平滑空间滤波:1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
3)使用函数 imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’ replicate ’、’ symmetric ’、’ circular ’)进行低通滤波,显示处理后的图像。
4) 运用 for 循环,将加有椒盐噪声的图像进行10 次, 20 次均值滤波,查看其特点, 显示均值处理后的图像(提示 : 利用 fspecial 函数的’ average ’类型生成均值滤波器)。
5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
6)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。
2.锐化空间滤波1) 读出一幅图像,采用3×3 的拉普拉斯算子 w = [ 1, 1, 1; 1 – 81;1,1, 1]对其进行滤波。
2) 编写函数 w = genlaplacian(n) ,自动产生任一奇数尺寸n 的拉普拉斯算子,如 5×5的拉普拉斯算子w = [ 1 1 1 1 11 1 1 1 11 1 -24 1 11 1 1 1 11 1 1 1 1]3) 分别采用5×5,9×9,15×15 和 25×25 大小的拉普拉斯算子对blurry_moon.tif进行锐化滤波,并利用式 g(x, y)2 f (x, y) 完成图像的锐化增强,观察其有何f (x, y)不同,要求在同一窗口中显示。
数字图像处理实验三(邻域平均法和中值滤波)
数字图像处理 实验三
邻域平均法(box 模板)和中值滤波处理
加入脉冲噪声后的图像:testnoise.bmp 去噪过程 结果图像
请设计程序,分别用邻域平均法,其模板为:
和中值滤波法对testnoise 图像进行去噪处理(中值滤波的模板的大小也设为3×3)。
得出实验结果图像后,比较这两种方法去噪的效果好坏,并分析具体原因。
完成上述工作后,使用程序进行验证分析:使用邻域平均法时,3×3和5×5模板大小对图像进行处理的效果有何差别?并分析原因。
附加说明:程序框架可以参考第二次实验指导书上给出的示例程序。
邻域平均法 中值滤波法
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡1111*1111191。
数字图像处理实验三中值滤波和均值滤波实验资料报告材料
数字图像处理实验三均值滤波、中值滤波的计算机实现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的方块,取周围的像素点取得其均值代替原像素点。
边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。
六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。
本次实验更加增加了对数字图像处理的了解与学习。
七、实验程序代码注释及分析// HistDemoADlg.h : 头文件//#include "ImageWnd.h"#pragma once// CHistDemoADlg 对话框class CHistDemoADlg : public CDialogEx{// 构造public:CHistDemoADlg(CWnd* pParent = NULL); // 标准构造函数int nWidth;int nHeight;int nLen;int nByteWidth;BYTE *lpBackup;BYTE *lpBitmap;BYTE *lpBits;CString FileName;CImageWnd source,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:void LoadBitmap(void);afx_msg void OnOpen();afx_msg void OnHist();void HistogramEq(void);void NoColor(void);void HistogramEq1(int nWidth,int nHeight,BYTE *lpInput,BYTE*lpOutput);void MeanFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE*lpOutput);void MedianFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE*lpOutput);afx_msg void 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.setImage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。
数字图像处理 实验报告(完整版)
数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。
7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。
其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
数字图像处理实验-滤波
实验三1.实验目的:(1)对指定图像进行均值、中值滤波增强,比较增强的效果;(2)对图片进行噪声处理,进行图像恢复;2.实验内容:对指定图像进行均值、中值滤波增强,比较增强的效果。
图1是一张原始人物图像,图2是一张近似20%像素带有冲激噪声后的人物图像。
现分别利用①5×5区域的邻域平均法和②5×5中值滤波法对图2进行去噪声处理,进行图像恢复。
将原始图像及增强后的图像都显示于屏幕上,观察两种方法对去噪的不同作用。
图1图23.实验结果(代码&结果可视化)1、利用已有的图像处理应用软件集成环境编写相应的平滑程序。
5×5邻域平均法:邻域平均是最简单的平滑滤波,即是将原图的一个像素的灰度值和它周围邻近的24个像素的灰度值相加,然后求得的平均值作为新图该像素的灰度值。
具体算法类似与图像锐化。
5×5中值滤波法:采用滑动窗口法设窗口为5×5 的矩形,该窗口在被处理的图像上逐点移动内含25个像素,每次移动均计算一次中值,赋给窗口中间点,作为其灰度,具体算法类似邻域平均。
2、核心程序:邻域平均核心算法类似梯度锐化,本报告只给出中值滤波的核心程序:// 开始中值滤波// 行(除去边缘几行)for(i = iFilterMY; i < lHeight - iFilterH + iFilterMY + 1; i++){// 列(除去边缘几列)for(j = iFilterMX; j < lWidth - iFilterW + iFilterMX + 1; j++){// 指向新DIB第i行第j个像素的指针lpDst = (unsigned char*)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j;// 读取滤波器数组for (k = 0; k < iFilterH; k++){for (l = 0; l < iFilterW; l++){lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i + iFilterMY - k) + j - iFilterMX + l;// 保存像素值aValue[k * iFilterW + l] = *lpSrc;}}// 获取中值* lpDst = GetMedianNum(aValue, iFilterH * iFilterW);}}4.实验分析和总结采用滤波器(低频/高频)处理后的图像可以更加平滑,可以对图像去除噪音,恢复到原始图像。
数字图像处理实验报告2
实验二: 数字图像的空间域滤波——平滑滤波1. 1. 实验目的2.掌握图像滤波的基本定义及目的。
3.理解空间域滤波的基本原理及方法。
4.掌握进行图像的空域滤波的方法。
1. 2. 实验基本原理2.空间域增强空间域滤波是在图像空间中借助模板对图像进行领域操作, 处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制, 同时保证其他分量不变, 达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。
各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑的目的可分为两类: 一类是模糊, 目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
锐化的目的是为了增强被模糊的细节。
结合这两种分类方法, 可将空间滤波增强分为四类:线性平滑滤波器(低通)非线性平滑滤波器(低通)线性锐化滤波器(高通)非线性锐化滤波器(高通)1)空间滤波器都是基于模板卷积, 其主要工作步骤是:2)将模板在图中移动, 并将模板中心与图中某个像素位置重合;3)将模板上的系数与模板下对应的像素相乘;4)将所有乘积相加;5)将和(模板的输出响应)赋给图中对应模板中心位置的像素。
3.平滑滤波器1)线性平滑滤波器线性低通平滑滤波器也称为均值滤波器, 这种滤波器的所有系数都是正数, 对3×3的模板来说, 最简单的是取所有系数为1, 为了保持输出图像任然在原来图像的灰度值范围内, 模板与象素邻域的乘积都要除以9。
MATLAB 提供了fspecial 函数生成滤波时所用的模板, 并提供filter2和imfilter 函数用指定的滤波器模板对图像进行运算。
函数fspecial 的语法格式为:h=fspecial(type);h=fspecial(type,parameters);其中参数type 指定滤波器的种类, parameters 是与滤波器种类有关的具体参数。
数字图像处理实验报告
数字图像处理实验报告实验一数字图像的获取一、实验目的1、了解图像的实际获取过程。
2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。
3、熟练掌握图像读、写、显示、类型转换等matlab函数的用法。
二、实验内容1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。
2、编程实现空间分辨率变化的效果。
三、实验原理1、图像读、写、显示I=imread(‘image.jpg’)Imview(I)Imshow(I)Imwrite(I,’wodeimage.jpg’)2、图像类型转换I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵A转化为灰度图像I,amin对应灰度0,amax对应1,也可以不指定该区间。
[x,map]=gray2ind(I,n);按指定的灰度级n将灰度图像转化为索引图像,n默认为64I=ind2gray(x,map);索引图像转化为灰度图像I=grb2gray(RGB);真彩色图像转化为灰度图像[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像RGB=ind2rgb(x,map);索引图像转化为真彩色图像BW=im2bw(I,level);将灰度图像转化为二值图像,level取值在[0,1]之间BW=im2bw(x,map,level);将索引图像转化为二值图像,level取值在[0,1]之间BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level取值在[0,1]之间四、实验代码及结果1、in=imread('peppers.png');i=rgb2gray(in);[x,map]=gray2ind(i,128);subplot(131),imshow(in)subplot(132),imshow(i)subplot(133),imshow(x),colormap(map)2、%空间分辨率变化的效果clc,close all,cleari=imread('cameraman.tif');i=imresize(i,[256,256]);i1=i(1:2:end,1:2:end);[m1,n1]=size(i)i2=i1(1:2:end,1:2:end);[m2,n2]=size(i2)i3=i2(1:2:end,1:2:end);[m3,n3]=size(i3)subplot(221),imshow(i),xlabel('256x256')subplot(222),imshow(i1),xlabel('128x128')subplot(223),imshow(i2),xlabel('64x64')subplot(224),imshow(i3),xlabel('32x32')256 x 256128 x 12864 x 6432 x 32实验二图像的几何变换一、实验目的掌握图像的基本几何变换的方法1、图像的平移2、图像的旋转二、实验内容练习用matalb 命令实现图像的平移、旋转操作1、.编写实现图像平移的函数2、用imread 命令从你的硬盘读取一幅256×256灰度图;3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。
数字图像处理实验报告
数字图像处理实验报告图像处理课程的目标是培养学生的试验综合素质与能力。
使学生通过实践,理解相关理论学问,将各类学问信息进行新的组合,制造出新的方法和新的思路,提高学生的科学试验与实际动手操作能力[1]。
从影像科筛选有价值的图像,建成影像学数字化试验教育平台,系统运行正常;具备图像上传、图像管理、图像检索与扫瞄、试验报告提交、老师批阅等功能;能满意使用要求[2]。
1.试验内容设计思路1.1项目建设内容和方法数字图像处理的内容:完整的数字图像处理大体上分为图像信息的猎取,存储,传送,处理,输出,和显示几个方面。
数字图像信息的猎取主要是把一幅图像转换成适合输入计算机和数字设备的数字信号,包括摄取图像,光、电转换及数字化。
数字图像信息的存储,数字图像信息的突出特点是数据量巨大,为了解决海量存储问题,数字图像的存储主要研究图像压缩,图像格式及图像数据库技术。
数字图像信息的传送数字图像信息的传送可分为系统内部传送与远距离传送[4]数字图像信息处理包括图像变换,图像增加,图像复原,彩色与多光谱处理图像重建,小波变换,图像编码,形态学,目标表示与描述。
数字图像输出和显示,最终目的是为人和机器供应一幅便于解释和识别的图像,数字图像的输出和显示也是数字图像处理的重要内容之一。
1.2数字图像处理的方法大致可以分为两大类,既空域法和频域法空域法:是把图像看做平面中各个像素组成的集合,然后直接对一维和二维函数进行相应处理,依据新图像生成方法的不同,空域处理法可为点处理法,区处理法,叠代处理法,跟踪处理法,位移不变与位移可变处理法。
点处理法的优点,点处理的典型用途a)灰度处理b)图像二值处理点处理方法的优点a)可用LUT方法快速实现b)节省存储空间。
区处理法,邻域处理法。
它依据输入图像的小邻域的像素值,按某些函数得到输出像素。
区处理法主要用于图象平滑和图像的锐化。
叠代处理法:叠代就是反复进行某些处理运算,图像叠代处理也是如此,拉普拉斯算子或平滑处理的结果是物体轮廓,该图像轮廓边缘太宽或粗细不一,要经过多次叠代把它处理成单像素轮廓——图像细化。
数字图像处理实验报告
数字图像处理实验报告一、引言数字图像处理是一门涉及图像获取、图像处理和图像分析的重要学科,广泛应用于计算机科学、电子工程、通信技术等领域。
本报告旨在介绍并总结我所进行的数字图像处理实验,讨论实验的目的、方法、结果和分析。
二、实验目的通过本次实验,旨在掌握和理解数字图像处理的基本原理和常见技术,包括灰度变换、空间域滤波、频域滤波等,以及层次分割、边缘检测和形态学处理等高级应用技术。
三、实验方法1. 寻找合适的图像在实验中,我选用了一张自然风景图像作为处理对象。
这张图像包含丰富的纹理和颜色信息,适合用于多种图像处理方法的验证和比较。
2. 灰度变换灰度变换是数字图像处理中常见的基础操作,可以通过对图像的像素灰度值进行线性或非线性变换,来调整图像的对比度、亮度等特征。
在实验中,我利用线性灰度变换方法将原始彩色图像转换为灰度图像,并进行对比度的调整,观察处理结果的变化。
3. 空间域滤波空间域滤波是一种基于像素邻域的图像处理方法,常用于图像去噪、边缘增强等应用。
我使用了平滑滤波和锐化滤波两种方法,并针对不同的滤波算子和参数进行了实验和比较,评估其对图像细节和边缘保留的影响。
4. 频域滤波频域滤波是一种基于图像的频谱特征的图像处理方法,广泛应用于图像增强、去噪和特征提取等方面。
我利用傅里叶变换将图像从空间域转换到频域,采用理想低通滤波器和巴特沃斯低通滤波器进行图像的模糊处理,并进行了实验对比和分析。
5. 高级应用技术在实验中,我还研究了数字图像处理中的一些高级应用技术,包括层次分割、边缘检测和形态学处理。
通过应用不同的算法和参数,我实现了图像区域分割、提取图像边缘和形态学形状变换等效果,评估处理结果的准确性和稳定性。
四、实验结果与分析通过对以上实验方法的实施,我获得了一系列处理后的图像,并进行了结果的比较和分析。
在灰度变换实验中,我发现线性变换对图像的对比度有较大影响,但对图像的细节变化不敏感;在空间域滤波实验中,平滑滤波可以有效降噪,但会导致图像细节损失,而锐化滤波可以增强图像的边缘效果,但也容易引入噪声;在频域滤波实验中,理想低通滤波对图像的模糊效果明显,而巴特沃斯低通滤波器可以在一定程度上保留图像的高频细节信息;在高级应用技术实验中,边缘检测和形态学处理对提取图像边缘和形状变换非常有效,但参数的选择会对结果产生较大影响。
2空域图像滤波实验(邻域平均法、中值滤波法)
《图像处理技术》课程 第2次实验报告试验名称:空域图像滤波实验(邻域平均法、中值滤波法)一、试验目的1.培养学生理解中值滤波的方法2.掌握图像处理的基本方法二、试验设备1、PC 机一台,windows 操作系统;2、CCS 编程环境;三、试验原理中值滤波是由图基(Turky )在1971年提出的,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。
对于奇数个元素,中值是指按大小排序后中间的数值;对于偶数个元素,中值是指排序后中间两个元素灰度值的平均值。
对序列而言,中值的定义是这样的:若1,...,n x x 为一组序列,先把其按大小排列为:123i i i in x x x x ≤≤≤≤ 则该序列的中值y 为:{}12121221n 2n i n n n i i x n y Med x x x x x +⎛⎫⎪⎝⎭+⎛⎫ ⎪⎝⎭⎧⎪⎪==⎨⎡⎤⎪+⎢⎥⎪⎢⎥⎣⎦⎩ 为奇数为偶数(11.5)公式11.2.5中,若把一个点的特定长度或形状的邻域作为窗口,在一维情况下,中值滤波器是一个含有奇数个像素的滑动窗口。
窗口中中间那个像素的值用窗口各像素值的中值来代替,设输入序列为{},∈i x i I ,I 为自然数集合或子集,窗口长度为n ,且令12-=n u ,则滤波器的输出为:{}{}-+==i i i u i i u y Med x Med x x x(11.6)公式11.2.6表明i 点的中值仅与窗口前后个点的中值有关,i y 为序列i x 的中值。
若把公式11-2中,中值滤波的概念推广到二维并利用某种形式的二维窗口。
则可对二维中值滤波做如下定义:设(){}2,,∈ij x i j I 表示数字图像各点的灰度值,滤波窗口为A ,ij x 点的中值,则:{}()()(){}2+*+==,,,i,j,I ij ij j r j s Ay Med x Med x r s A ∈∈(11.7)公式11.7为窗口是A的x点的中值表达式,二维中值滤波的窗口通常选为3*3,5*5ij区域,可以取方形,也可以取近似圆形或十字形。
数字图像处理实验报告
数字图像处理实验报告数字图像处理实验报告实验⼀数字图像基本操作及灰度调整⼀、实验⽬的1)掌握读、写图像的基本⽅法。
2)掌握MATLAB语⾔中图像数据与信息的读取⽅法。
3)理解图像灰度变换处理在图像增强的作⽤。
4)掌握绘制灰度直⽅图的⽅法,理解灰度直⽅图的灰度变换及均衡化的⽅法。
⼆、实验内容与要求1.熟悉MATLAB语⾔中对图像数据读取,显⽰等基本函数特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。
1)将MATLAB⽬录下work⽂件夹中的forest.tif图像⽂件读出.⽤到imread,imfinfo等⽂件,观察⼀下图像数据,了解⼀下数字图像在MATLAB中的处理就是处理⼀个矩阵。
将这个图像显⽰出来(⽤imshow)。
尝试修改map颜⾊矩阵的值,再将图像显⽰出来,观察图像颜⾊的变化。
2)将MATLAB⽬录下work⽂件夹中的b747.jpg图像⽂件读出,⽤rgb2gray()将其转化为灰度图像,记为变量B。
2.图像灰度变换处理在图像增强的作⽤读⼊不同情况的图像,请⾃⼰编程和调⽤Matlab函数⽤常⽤灰度变换函数对输⼊图像进⾏灰度变换,⽐较相应的处理效果。
3.绘制图像灰度直⽅图的⽅法,对图像进⾏均衡化处理请⾃⼰编程和调⽤Matlab函数完成如下实验。
1)显⽰B的图像及灰度直⽅图,可以发现其灰度值集中在⼀段区域,⽤imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直⽅图与原灰度直⽅图的区别。
2) 对B 进⾏直⽅图均衡化处理,试⽐较与源图的异同。
3) 对B 进⾏如图所⽰的分段线形变换处理,试⽐较与直⽅图均衡化处理的异同。
图1.1 分段线性变换函数三、实验原理与算法分析1. 灰度变换灰度变换是图像增强的⼀种重要⼿段,它常⽤于改变图象的灰度范围及分布,是图象数字化及图象显⽰的重要⼯具。
数字图像处理实验报告
数字图像处理实验报告指导老师:***小组成员:刘立超 0710210230郑琳 0710210109南京理工大学自动化学院2010年12月1 图像变换(1)DCT 变换公式:①1维DCT 变换:1D 正变换1D 反变换f x = 1N F 0 + 2N F u N−1u =1cos 2x +1 uπ2N②2维DCT 变换:2D 正变换:2D 反变换:其中:c x = 1/ 2,x =01,x ≠0(2)C++文件中函数的参量形式分别为: ①DCT 变换输入参数:int height :图像高(行数) int width :图像宽(列数)unsigned char * input_image :读入的图像数据,对于灰度图像大小为WxH()110(0)()21()()cos 2N x F f x x F f x Nμπμ-=-==+=∑∑∑-=-=++=1010222])12(cos[])12(cos[),()()(),(M x N y M N MNc y x y x f c c F υμυμυμππ∑∑-=-=++=1010222])12(cos[])12(cos[),()()(),(M N M N c MNy x F c c y x f μυππυμυμυμ字节;unsigned char * output:处理后的图像数据,对于灰度图像大小为WxH字节int dimention :1--一维DCT 2--二维DCT函数说明:void DCT(unsigned char * input_image, double * output,int height, int width,int dimention)②DCT逆变换输入参数:int height:图像高(行数)int width:图像宽(列数)unsigned char * input_image:DCT数据;unsigned char * output:处理后的数据;int dimention :1-一维IDCT 2--二维IDCT函数说明:void IDCT(double * input_image, double * output,int height, int width,intdimention)(3)使用上述的函数对图像进行变换将变换结果使用log(1+|DCT()|)校正,并用vi工具进行观察,得到的源图像和变换后的图像如图1-1所示。
数字图像处理课程综合实习报告范本
数字图像处理课程综合实习实习报告学院XXXXXX学院班级XXX班学号 XXXXX姓名XXXXX日期 2011-06-27指导教师XXXX一、实习目的和意义3二、实习原理和方法31)我的实习容32)数字图像基本概念33)RAW格式图像与BMP格式图像44)灰度线性变换45)图像局部处理:低通滤波和高通滤波56)中值滤波57)边缘检测58)图像几何变换:缩放、平移、旋转、转置69)直方图均衡化710)二值化:状态法、判断分析法7三、实习过程与步骤71)格式转换(RAW格式到BMP格式)82)灰度线性变换93)高通滤波和低通滤波94)中值滤波105)图像的几何变换(旋转、缩放、平移)106)直方图的显示与均衡化127)边缘检测128)图像二值化139)模板匹配15四、实习结果分析与评价151)初始图像152)将RAW格式图像转换成BMP格式图像153)图像点运算:灰度线性变换164)图像局部处理:高通滤波和低通滤波165)中值滤波176)图像几何变换:旋转、缩放、平移177)边缘检测178)直方图均衡化189)图像二值化1810)模板匹配19五、实习总结与体会20一、实习目的和意义本实习容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。
为学生进一步学习数字摄影测量、遥感和地理信息系统等专业课程以与应用图像处理解决实际问题奠定基础。
二、实习原理和方法1)我的实习容(a)必做部分1)将RAW格式图像转换成BMP格式图像2)图像点运算:灰度线性变换3)图像局部处理:高通滤波和低通滤波(b)选做部分1)图像几何变换:缩放、平移、旋转、转置2)图像边缘提取:中值滤波、边缘检测3)直方图均衡化4)图像二值化影像融合2)数字图像基本概念(a)数字图像连续物理图像采样和量化为离散数值矩阵,矩阵中每个元素表示相应位置像素亮度,称之为数字图像。
数字图像处理邻域平均法滤波实验报告matlab实现
数字图像处理实验报告实验三邻域平均法滤波学号姓名实验三 邻域平均法滤波一、实验内容选取噪声较明显的图像,分别采用3*3、5*5、7*7的模板进行邻域平均法滤波,并比较滤波效果。
二、实验步骤1、 设计思想或者流程图。
邻域平均法的思想是用像素及其指定邻域内像素的平均值或加权平均值作为该像素的新值,以便去除突变的像素点,从而滤除一定的噪声。
邻域平均法的数学含义可用下式表示:∑∑==⎪⎭⎫ ⎝⎛=mn i imn i i i w z w y x g 11),( (1)上式中:i z 是以),(y x 为中心的邻域像素值;i w 是对每个邻域像素的加权系数或模板系数;mn 是加权系数的个数或称为模板大小。
邻域平均法中常用的模板是: ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡*=11111111191Box T (2)为了解决邻域平均法造成的图像模糊问题,采用阈值法(又叫做超限邻域平均法,如果某个像素的灰度值大于其邻域像素的平均值,且达到一定水平,则判断该像素为噪声,继而用邻域像素的均值取代这一像素值;否则,认为该像素不是噪声点,不予取代),给定阈值0T :⎩⎨⎧≥-<-=00),(),(),(),(),(),(),(T y x g y x f y x g T y x g y x f y x f y x h (3)(3)式中,),(y x f 是原始含噪声图像,),(y x g 是由(1)式计算的平均值,),(y x h 滤波后的像素值。
2、 源程序并附上注释。
3、A=imread('1.jpg');B=rgb2gray(A);figure; imshow(B); title('原始图象');H=imnoise(B,'gaussian');figure; imshow(H); title('高斯噪声');Q=imnoise(B,'salt & pepper');figure; imshow(Q); title('椒盐噪声');M=fspecial('average',3*3);E=imfilter(Q,M);figure; imshow(E); title('3*3平均模板'); N=fspecial('average',5*5);K=imfilter(Q,N);figure; imshow(K); title('5*5平均模板'); Z=fspecial('average',7*7);J=imfilter(Q,Z);figure; imshow(J); title('7*7平均模板');4、程序运行结果比较。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告班级:姓名:学号:日期:邻域平均法和中值滤波处理一、实验目的图像变换是数字图像处理中的一种综合变换,如直方图变换、几何变换等。
通过本实验,使得学生掌握两种变换的程序实现方法。
二、实验任务请设计程序,分别用邻域平均法,其模板为:和中值滤波法对testnoise 图像进行去噪处理(中值滤波的模板的大小也设为3×3)。
三、实验环境本实验在Windows平台上进行,对内存及cpu主频无特别要求,使用VC或者MINGW(gcc)编译器均可。
四、设计思路介绍代码的框架结构、所用的数据结构、各个类的介绍(类的功能、类中方法的功能、类的成员变量的作用)、各方法间的关系写。
在此不进行赘述。
五、具体实现实现设计思路中定义的所有的数据类型,对每个操作给出实际算法。
对主程序和其他模块也都需要写出实际算法。
代码:<邻域平均法>(3*3)#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h" /*------定义结构指针------*/struct bmphdr *hdr;//定义用于直方图变量unsigned char *bitmap,*count,*new_color; /*------main()函数编------*/ int main(){ //定义整数 i,j 用于函数循环时的,nr_pixels为图像中像素的个数int i, j ,nr_pixels,nr_w,nr_h; //定义两个文件指针分别用于提取原图的数据和生成直方图均衡化后的图像FILE *fp, *fpnew; //定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。
// argc=3; //argv[1]="test.bmp"; //argv[2]="testzf.bmp"; //参数输入出错显示/* if (argc != 3) {printf("please input the name of input and out bitmap files\n");exit(1);}*/// 获取位图文件相关信息//hdr = get_header(argv[1]);hdr = get_header("testnoise.bmp");if (!hdr) exit(1); //以二进制可读方式打开输入位图文件fp = fopen("testnoise.bmp", "rb");if (!fp) {printf("File open error!\n");exit(1);} // 文件指针指向数据区域fseek(fp, hdr->offset, SEEK_SET); //计算位图像素的个数nr_pixels = hdr->width * hdr->height;nr_w = hdr->width;nr_h = hdr->height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc((nr_w+2)*(+nr_h+2));//读取位图数据到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);//因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入count[]数组中//中心图像存入count[]for(i=nr_w+3;i<(nr_w+2)*(+nr_h+2)-nr_w-3;i++) {j=i/(nr_w+2);if(i%(nr_w+2)!=0&&(i+1)%(nr_w+2)!=0) count[i]=bitmap[i-nr_w-1-2*j]; }//填补第一排for(i=1;i<nr_w+1;i++) {count[i]=bitmap[i-1];} //填补最后一排for(i=1;i<nr_w+1;i++) {count[(nr_w+2)*(nr_h+1)+i]=bitmap[nr_w*(nr_h-1)+i-1];} //填补左边一排for(i=0;i<nr_h+3;i++) {count[i*(nr_w+2)]=count[i*(nr_w+2)+1];} //填补右边一排for(i=0;i<nr_h+3;i++){ count[(i+1)*(nr_w+2)-1]=count[(i+1)*(nr_w+2)-2];}//邻域平均3*3for(j=nr_w+3,i=0;j<(nr_w+2)*(+nr_h+2)-nr_w-3;j++) {if(j%(nr_w+2)!=0&&(j+1)%(nr_w+2)!=0)new_color[i]=(count[j]+count[j-1]+count[j+1]+count[j-nr_w-2]+count[j-1-nr_w-2]+count[j+1-nr_w-2]+count[j+nr_w+2]+count[j-1+nr_w+2]+ count[j+1+nr_w+2])/9,i++; } //结果存入bitmap[]中for (i = 0; i < nr_pixels; i++;bitmap[i]=new_color[i]; // 打开一个以输出文件名命名的文件,设为可写的二进制形式fpnew = fopen("test_lynoise.bmp", "wb+");//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);fwrite(&hdr->compress_type, 4, 1, fpnew);fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if (hdr->offset > 54)fwrite(hdr->info, (hdr->offset - 54), 1, fpnew); //直方图均衡化的数据(bitmap)赋值fwrite(bitmap, nr_pixels, 1, fpnew);//关闭fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);free(new_color);free(count);return 0;}<中值滤波>#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h"/*------定义结构指针------*/struct bmphdr *hdr;//定义用于直方图变量unsigned char *bitmap,*count,*new_color;/*------main()函数编写------*/int main(){ //定义整数 i, j 用于函数循环时的,nr_pixels为图像中像素的个数int i, j, m, n, nr_pixels,nr_w,nr_h,temp,t[9]; //定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE *fp, *fpnew; //定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可.// argc=3;// argv[1]="test.bmp";// argv[2]="testzf.bmp";//参数输入出错显示/* if (argc != 3) {printf("please input the name of input and out bitmap files\n");exit(1);}*/// 获取位图文件相关信息//hdr = get_header(argv[1]);hdr = get_header("testnoise.bmp");if (!hdr) exit(1); //以二进制可读方式打开输入位图文件fp = fopen("test.bmp", "rb");if (!fp) {printf("File open error!\n");exit(1);} // 文件指针指向数据区域fseek(fp, hdr->offset, SEEK_SET);//计算位图像素的个数nr_pixels = hdr->width * hdr->height;nr_w = hdr->width;nr_h = hdr->height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc((nr_w+2)*(+nr_h+2)); //读取位图数据到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp); //因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入count[]数组中//中心图像存入count[]for(i=nr_w+3;i<(nr_w+2)*(+nr_h+2)-nr_w-3;i++) {j=i/(nr_w+2);if(i%(nr_w+2)!=0&&(i+1)%(nr_w+2)!=0) count[i]=bitmap[i-nr_w-1-2*j]; } //填补第一排for(i=1;i<nr_w+1;i++) { count[i]=bitmap[i-1]; } //填补最后一排for(i=1;i<nr_w+1;i++) {count[(nr_w+2)*(nr_h+1)+i]=bitmap[nr_w*(nr_h-1)+i-1];} //填补左边一排for(i=0;i<nr_h+3;i++) { count[i*(nr_w+2)]=count[i*(nr_w+2)+1]; } //填补右边一排for(i=0;i<nr_h+3;i++){ count[(i+1)*(nr_w+2)-1]=count[(i+1)*(nr_w+2)-2];} //中值平均3*3for(j=nr_w+3,i=0;j<(nr_w+2)*(+nr_h+2)-nr_w-3;j++){if(j%(nr_w+2)!=0&&(j+1)%(nr_w+2)!=0){t[0]=count[j];t[1]=count[j-1];t[2]=count[j+1];t[3]=count[j-nr_w-2];t[4]=count[j-1-nr_w-2];t[5]=count[j+1-nr_w-2];t[6]=count[j+nr_w+2];t[7]=count[j-1+nr_w+2];t[8]=count[j+1+nr_w+2];for(m=0;m<9;m++)for(n=0;n<9-m;n++)if(t[n]>t[n+1]) {temp=t[n];t[n]=t[n+1];t[n+1]=temp;}new_color[i]=t[4];i++;}} //结果存入bitmap[]中for (i = 0; i < nr_pixels; i++)bitmap[i]=new_color[i]; // 打开一个以输出文件名命名的文件,设为可写的二进制形式fpnew = fopen("test_zznoise.bmp", "wb+");//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew); fwrite(&hdr->compress_type, 4, 1, fpnew); fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if (hdr->offset > 54)fwrite(hdr->info, (hdr->offset - 54), 1, fpnew); //直方图均衡化的数据(bitmap)赋值fwrite(bitmap, nr_pixels, 1, fpnew);//关闭 fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);free(new_color); free(count);return 0;。