版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业广东工业大学数字图像、数字信号处理及应用实验报告 题 目 图像处理综合实验 院、系(部) 自动化学院 专业及班级 学 号 姓 名 日 期 目录 TOC o 1-3 h z u 1 实验目的理解图像平滑和锐化的基本方法;了解图像复原的基本方法;综合使用多种方法改善图像质量。2 实验要求(1)利用Photoshop之类的图像处理工具软件,尝试对Moon.bmp尽量改善图像质量。(2)综合采用各种合理的方法,编写程序(C/C+/OpenCV、MATLAB、Python均可)对
2、Moon.bmp进行图像质量改善,实现以下目标的权衡折中:a降低噪声;b. 增大对比度;c. 锐化增强。3 实验设备安装了VC6/VS2010、PS C6、MATLAB的PC机4 实验原理4.1 利用拉普拉斯算子实现图像锐化锐化处理的目的是突出图像中的细节或者增强被模糊了的细节。锐化处理可以用空间微分来完成。微分算子的响应强度与图像在该点的突变程度有关,图像微分增强了边缘和其他突变(如噪声)而消弱了灰度变化缓慢的区域。由于我们处理的是数字量,最小灰度级的变化是有限的,而且变化发生的最短距离是在两个相邻像素之间。因此,用一阶微分的差值定义一元函数f(x)的二阶微分:二元图像函数f(x,y)的拉普
3、拉斯变换定义为:离散方式:X方向:Y方向:故二维拉普拉斯数字实现由以上两个分量相加:因此拉普拉斯算子用于图像增强的基本方法如下:拉普拉斯算子处理后的图像如下:图 SEQ 图 * ARABIC 1(拉普拉斯处理图像对比图。处理前左,处理后右)4.2利用分段线性函数实现对比度扩展分段线性变换函数的对比度拉伸相对于直方图均衡(直方图均衡只能按照统计特性进行变换)可以更加灵活地控制输出灰度直方图的分布,可以有选择地拉伸某段灰度区间,以改善输出图像。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来扩展(斜率1)物体的灰度区间以改善图像;如果图像灰度集中在较亮的区域而导致图像偏亮,也可
4、以用灰度拉伸功能来压缩(斜率biHeight*pInfoHead-biWidth);for (i = 1; i biHeight - 1; i+) for (j = 1; j biWidth - 1; j+) /*做卷积*/G = pdatai*h_len+j*h2-(pdata(i-1)*h_len+j-1+pdata(i-1)*h_len+j+1+pdata(i + 1)*h_len+j-1+pdata(i+1)*h_len+j+1)*h1) -(pdata(i-1)*h_len+j+pdatai*h_len+j-1+pdata(i+1)*h_len+j +pdatai*h_len+j+1
5、)*h3);/*防止溢出*/if (G 255) ptempi*h_len + j = 255;else if (G 0) ptempi*h_len + j = 0;else ptempi*h_len + j = (BYTE)G;/*结果复制到输出*/for (i = 1; i biHeight - 1; i+) for (j = 1; j biWidth - 1; j+) pdatai*h_len + j = ptempi*h_len + j;free(ptemp);2、中值、均值滤波函数虽然最后的图像去噪算法采用的是BM3D算法,但是因为后面要把BM3D去噪算法与中值滤波算法作比较,所以在
6、这里还是给出详细的设计。中值滤波详细代码及注释如下:void medfilt(const BITMAPINFOHEADER *pInfoHead, BYTE *pdata, const DWORD h_len) int i, j, k, z, index;BYTE temp, nPixel9; /*创建临时存储空间,用于中值滤波结果*/BYTE *ptemp = (BYTE *)malloc(sizeof(BYTE)*pInfoHead-biHeight*pInfoHead-biWidth);for (i = 1;i biHeight - 1;i+) for (j = 1; j biWidth
7、 - 1; j+) /*先排列9个像素*/nPixel0 = pdata(i-1)*h_len + (j-1);nPixel1 = pdata(i-1)*h_len + j ;nPixel2 = pdata(i-1)*h_len + (j+1);nPixel3 = pdata i *h_len + (j-1);nPixel4 = pdata i *h_len + j ;nPixel5 = pdata i *h_len + (j+1);nPixel6 = pdata(i+1)*h_len + (j-1);nPixel7 = pdata(i+1)*h_len + j ;nPixel8 = pdat
8、a(i+1)*h_len + (j+1);/*找中值,这里只需找5次*/for (k = 0;k 5;k+) index = 0;for (z = 0;z 9-k;z+) if (nPixelindex nPixelz) /最大的数index = z;temp = nPixel8-k;nPixel8-k = nPixelindex;nPixelindex = temp;ptempi*h_len + j = nPixel4;/*复制结果到输出*/for (i = 1;i biHeight - 1;i+) for (j = 1; j biWidth - 1; j+) pdatai*h_len +
9、j = ptempi*h_len + j;free(ptemp);均值滤波算法的详细设计及代码:void junfilt(const BITMAPINFOHEADER *pInfoHead, BYTE *pdata, const DWORD h_len) int i, j, temp; /*创建临时存储空间,用于均值滤波结果*/BYTE *ptemp = (BYTE *)malloc(sizeof(BYTE)*pInfoHead-biHeight*pInfoHead-biWidth);for (i = 1;i biHeight - 1;i+) for (j = 1; j biWidth - 1
10、; j+) temp = 0;temp += pdata(i-1)*h_len + (j-1);temp += pdata(i-1)*h_len + j ;temp += pdata(i-1)*h_len + (j+1);temp += pdata i *h_len + (j-1);temp += pdata i *h_len + j ;temp += pdata i *h_len + (j+1);temp += pdata(i+1)*h_len + (j-1);temp += pdata(i+1)*h_len + j ;temp += pdata(i+1)*h_len + (j+1);pte
11、mpi*h_len + j = (BYTE)(temp/9);/*复制结果到输出*/for (i = 1;i biHeight - 1;i+) for (j = 1; j biWidth - 1; j+) pdatai*h_len + j = ptempi*h_len + j;free(ptemp);3、分段线性对比度增强函数因为分段线性对比度增强的详细介绍已经在实验原理部分给出,所以只给出详细代码和注释。/*指定对比度增强区间的结构体*/typedef struct adjust_rangedouble in_low;double in_high;double out_low;double
12、out_high; ADJ_RANGE;void adjust(const BITMAPINFOHEADER *pInfoHead,BYTE *pdata,const DWORD h_len, const ADJ_RANGE * ar)/*总共分成三段,三段的变换范围为:第一段:(0- in_low_c) -(0- out_low_c)第二段:(in_low_c - in_high_c)-( out_low_c - out_high_c)第三段:(in_high_c -255) -( out_high_c -255) 三段的斜率分别为: 第一段:h1 第二段:h2 第三段:h3*/const
13、BYTE in_low_c = (BYTE)ar-in_low * 255;const BYTE in_high_c = (BYTE)ar-in_high * 255;const BYTE out_low_c = (BYTE)ar-out_low * 255;const BYTE out_high_c = (BYTE)ar-out_high * 255;const double h1 = ar-out_low / ar-in_low;const double h2 = (ar-out_high - ar-out_low) / (ar-in_high - ar-in_low);const dou
14、ble h3 = (1 - ar-out_high) / (1 - ar-in_high);int i, j;double temp;for (i = 1; i biHeight - 1; i+) for (j = 1; j biWidth - 1; j+) /*分段线性增强*/if (pdatai*h_len + j in_high_c)temp = out_high_c + (pdatai*h_len + j - in_high_c)*h3;elsetemp = out_low_c + (pdatai*h_len + j - in_low_c)*h2;/*防止溢出*/if (temp 25
15、5)pdatai*h_len + j = 255;else if (temp “开始执行(不调试)”或者“Ctrl+F5”开始图像处理。4、等待4-5分钟,命令行显示“total finish!”。如图6所示。5、到工程目录下的“BM3D”夹下打开“out.bmp”查看处理结果。图 SEQ 图 * ARABIC 6由于要进行彩印,对“Moon.bmp”图像处理的结果存放于附录中。6.2 比较中值、均值、BM3D滤波信噪比使用MATLAB测试中值、均值、BM3D滤波三个算法的信噪比提高量。信噪比提高量的公式如下:其中,c(x,y)为退化图像;x(x,y)为原始图像;a(x,y)为还原图像。计算信
16、噪比提高量的代码如下:% imgx:原始图像% imgc:退化图像 % imga:还原图像function snri = snri_cal(imgx, imgc, imga) c_x = imgc - imgx; a_x = imga - imgx; S = sum(sum(c_x - mean(mean(c_x).2); N = sum(sum(a_x - mean(mean(a_x).2); snri = 10*log10(S/N);end接下来先使用MATLAB准备一幅加噪声的图片,编写的MATLAB代码如下:Img = imread(cameraman.tif);Imgn = imno
17、ise(cameraman,gaussian,0,0.002);imwrite(Imgn, cameramen.bmp);接着在VS2010环境下运行程序,分别对噪声图像“cameram.bmp”进行中值、均值、BM3D滤波处理。处理完成之后,编写代码计算信噪比提高量,代码如下:imgx = imread(cameraman.tif);%原始图像imgc = imnoise(imgx,gaussian);%退化图像imga = imread(中值滤波.bmp);%还原图像snri_cal(imgx, imgc, imga)%中值滤波的信噪比提高量imga = imread(均值滤波.bmp);
18、%还原图像snri_cal(imgx, imgc, imga)%均值滤波的信噪比提高量imga = imread(BM3D滤波.bmp);%还原图像snri_cal(imgx, imgc, imga)%BM3D滤波的信噪比提高量以上代码输出的结果如下:中值滤波均值滤波BM3D滤波信噪比提高量(db)4.90374.26815.7149从表上的数据可以看出BM3D、均值滤波、中值滤波的信噪比提高量依次递减。其中,BM3D滤波的信噪比提高量最大,所以BM3D的滤波效果比较的好。三种算法的图片如下图所示。 图 SEQ 图 * ARABIC 7(原图) 图 SEQ 图 * ARABIC 8(中值滤波)
19、 图 SEQ 图 * ARABIC 9(均值滤波) 图 SEQ 图 * ARABIC 10(BM3D滤波)从上面四个图片的对比来看,中值滤波和均值滤波效果不仅比不上BM3D滤波,而且都使图像模糊化了。所以不管从图像的信噪比提高量来看,或者从图像的处理效果来看,BM3D滤波都远远好于其他两种算法。7 结论与问题讨论7.1完成设计要求的程度设计要求:(1)利用Photoshop之类的图像处理工具软件,尝试对Moon.bmp尽量改善图像质量。(2)综合采用各种合理的方法,编写程序(C/C+/OpenCV、MATLAB、Python均可)对Moon.bmp进行图像质量改善,实现以下目标的权衡折中:a降
20、低噪声;b. 增大对比度;c. 锐化增强。完成设计要求的程度:(1)由于本人对PS的操作技术有限,在用PS对Moon.bmp进行处理时,老是感觉不是太过满意,处理结果也残差不齐。(2)综合采用各种合理的方法,编写程序C程序、MATLAB程序对Moon.bmp进行了处理。实现了:a降低噪声;b. 增大对比度;c. 锐化增强。7.2遇到的问题及解决办法问题1:普通拉普拉斯算子实现锐化增强时无法调整锐化强度。解决:在找了许多资料之后,突然发现MATLAB的锐化算子可以调整锐化强度。虽然不知道里面的原理,但是总算实现了调整锐化强度的效果。问题2:程序运行到free()函数时就崩溃。 解决:原因可能有两个:1、连续free了两次内存。 2、访问malloc的空间时,越界了。 3、free的指针与malloc时的指针位置发生了变化。问题3:在空域对图像进行卷积操作时,结果输出异常。解决:凡是涉及在空域对图像进行卷积操作,都需要先开辟一个与图像大小一致临时空间,处理完之后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 25199-2026生物柴油调合车用柴油
- 2026年秋季开学高中军训班队列训练课件
- 2026年秋季开学幼儿园中秋节主题班会课件
- 2026年秋季开学大学开学第一课(环保行动)课件
- 2026秋部编版四年级上册语文第二单元单元培优卷(B卷)
- 端到端可见性与协同规划提升供应链韧性的研究
- 发展新质生产力促进高质量发展研究
- 专业选择与学校选择决策研究
- 基于产业协同平台的制造业集群供应链抗震能力提升机制实证研究
- 2026 年静脉治疗护理质控要点及督查标准
- 2026年天津市公安辅警笔试试题(含答案)
- (2026)政工师职称考试题库及参考答案
- 2026年江苏小升初(数学)真题试卷(含答案)
- 2026年杭州市农产品冷链仓储可行性研究报告
- 箱式电阻炉操作规程操作规程
- 2022中国功能性消化不良诊治专家共识课件
- 视频拍摄制作合同
- GB/T 222-2025钢及合金成品化学成分允许偏差
- 2025年安徽省阜阳市辅警招聘考试题库及答案
- 词语题型归类-高考语文复习二轮热点题型专项训练(新高考版)
- 牛蛙饲料配方培训课件
评论
0/150
提交评论