图像去雾并与其他非物理模型进行对比


```matlab
clear
clc
close all
img=imread( 'scene1.jpg');subplot(221),imshow(uint8(img)), title('原始低照度图像”);img(::,1)=255-img(::1);
img(::,2)=255-img(:2);
img(:,:3)=255-img(: 3);
sz=size(img);
w=sZ(2);
h=sz(1);
%计算RGB取最小值后的图像darkl
dark l= zeros(h,w);
for y=1:h
for x=1:W
dark_l(y,x)= min(img(y,x,:));%计算每个像素点RGB中最小的值
end
end
kenlRatio = .03:
krnlsz = floor(max([3, w*kenlRatio, h*kenlRatio]));
dark l2 = minfilt2(dark l, [krnlsz,krnlsz]);%最小值滤波
dark 12(h,w)=0;
dark l2=uint8(dark 12);
dark channel=double(dark 12);
aa=dark channel;
hh=floor(w*h*0.001);
bb=reshape(aa,1,);%将a转换为行向量
bb=sort(bb,'descend');%将b按从大到小顺序排列。
cc=find(bb>0,hh);%找到前4个大于0(非NaN)的数的位置
dd=bb(cc(hh));%找到第4大的数
ee=aa(find(aa>dd));%较大的前3个数
[mm,nn]=find(aa>dd);%较大的前3个数对应下标
AA=fee mm nnl:
bw=zeros(h,w);
num=length(find(aa>dd));
sum潍鈔伺0卮繡人始
for y=1:h
for x=1:W
for k=1:num
if y==AA(k,2)&& x==AA(k,3)&& dark channel(y,x)==AA(k,1)bw(y,x)=255;
sum=sum+AA(k,1);
end
end
end
end
meandc=floor(sum/num);
minAtomsLight = 240:
A= min([minAtomsLight, meandc]);%计算大气光A
w0=0.9:
t=1-w0*(dark channel/A);%计算透射率
t0=0.1;
t=max(t,t0);
img d= double(img);
J= zeros(h,w,3);
J(:,:,1)= (img_d(::,1)-(1-t)*A)./t;%计算去雾后的R通道(:,:,2)= (img_d(::,2)-(1-t)*A)./t;%计算去雾后的G通道J(:,:3)= (img_d(:,:,3)-(1-t)*A)./t;%计算去雾后的B通道J=uint8(J);
J(::1)=255-J(::1);
J(::2)=255-J(::2);
J(::3)=255-J(::3);
subplot(222),imshow(J), title("基于暗原色先验的低照度图像增强”);%去雾图像imwrite(,'Lyewan.bmp');
Image=(imread('scene1.jpg'));
%读取彩色图像,提取出红、绿、蓝三个通道的像素值。
% subplot(1,3,1),imshow(lmage), title(原始图像”);
height,width,c]=size(lmage);
Rl=double(lmage(:,:,1)); Gl=double(lmage(:,:,2)); Bl=double(lmage(:..3));
%对每个通道的像素值进行高斯滤波,得到估计的光照分量。
sigma=100; filtersize=[height, widthl; gaussfilter=fspecial('gaussian,filtersize,sigma); Rlow=imfilter(Rl,gaussfilter,replicate,'conv'):
3low=imfilter(Gl,gaussfilter,'replicate','conv');low=imfilter(Bl.gaussfilter.'replicate'.'conv'):
%将估计的光照分量归一化到0到1之间,并将三个通道合并成一张彩色图像
ninRL=min(min(Rlow): minGL=min(min(Glow); minBL=min(min(Blow); maxRL=max(max(Rlow); maxGL=max(max(Glow); maxBL=max(max(Blow).
RLi=(Rlow-minRL//(maxRL-minRL):
3Li=(Glow-minGL)/(maxGL-minGL),
BLi=(Blow-minBL)/(maxBL-minBL);
i=cat(3.RLi.GLi.BLi):
% subplot(1,3,2),imshow(Li), title("估计光照分量”):
%通道的像素值进行对数变换,得到强光照下的图像,并将三个通道合并成一张彩色图像。
Rhigh=log(Rl./Rlow+1):
Shigh=log(Gl./Glow+1):
Bhigh=log(B1./Blow+1): SSRl=cat(3,Rhigh,Ghigh,Bhigh);
subplot(2,2,3),imshow(SSRl), title("单尺度Retinex增强');
Image=imread('scene1.jpg');[height width c]=size(lmage);dark l= zeros(height,width);
for y=1:height
for x=1:width
dark_l(y,x)= min(lmage(y,x,:));%计算RGB取最小值后的图像darkl
end
end
kenlRatio = .03;
krnlsz = floor(max([3, width*kenlRatio, height*kenlRatio]));dark l2= minfilt2(darkl, [krnlsz,krnlsz]);%最小值滤波
dark l2(height,width)=0;
dark channel=dark l2;
hh=floor(width*height*0.001);
bb=reshape(dark channel,1,[]);
bb=sort(bb,'descend');
cc=find(bb>0,hh);
dd=bb(cc(hh));
ee=dark channel(find(dark channel>dd));
AA=[ee];
num=length(find(dark channel>dd));
sum=0:
for k=1:num
sum=sum+AA(k);
end
meandc=floor(sum/num):
minAtomsLight = 240;
A= min([minAtomsLight, meandc]);%计算大气光A
w0=0.9: t0=0.3;%设置调节参数wO值
t=1-w0*(dark channel/A);%计算透射率t
t=max(t,tO);
img d= double(lmage);
Newlmage = zeros(height,width,3);Newmage(:,:,1)= (img_d(:,:,1)-(1-t)*A)./t;%计算去雾后的R通道Newlmage(:,:,2)=(img_d(:,:,2)-(1-t)*A)./t;%计算去雲后的G通道Newlmage(:,:,3)=(img d(:,:,3)-(1-t)*A)./t;%计算去雲后的B通道subplot(224),imshow(uint8(Newlmage)), title('去霎图像");%去雾图像

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/661689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx配置及优化

Nginx配置及优化 前言nginx.conf拆分理解上线 最近在配置Nginx的时候,偶尔一些细致的理论有些模糊,配置起来费了点功夫,今天来详细写一下我个人的理解,文章参考了一些官网和其他优秀博主的文章http://t.csdnimg.cn/GbID9。 前言 …

Java设计模式总结

《武林外传》老白曾经说过这样一句话。高手就是手里无刀,心中也无刀。 类似于设计模式,你不知不觉中已经融进你的代码中了,但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。 1:设计模式分类 总体来说设计模式分为…

小程序内的分包与数据共享

一:数据共享 小程序内的数据共享和vue当中不一样,vue当中的vue实例可以使得所有的组件都能this.store 但是小程序它只有page对象,和组件实例对象.对于vue而言,vue实例可以使得添加的组件都有. 但是page对象页面对象,不能使得页面内部有.只能使得这个页面内能访问.vue实例,会…

桌面上怎么记工作任务更加合理?能设置桌面提醒的便签软件

在快节奏的现代工作中,电脑已成为我们处理工作的主要工具。每天,我们都要面对电脑屏幕,处理大量的工作任务。为了更好地管理这些琐碎却重要的工作,将工作任务直接记录在桌面上,随时查看和调整,无疑是一种高…

自定义注解+AOP切面实现日志记录

自定义注解: Target(ElementType.METHOD)// 作用在方法上 Retention(RetentionPolicy.RUNTIME) Documented Inherited // 子类可以继承此注解 public interface OperationLog { } aop切面: Slf4j Aspect Component public class OperationAspect {Au…

【Text2SQL 论文】评估 ChatGPT 的 zero-shot Text2SQL 能力

论文:A comprehensive evaluation of ChatGPT’s zero-shot Text-to-SQL capability ⭐⭐⭐⭐ arXiv:2303.13547 这篇论文呢综合评估了 ChatGPT 在 zero-shot Text2SQL 任务上的表现。 dataset 使用了 Spider、Spider-SYN、Spider-DK、Spider-Realistic、Spider-CG…

SQL刷题笔记day6-1

1从不订购的客户 分析:从不订购,就是购买订单没有记录,not in 我的代码: select c.name as Customers from Customers c where c.id not in (select o.customerId from Orders o) 2 部门工资最高的员工 分析:每个部…

SFOS2:组件介绍

一、前言 在sailfish os application的开发过程中,几乎是困难重重,因为我暂未找到具有完整性、指导性、易懂性的开发文档,特别是组件的使用,现决定将自己的探究结果记录下来。因此,这篇文章只会具有参考价值&#xff0…

[数据集][目标检测]道路井盖下水道井盖开关闭和检测数据集VOC+YOLO格式407张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):407 标注数量(xml文件个数):407 标注数量(txt文件个数):407 标注类别…

swift中json和字典Dict或者数组相互转换,JSONSerialization的强大使用

在Swift中,你可以使用JSONSerialization类将JSON字符串转换为字典。要将 Swift 字典转换为 JSON 字符串,我们可以使用JSONSerialization类的data(withJSONObject:options:)方法。这个方法将字典转换为二进制数据,然后我们可以使用String(data…

20 VUE学习:插件

介绍 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。下面是如何安装一个插件的示例: import { createApp } from vueconst app createApp({})app.use(myPlugin, {/* 可选的选项 */ })一个插件可以是一个拥有 install() 方法的对象,也可以直接…

股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

股票实现程序化自动化交易的三个基础:获取数据、执行交易、查询账户。 以后说到策略示例的时候就不介绍接口的基础使用方法了,随便一个策略把过程写出来都会很啰嗦,尽量压缩内容吧,这些内容是面向新手的,大佬们忽略细节…

基于51单片机的酒精浓度检测仪的设计

一.硬件方案 硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号,经A/D转换器转换成数字信号后传给单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈值声光报警。电路主要由51单片机最小…

自学SPSS,有哪些教学视频或书籍推荐?

书籍推荐 经过长达八年的不断迭代与优化,SPSSAU的用户群体已经远超简单的数据分析层面,而是逐步深入到了学术研究的精髓之中。如今,无论是在SCI、EI等国际权威学术期刊,还是北大核心期刊、CSSCI等国内顶尖学术期刊上,…

Django学习

1.pycharm社区版创建django PyCharm社区版如何创建Django项目并运行_pycharm社区版打开django-CSDN博客 2.Django TemplateDoesNotExist: rest_framework 当我们使用djangorestframework框架时,首先下载pip install djangorestframework 参考博文Django Templat…

LeetCode算法题:560. 和为 K 的子数组(Java)

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], …

做视频号小店和达人对接的好,爆单少不了!

大家好,我是喷火龙。 目前,视频号是没有什么自然流量的,所以,想要出单、爆单的话,靠达人带货的方式才是最可靠的,靠达人带货是肯定要对接达人,并和达人沟通带货的。 下面给大家讲一讲应该怎么…

Vue 前端加框 给div加红色框框 js实现

实现方式&#xff1a;用getElementsByClassName、createElement、appendChild实现在原有div上添加一个新的div&#xff0c;从而达到框选效果 <template><div><el-button click"addIten">添加</el-button><el-button click"deleteIt…

云动态摘要 2024-05-29

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线&#xff0c;为回馈新老客户&#xff0c;50万token免费送&#xff0c;开通服务即领取&#xff01; 云服…

摩尔线程MTT S4000 AI GPU助力30亿参数大模型训练,性能比肩英伟达同类解决方案

中国国产GPU制造商摩尔线程(Moore Threads)在AI加速器领域取得了显著进展&#xff0c;其最新推出的MTT S4000 AI GPU在训练大规模语言模型时表现突出&#xff0c;据称相较于其前代产品有着显著的性能提升。根据cnBeta的报道&#xff0c;搭载S4000 GPU的全新“酷鹅千卡智能计算集…