|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的去雾算法& X/ Y* J8 w; J: Q/ n$ _3 ]
# k- s$ z& E" A) o( ^. H- @% `/ w# O. k2 {- d+ m
* C1 ~( j/ d$ y
使用MATLAB进行图像的去雾操作,网上一搜,这方面的东西很多,貌似已然成为研究的一个方向,大牛辈出!
4 Q1 C) }6 O' V& b0 O3 B( K0 I
3 H0 d) W7 ?- ~* u! o) C$ a
" o1 x7 e% m; u& f/ L0 N! Z这里仅仅给出一个代码,能实现图像的去雾操作,详细的看后边有没有时间,想自己研究研究。 b5 U5 L1 h, B$ [
- ^- b0 w2 a" f7 H+ Z$ _8 s$ D# T! y4 t5 J0 V I
- function darktest(filename)
- %暗影去雾算法
- %filename------文件名或文件绝对路径
- %用法:darktest('7.png')
- close all
- clc
- w0=0.65; %0.65 乘积因子用来保留一些雾,1时完全去雾
- t0=0.1;
-
- I=imread(filename);
- figure;
- set(gcf,'outerposition',get(0,'screensize'));
- subplot(221)
- imshow(I);
- title('原始图像');
- [h,w,s]=size(I);
- min_I=zeros(h,w);
-
- %下面取得暗影通道图像
- for i=1:h
- for j=1:w
- dark_I(i,j)=min(I(i,j,: ));
- end
- end
- subplot(223)
- imshow(dark_I);
- title('dark channnel的图形');
-
- Max_dark_channel=double(max(max(dark_I))) %天空亮度
- dark_channel=double(dark_I);
- t=1-w0*(dark_channel/Max_dark_channel); %取得透谢分布率图
-
- subplot(224)
- T=uint8(t*255);
- imshow(T);
- title('透射率t的图形');
-
- t=max(t,t0);
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- I1=double(I);
- J(:,:,1) = uint8((I1(:,:,1) - (1-t)*Max_dark_channel)./t);
-
- J(:,:,2) = uint8((I1(:,:,2) - (1-t)*Max_dark_channel)./t);
-
- J(:,:,3) =uint8((I1(:,:,3) - (1-t)*Max_dark_channel)./t);
- subplot(222)
- imshow(J);
- title('去雾后的图像');
-
- end
) C, G% U9 h3 t7 U& _ 1 K% I: f2 |2 U; p$ ]8 J$ @. j. T# m
; }% J8 ~' m. q% Z3 ?1 k3 e% E! e6 ~+ P9 @ i& d& o2 J, r$ j$ j
0 H9 S) g! m. Y8 N4 D( M% P6 w1 V/ r- Z" W* [ c- l0 F5 F
|
|