当前位置: 首页 > news >正文

关于数字信号与图像处理——基于Matlab的图像增强技术

本篇博客是在做数字信号与图像处理实验中的收获。

具体内容包括:根据给定的代码放入Matlab中分别进行两次运行测试——比较并观察运行后的实验结果与原图像的不同点——画出IJ的直方图,并比较二者差异。接下来会对每一步进行具体讲解。


题目:

①给定以下代码,观察实验结果,写出和原图像有什么不同之处

clear;
I = imread('tire.tif');
J = histeq(I);
imshow(I)
figure, imshow(J)
imhist(I,64)
figure; imhist(J,64)

②输入以下代码,再次比较I、J两幅图像的差别,写出其原因

I=imread('pout.tif');
J=histeq(I);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);

③画出I、J的直方图,写出两者的差别


一、第一次代码

①将题目给定的代码放入Matlab运行测试

②代码运行后,直方图均衡化函数(histeq)会对图像进行处理,目的是增强图像的对比度,使图像的灰度值分布更加均匀。运行结果如下

③原图像与均衡化后的图像的区别

在原始图像中,图像的灰度值只集中在某些范围内,导致图像的对比度较低;但是通过直方图均衡化后,灰度值的分布变得更加均匀,图像的对比度有所增强,尤其在图像亮度较低或者较高的区域,均衡化处理可以使细节更加清晰,亮部和暗部的细节处理更加明显。

二、第二次代码

①将题目给定的代码放入Matlab运行测试

②同上,也是利用histeq函数对图像进行直方图均衡化,代码运行结果如下

③原图像与均衡化后的图像的区别

同样的,直方图均衡化算法通过调整灰度级的映射关系,使得像素的灰度值分布尽可能地拉伸到全范围,均衡化后图像对比度增强,原本暗淡的部分变亮,图像整体更加清晰。

三、二者直方图差异

原始图像的直方图较为集中,说明大部分像素的灰度值集中在某一小范围内,造成图像的对比度较低;而均衡化后的直方图会更加均匀,灰度值的范围在0到255,分布得更加广泛,所以图像的对比度增强,细节更加明显。

四、学习小结

1.遇到的问题及解决

①在最开始读取图像的时候,没有注意要将图像文件在电脑上的路径输入完整,导致无法读取图像,编译失败。在相对路径无法读取后换成了绝对路径,图像读取成功。例如I=imread('C:\Users\生瓜蛋子\Desktop\tire.tif');

②直方图均衡化部分,由于我测试中选择的图像是single类型,而Matlab默认处理类型是png/jpg,二者类型不相等导致无法进行均衡化,此时则需要通过I=uint8(I),将图像类型转化为uint8来确保图像类型匹配。

2.体会和收获

在测试中比较棘手的是图像的维度和数据类型的处理。最开始以为维度都是默认的,没有想到要先降维度转化为一致后才能进行匹配,在这上面费了很多心思,尤其是处理彩色图像时,需要特别注意转换成灰度图像。测试中有些图像经过直方图均衡化后效果并不显著,以为是函数的参数没有选择好,也折腾了很久,后来问了舍友才发现其他人处理后的图像变化也不大,其实是原图对比度已经很高了,所以处理后变化不会很大。

这个问题让我认识到,不同的图像增强方法适用于不同的应用场景,在不同情况下图像增强方法的选择很重要。直方图均衡化主要适用于全局对比度增强,而其他方法如自适应直方图均衡化、锐化、边缘增强等则适用于局部细节增强、噪声去除和图像清晰度的提高。针对上面原本对比度已经很高的图像,可以将直方图均衡化升级为自适应直方图均衡化,或者使用更加高级的卷积滤波等等。在实际应用中,可以根据具体需求选择合适的图像增强方法来提高图像质量。


文章转载自:

http://3ciWxUv4.qfyjh.cn
http://bYuKfbGn.qfyjh.cn
http://PxVcIECm.qfyjh.cn
http://11CcJHob.qfyjh.cn
http://03qZ42tW.qfyjh.cn
http://JsXjHXxH.qfyjh.cn
http://cKnFDc38.qfyjh.cn
http://Q5mGI3Hc.qfyjh.cn
http://UeI09jwr.qfyjh.cn
http://dV5Wpq5i.qfyjh.cn
http://lBqE6ivr.qfyjh.cn
http://9MhakrZn.qfyjh.cn
http://NzzPGeI4.qfyjh.cn
http://9rf8UvB4.qfyjh.cn
http://ZUgm05Le.qfyjh.cn
http://cbz2vhmc.qfyjh.cn
http://HVUEqegD.qfyjh.cn
http://yJ3UHOF2.qfyjh.cn
http://dMOHVJp8.qfyjh.cn
http://esOz1zg2.qfyjh.cn
http://gkOsbSkp.qfyjh.cn
http://gobj3qbn.qfyjh.cn
http://99OCryrM.qfyjh.cn
http://NkFCJMdz.qfyjh.cn
http://mEV2HMFs.qfyjh.cn
http://U7pL7PLw.qfyjh.cn
http://q3TVzIxB.qfyjh.cn
http://WjvdCreX.qfyjh.cn
http://dBobL1oL.qfyjh.cn
http://3PuMzRX8.qfyjh.cn
http://www.dtcms.com/a/142815.html

相关文章:

  • vue3 watch和watchEffect 的用法和区别
  • 【T型三电平仿真】SVPWM调制
  • MCS-51单片机汇编语言编程指南
  • 黑马商城(五)微服务保护和分布式事务
  • PHP异常处理__RuntimeException运行时错误
  • ZLMediaKit流媒体服务器
  • c++:线程(std::thread)
  • PHP中的ReflectionClass讲解【详细版】
  • GPT-SoVITS 使用指南
  • Linux网络服务之防火墙
  • Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结
  • (附邀请码)探秘扣子空间:排盘优美,魅力无限
  • C#学习第17天:序列化和反序列化
  • 数据结构0基础学习堆
  • PHP获取大文件行数
  • 实现Azure Function安全地请求企业内部API返回数据
  • springAi---智能客服
  • Python语法系列博客 · 第4期[特殊字符] 函数的定义与使用:构建可复用的模块
  • 机器学习误差图绘
  • SEO长尾关键词优化实战
  • JAVAEE(网络原理—UDP报头结构)
  • 一个 CTO 的深度思考
  • Vue+Notification 自定义消息通知组件 支持数据分页 实时更新
  • pycharm中怎么解决系统cuda版本高于pytorch可以支持的版本的问题?
  • 【Linux篇】探索进程间通信:如何使用匿名管道构建高效的进程池
  • 洛谷P3373线段树详解【模板】
  • 如何优雅地为 Axios 配置失败重试与最大尝试次数
  • 掌握 MySQL:从命令行操作到数据类型与字段管理
  • Windows上安装FFmpeg的详细指南
  • 树莓派超全系列教程文档--(33)树莓派启动选项