Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题

xiaoxiao2021-02-28  24

Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题

 

 

目录

输出结果

实现代码

代码下载


 

 

 

输出结果

 

实现代码

%单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题,matlab代码注解详细,能很好地帮助理解算法过程。 clc; clear all; img_name='jiedao.jpg'; % 原始图像 I=double(imread(img_name))/255; % 获取图像大小 [h,w,c]=size(I); win_size = 7; img_size=w*h; figure, imshow(I); win_dark=ones(h,w); %计算分块darkchannel for j=1+win_size:w-win_size for i=win_size+1:h-win_size m_pos_min = min(I(i,j,:)); for n=j-win_size:j+win_size for m=i-win_size:i+win_size if(win_dark(m,n)>m_pos_min) win_dark(m,n)=m_pos_min; end end end end end %选定精确dark value坐标 % win_b = zeros(img_size,1); figure, imshow(win_dark); win_t=1-0.95*win_dark; win_b=zeros(img_size,1); for ci=1:h for cj=1:w if(rem(ci-8,15)<1) if(rem(cj-8,15)<1) win_b(ci*w+cj)=win_t(ci*w+cj); end end end end %显示分块darkchannel %figure, imshow(win_dark); neb_size = 9; win_size = 1; epsilon = 0.000001; %指定矩阵形状 indsM=reshape(1:img_size,h,w); %创建稀疏矩阵 D=spdiags(win_b(:),0,img_size,img_size); lambda=1; x=(A+lambda*D)\(lambda*(win_b(:).*win_b(:))); %去掉0-1范围以外的数 alpha=max(min(reshape(x,h,w),1),0); figure, imshow(alpha); % ************************************************** % 自动获取大气光步骤,A为最终大气光的值 % ************************************************** range=ceil(img_size*0.1);%取暗原色中最亮的%1的点数 radi_pro=zeros(range,1); %用于记录最亮点内对应图片点象素的三个通道的颜色强度 for s=1:range [a,b]=max(win_dark); [c,d]=max(a); b=b(d); m=sparse(b,d,1,h,w); %b,d为最亮值的坐标 win_dark=win_dark-c.*m; %消去选出的最大值 radi_pro(s)=sum(I(b,d,:)); %最大值对应象素三通道求和 end A=max(radi_pro)/3;%大气光的值 % ************************************************** % 算法改进步骤,可修正天空透射率以减小明亮部分的失真率 % ************************************************** inten=zeros(h,w); for m=1:h for n=1:w inten(m,n)=mean(I(m,n,:)); end end k=70; k=zeros(h,w)+k/255; %容差 % A=220/255; cha=abs(inten-A); %差限 alpha=min(max(k./cha,1).*max(alpha,0.1),1); %算法改进关键部分 figure,imshow(alpha); % *************************************************** alpha=repmat(alpha,[1,1,3]); dehaze=(I-A)./alpha+A; figure, imshow(dehaze);

 

代码下载

源代码下载地址:Matlab:单幅图象的暗原色先验去雾改进算法

 

 

一个处女座的程序猿 认证博客专家 华为杯研电赛一等 华为研数模一等奖 国内外AI竞十 人工智能硕博生,目前兼职国内外多家头部人工智能公司的AI技术顾问。拥有十多项发明专利(6项)和软件著作权(9项),多个国家级证书(2个国三级、3个国四级),先后获得国内外“人工智能算法”竞赛(包括国家级、省市级等,一等奖5项、二等奖4项、三等奖2项)相关证书十多个,以上均以第一作者身份,并拥有省市校级个人荣誉证书十多项。正在撰写《人工智算法最新实战》一书,目前已37万字。
转载请注明原文地址: https://www.6miu.com/read-2500056.html

最新回复(0)