对于图像去雾领域的研究者来说,何凯明博士的“暗通道先验(DCP)”可谓是奉若圭臬,接触这个概念一年了,但一直没有深挖,一直都是“拿来主义”,看大家粗略地一概而过,今天一时兴起,想着小搞一波,咱们就稍微深入一点,看看这个神奇的“暗通道”到底是个什么东西。
先来一段经典的代码吧,何博士的基于暗通道先验的单幅图像去雾中的部分代码,本人做了详细的注释,应该是可以看懂的:
clear all;
I=imread('xxxx\dehazing.png'); %读取图片
I=double(I); %将读入图像I的uint8数据转换为double类型的数据
I=I./255; %将像素值转换到0~1之间
dark=darkfunction(I);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(dark); %展示雾图和对应的暗通道
function [dark] =darkfunction(I)
R=I(:,:,1); %将I的第一层赋值给R,下面的G、B分别为I的第二、三层
G=I(:,:,2); %三个参数分别代表行、列和层
B=I(:,:,3);
[m,n]=size(R); %size求取矩阵大小,返回其行列值,即m、n
a=zeros(m,n); %zeros返回 m x n 大小的零矩阵
for i=1:m %i从1开始一直循环到m
for j=1:n
a(i,j)=min(R(i,j),G(i,j));
a(i,j)=min(a(i,j),B(i,j));
end;
end;
本文介绍了图像去雾中的暗通道先验(DCP)概念,探讨了暗通道的定义及其求取过程。通过代码示例展示了如何在MATLAB中计算暗通道,并解释了最小值滤波的作用。此外,文章对比了有雾图像与清晰图像的暗通道效果,帮助读者理解暗通道在图像去雾中的应用。
最低0.47元/天 解锁文章
1632

被折叠的 条评论
为什么被折叠?



