图像去雾(一般)

来源:互联网 发布:淘宝先装修后上架 编辑:程序博客网 时间:2024/04/30 23:57

转自:http://blog.csdn.net/sjzcandy/article/details/5810700(原创地址不详)


正文:


zhuan:关于cvpr2009的best paper图像去雾及其另一matlab实现


这篇论文是讲风景图片去雾的, 主要特点是方法简单, 而效果却不错

在作者主页那里有论文原文, 还有一个ppt不错:

http://personal.ie.cuhk.edu.hk/~hkm007/cvpr09/cvpr09slides.pdf

看完ppt,我写过一个简单的matlab实现, 其中的soft matting优化没写, 谁有兴趣写一个共享一下哈..

贴代码吧, 很简单滴..., 如有理解上的错误和bug, 欢迎指正..

clear

clc

close all

kenlRatio = .01;

image_name = '18.jpg';

img=imread(image_name);

sz=size(img);

w=sz(2);

h=sz(1);

dc = zeros(h,w);

for y=1:h

    for x=1:w

        dc(y,x) = min(img(y,x,:));

    end

end

figure, title('src')

imshow(uint8(img))

figure, title('Min(R,G,B)')

imshow(uint8(dc))

krnlsz = floor(max([3, w*kenlRatio, h*kenlRatio]))

dc2 = minfilt2(dc, [krnlsz,krnlsz]);

dc2(h,w)=0;

    

figure, title('After filter ')

imshow(uint8(dc2))

t = 255 - dc2;

figure, title('t')

imshow(uint8(t))

t_d=double(t)/255;

A = min([240, max(max(dc2))])

J = zeros(h,w,3);

img_d = double(img);

J(:,:,1) = (img_d(:,:,1) - (1-t_d)*A)./t_d;

J(:,:,2) = (img_d(:,:,2) - (1-t_d)*A)./t_d;

J(:,:,3) = (img_d(:,:,3) - (1-t_d)*A)./t_d;

figure, title('J')

imshow(uint8(J))

imwrite(uint8(J), ['_', image_name])

上几张图把, 感觉我的这个实现效果不大好......

zhuan:关于cvpr2009的best paper图像去雾及其另一matlab实现  - drj08 - 无敌小Q

原图

zhuan:关于cvpr2009的best paper图像去雾及其另一matlab实现  - drj08 - 无敌小Q

增强后的图, 简直是"水变油"...囧

0

0

0

minfilt2在这里

http://www.mathworks.com/matlabcentral/fileexchange/1358