Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题
生活随笔
收集整理的這篇文章主要介紹了
Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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); %計算分塊darkchannelfor j=1+win_size:w-win_sizefor i=win_size+1:h-win_sizem_pos_min = min(I(i,j,:));for n=j-win_size:j+win_sizefor m=i-win_size:i+win_sizeif(win_dark(m,n)>m_pos_min)win_dark(m,n)=m_pos_min;endendendendend%選定精確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:hfor cj=1:wif(rem(ci-8,15)<1)if(rem(cj-8,15)<1)win_b(ci*w+cj)=win_t(ci*w+cj);endendend 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:hfor n=1:winten(m,n)=mean(I(m,n,:));endend 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:單幅圖象的暗原色先驗去霧改進算法
?
?
總結
以上是生活随笔為你收集整理的Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BlockChain:互联网与区块链之间
- 下一篇: Matlab:绘制简单能量的接收机工作特