资源下载地址:https://download.csdn.net/download/sheziqiong/85897108
资源下载地址:https://download.csdn.net/download/sheziqiong/85897108

一、要求

  • https://pan.baidu.com/s/1OoNeKcPaYOOsxgkYUcBGig;
  • 对上述低照度图像进行灰度化,计算并显示以上低照度图像的灰度直方图和离散傅里叶变换频谱幅度图;
  • 对以上低照度图像分别进行直方图均衡化和同态滤波操作,并对两种算法的最终结果进行对比;
  • 利用Matlab进行编程,核心算法需独立实现,代码注释不少于40%;

二、实验报告

任务一

  1. 计算并显示灰度直方图my_imhist

    实现步骤:

    • 调用MATLAB库函数rgb2gray将图像灰度化
    • 调用自己实现的my_imhist统计每种灰度值出现的次数,并返回概率质量函数
    • 调用MATLAB的库函数bar进行绘制

​ 图1:灰度直方图与MATLAB库函数histogram对比

  1. 计算并显示离散傅里叶变换频谱幅度图my_dft2 & my_idft2

    实现步骤:

    • 调用MATLAB库函数rgb2gray将图像灰度化
    • 调用自己实现的my_dft2将计算过程分成两部分,分别对列和对行进行计算,并且采用向量化思想,不使用for循环,极大提高了离散傅里叶变换的计算速度
    • 调用MATLAB库函数fftshift将得到的离散傅里叶变换移动到中心,并取对数,计算幅度和相角后调用imshow显示幅度谱和相位谱
    • 调用fftshift和自己实现的my_idft2进行离散傅里叶逆变换,并调用imshow显示逆变换后的图像

    尝试过程:

    (1) 最开始使用for循环实现课本上离散傅里叶变换二维形式的公式,速度非常慢,原因是该公式的时间复杂度是O(n4)O(n^4)O(n4)

    (2) 第二次尝试是将离散傅里叶拆分成分别对列和对行进行计算,理论依据是傅里叶变换的交换性,速度有了较好的提升,原因是该公式的时间复杂度是O(n2)O(n^2)O(n2)

    (3) 第三次尝试是应用向量化的思想,不再采用for循环,而是将计算过程看作是矩阵相乘,极大提高了运算速度

​ 图2:离散傅里叶变换与MATLAB库函数fft2和ifft2的效果对比

任务二

  1. 直方图均衡化my_histeq

    实现步骤:

    • 调用MATLAB库函数rgb2gray将图像灰度化
    • 调用my_imhist计算输入灰度图的概率质量函数
    • 调用MATLAB库函数cumsum计算累积分布函数并获得原图像灰度值与新图像灰度值映射关系
    • 将获得的映射关系应用在图像上,并计算新图像的概率质量函数

    思考:

    (1) 与MATLAB库函数histeq对比,发现自己实现的书上原始算法与histeq竟然有些不同,可以看到histeq整体偏暗,并且灰度值200以上似乎进行了归并,没有像my_histeq那样这么密集。我推测可能是MATLAB对histeq进行了优化,也许是直方图规定化,也许是其他优化方法

    (2) 还可以看到,虽然直方图均衡化使得该低照度图像的内容能被人眼辨认,但是也同时放大了噪声,效果并不是很理想

    (3) 直方图均衡化的一个优点是参数可以自适应,即不需要调节参数,算法会根据图像的不同而自动调节

​ 图3:直方图均衡化与MATLAB库函数histeq的效果对比

​ 图4:直方图均衡化my_histeq的效果图

  1. 同态滤波homo_filter

    实现步骤:

    • 调用MATLAB库函数rgb2gray将图像灰度化
    • 取对数,并使用my_dft2进行离散傅里叶变换
    • 调用自己实现的高斯高通滤波GHPF并作用在经离散傅里叶变换的图像上
    • 使用my_idft2进行离散傅里叶逆变换,并取指数
    • 重新调整成灰度图,使用imshow显示
      www.biyezuopin.vip
      思考:

    (1) 同态滤波的效果明显好过直方图均衡化,没有这么刺眼,也没有这么多噪声

    (2) 同态滤波的缺点是参数需要根据图像的不同来调节高通滤波器的参数,不能做到自适应

​ 图5:同态滤波与MATLAB库函数histeq的效果对比

​ 图6:同态滤波homo_filter的效果图

三、改进尝试

(1) 如果直接对原图进行直方图均衡化,虽然能使图像更明亮,但也放大了噪声;同态滤波增加了图像的亮度,也减少了噪声,但因其增加了低灰度的比例,增强效果仍然不明显

(2) 针对同态滤波与直方图均衡化单独进行图像增强时存在的不足,提出能否在频域内将同态滤波与直方图均衡化结合的想法。首先,采用同态滤波器将图像进行高低分频;再将得到的低频分量进行全局的直方图均衡化处理;最后将高频分量跟低频分量进行线性融合。算法流程图如下:

​ 图7:改进算法流程图

(3) 由于时间比较紧,我没有太多时间去优化这个算法,最终似乎效果并不是太好,所以我就没有展示效果图,这里我仅展示了一个思路

四、程序运行

直接在MATLAB中输入运行main即可,整个程序框架如下:

​ 图8:程序框架

资源下载地址:https://download.csdn.net/download/sheziqiong/85897108
资源下载地址:https://download.csdn.net/download/sheziqiong/85897108

基于MATLAB对低照度图像进行直方图均衡化和同态滤波操作相关推荐

  1. Matlab中的histeq函数——图像灰度直方图均衡化

    首先来看一下没有进行灰度直方图均衡化的图片和经过灰度直方图均衡化后的图片的对比: 左为原图,右为经过灰度直方图均衡化处理后的图片,很显然,经过处理之后的图片在对比度方面有了显著的提升,下面附上两张图片 ...

  2. 基于Matlab的火灾图像预处理

    基于Matlab的火灾图像预处理 摘 要 本文研究了在Matlab环境下如何对图像,特别是火灾图像进行预处理.预处理的过程分为两个步骤,包括火灾图像的增强和滤 波.用一些Matlab的处理实验来分析说 ...

  3. matlab数字图像处理编码实现直方图均衡化

    matlab中直方图均衡化有对应的内置函数histeq函数,其具体形式为: g=histeq(f,nlev) 参数f为输入图像,nlev是为输出图像设置的灰度级(默认为64),g为直方图均衡化后的输出 ...

  4. OpenCV:利用python来实现图像的直方图均衡化

    文章目录 1.直方图 2.直方图均衡化 3.源代码实现直方图均衡化 1.直方图 直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值. 我们使用cv2. ...

  5. MATLAB计算杨氏模量,基于MATLAB处理动态图像的杨氏模量测量方法.doc

    7A版优质实用文档 PAGE PAGE 16 7A版优质实用文档 基于MATLAB处理动态图像的杨氏模量测 量方法 黄浩钊1,陈玥琦2,李家卉3 第三军医大学学员13营,重庆,400038:2.第三军 ...

  6. 【图像增强】基于matlab萤火虫算法图像对比度增强【含Matlab源码 2142期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像增强]基于matlab萤火虫算法图像对比度增强[含Matlab源码 2142期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  7. matlab一般函数的绘制方法,基于MATLAB的函数图像绘制方法

    C DOI:10.16707~.cnki.fjpc.2017.01.084 E 晒 亍嚣 基于 MATLAB的函数图像绘制方法 张笑笑 一,童 键 z (1湖南省长沙市第一中学 湖南 长沙 410() ...

  8. 利用OpenCV的函数equalizeHist()对图像作直方图均衡化处理

    如果一幅图像的灰度值集中在某个比较窄的区域,则图像的对比度会显得比较小,不便于对图像的分析和处理. 图像的直方图均衡化可以实现将原图像的灰度值范围扩大,这样图像的对比度就得到了提高,从而方便对图像进行 ...

  9. 【图像处理】基于matlab拉普拉斯金字塔图像融合

    目录 基于matlab拉普拉斯金字塔图像融合 基于matlab拉普拉斯金字塔图像融合 MATLAB可以使用拉普拉斯金字塔图像融合技术进行图像融合,具体步骤如下: 读取两幅待融合的图像,并将它们转换成灰 ...

最新文章

  1. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)
  2. 欠拟合和过拟合学习笔记
  3. 数据库连接查询 变量 运算符
  4. jsp mysql demo_利用JSP+MYSQL实现注册+登入的demo----0001
  5. 【转】概要设计说明书
  6. C程序生成一定范围内的随机数
  7. eclipse建maven pom报错
  8. MapReduce简介和过程浅析
  9. 微服务 SpringBoot 通过jdbcTemplate配置Oracle数据源
  10. matlab2c使用c++实现matlab函数系列教程-linspace函数
  11. [转载] python 语言基础 - 字符串常用函数及操作
  12. 眉山市谷歌高清卫星地图下载
  13. 解析一个PHP木马,PHP文件上传安全检测组件
  14. Software_Reporter_Tool.exe
  15. 文件服务器s3搭建,搭建基于AWS S3的图片处理服务
  16. Hudi Timeline简析
  17. java excel 饼图_Java 在Excel中添加分离型饼图、环形图
  18. c++学习:多线程;顺序容器;智能指针
  19. Unity将世界坐标转为UI坐标
  20. 图形学创世纪:当科学照进影视与生活

热门文章

  1. MathorCup大数据挑战赛第一届A题-移动通信基站流量预测赛题解析
  2. ubuntu快捷键及Linux下一些主要目录
  3. BILIBILI 高并发实时弹幕系统那些事(项目开源、架构演变)
  4. 基于Linux的WebSphere性能调优与故障诊断
  5. 域名过期什么时候才能注册
  6. cad怎么将图层后置_cad怎么把整个图层置于底层
  7. 智能聊天机器人微信小程序
  8. 第8届泰迪杯C题问题总结
  9. project2016专业版最新密钥和下载
  10. mysql统计每半小时内的数据(查寻某段时间内的数据)