MATLAB图像去雾系统

devtools/2024/10/11 8:54:43/

  • 课题介绍

雾霾,它会使大气的能见度降低,景物图像发生退化,在雾霾下拍摄的图像内容模糊,对比度下降,这将会严重影响人们的行车系统,卫星系统,导航系统等。目前,拍摄器材成本还是比较高昂,另外又得益于计算机技术的迅猛发展,计算机技术的运算速度越来越快,图像处理系统的价格日益下降,随着计算机视觉与图像处理技术的快速发展,户外视觉系统的研究与应用也在飞速增长。从而图像处理技术得以广泛用于科学和工程领域,为了保证视觉系统全天候正常工作,就必须使系统适应各种天气状况,而雾霾下图像对比度和颜色的会发生退化,导致这些系统无法正常工作。因此,如果有一套行之有效的软件系统,可以改善图像质量现在迫在眉睫。

该课题是基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择局部直方图均衡化,全局直方图均衡化,Retinex算法,通过对比处理前、后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经整明,具有均匀分布直方图的图像,其信息量是最大的。

  • 算法介绍

全局直方图均衡化:通俗地理解就是,不管三七二十一,直接强行对彩色图像的R,G,B三通道颜色进行histeq均衡处理,然后进行三通道重组;

局部直方图均衡化:设置一个固定大小的滑块,分别对彩色图像进行R,G,B三通道进行逐个像素地平滑处理,然后重组三通道,当然这样做的,虽然实现了图像的去雾效果,但是以部分像素曝光作为牺牲补偿。

Retinex算法:通俗地讲就是,分离R,G,B三通道,对每个通道进行卷积滤波。

  • GUI设计图(学习好GUI,有助于毕业后从事UI界面设计类工作,如深圳创维,康佳,彩虹电视等需要大量该类岗位,适合女孩子居多,该类工作居于程序员和文员之间

                              GUI界面设计图

GUI制作说明:GUI是MATLAB的人机交互式GUI界面,有GUI界面,所有操作可在一个界面上完成,可以为毕设增分不少。GUI可在MATLAB命令行窗口输入guide回车快速打开,GUI常用的控件有axes,edit,putton,text几个组件,不同组件之间通过回调函数来进行连接,触发操作,可教学GUI制作,以及友情推荐同类岗位工作。

  • 代码附录

1、图像载入

[name,path]=uigetfile({'*.jpg';'*.bmp';'gif'},'载入图像');

    if isequal(name,0)|isequal(path,0)

        errordlg('没有选中文件噢','出错');

        return;

    else

        Img1=imread([path,name]);  %获取位置

        axes(handles.axes1);%axes表示获取位置,这里选取的位置为axes1;        

        imshow(Img1); %显示图像

        title('原图', 'FontWeight', 'Bold');     

       guidata(hObject,handles) %更新结构体;

        save('Img1');  %保存变量

End

2、算法选择

pnum=get(handles.way,'value');%下拉框的值

switch pnum

    case 1

        handles.Img2 = quanju(handles.Img1, 0);%执行RemoveFogByGlobalHisteq.m这个子函数

        axes(handles.axes2); imshow(handles.Img2, []);%结果图handles.Img2显示在axes2中

        guidata(hObject, handles);

        set(handles.edit1, 'String', ...

    '全局直方图算法。');%将何种方法显示在edit框里

        save('handles.Img2');%保存下来

    case 2

       handles.Img2 = jubu(handles.Img1, 0);

       axes(handles.axes2); imshow(handles.Img2, []);

       guidata(hObject, handles);

       set(handles.edit1, 'String', ...

    '局部直方图均算法。');

       save('handles.Img2');

    case 3

       handles.Img2 = Retinex(handles.Img1, 0);

       axes(handles.axes2); imshow(handles.Img2, []);

       guidata(hObject, handles);

       set(handles.edit1, 'String', ...

    'RETINEX算法。');

       save('handles.Img2');

    otherwise

end

title('去雾图', 'FontWeight', 'Bold');

3、直方图

Q = rgb2gray(handles.Img1);

W = rgb2gray(handles.Img2);

axes(handles.axes3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold');

axes(handles.axes4); imhist(W, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold');

  • 预期效果图

                                Ps预期效果图

      


http://www.ppmy.cn/devtools/124087.html

相关文章

Elasticsearch Suggester

Elasticsearch里设计了4 种类别的 Suggester Term Suggester:词条建议器。对给输入的文本进进行分词,为每个分词提供词项建议。Phrase Suggester:短语建议器,在term的基础上,会考量多个term之间的关系Completion Sugg…

Selenium WebDriver和Chrome对照表

PS:我的没下载WebDriver 也没配置环境变量 也能用Selenium 网上有说把WebDriver放到chrome的安装目录并将路径配到path中【可能之前用playwright下载过】 查看浏览器版本号 在浏览器的地址栏,输入chrome://version/,回车后即可查看到对应版…

Pikachu- Over Permission-垂直越权

以admin 账号登陆,添加一个用户; 把添加用户的这个请求发送到 repeater; 退出admin,使用普通用户pikachu登陆; 只有查看权限; 使用pikachu 用户的认证信息,替换repeater处管理员创建用户请求的…

【黑马点评】 使用RabbitMQ实现消息队列——1.Docker与RabbitMQ环境安装

黑马点评中,使用基于Redis的Stream实现消息队列,但是Strema已经不太常用。在此修改为使用RabbitMQ实现消息队列。主要包括RabbitMQ的环境准备(Docker的下载与安装)以及如何修改黑马点评中的代码。 【黑马点评】使用RabbitMQ实现消…

jmeter学习(4)提取器

同线程组https://blog.csdn.net/vikeyyyy/article/details/80437530 不同线程组 在JMeter中,正则表达式提取的参数可以跨线程组使用。 通过使用Beanshell后置处理器和属性设置函数,可以将提取的参数设置为全局变量,从而在多个线程组之间共享…

解锁 Python 嵌套字典的奥秘:高效操作与实战应用指南

文章目录 前言🍀一、 什么是 Python 字典?1.1 字典的语法 🍀二、 字典的基本操作2.1 字典的创建2.2 访问字典中的值2.3 添加或修改键值对2.4 删除字典中的键值对 🍀三、 字典的遍历操作3.1 遍历字典的键3.2 遍历字典的值3.3 同时遍…

Vue 脚手架学习

1.使用 Vue 脚手架 1.1 初始化脚手架 1.1.1 具体步骤 第一步(仅第一次执行):全局安装vue/cli。 npm install -g vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项目 vue create xxxx 第三步:启…

【30天玩转python】最后复习与总结

最后复习与总结 复习要点 在过去的 30 天中,我们从基础到高阶全面学习了 Python 编程,涵盖了各种实用的编程技巧与概念,以下是对本次学习的主要复习点: 1. Python 基础 Python 简介与安装:我们首先了解了 Python 的发展历史、适用场景以及如何在不同操作系统上安装 Pyth…