暗通道去雾中存在的一些问题

文章介绍了暗通道数学模型在图像去雾中的应用,包括如何计算大气光感值和透射率。实验结果显示,暗通道对于有雾图像和无雾图像有不同的响应。为了解决相关问题,提出了约束下的暗通道方案,通过调整滤波核大小和使用L1范式约束透射率。此外,文章还探讨了特征融合的方法,利用卷积神经网络进行特征提取和重构,以实现图像质量的提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、暗通道数学模型:

I(x)=J(x)t(x)+A(1−t(x))I(x)=J(x)t(x)+A(1-t(x)) I(x)=J(x)t(x)+A(1t(x))

其中: I(x) 是输入的原始图像;J(x)是待输出的去雾图像 ;A 是大气光感值 ;t(x) 是透射率;修正值W=0.95

大气光感值A=暗通道中亮度前0.1值的位置上寻找原图中该点亮度最大的值大气光感值A=暗通道中亮度前0.1值的位置上寻找原图中该点亮度最大的值大气光感值A=暗通道中亮度前0.1值的位置上寻找原图中该点亮度最大的值

透射率t(x)=max(1−wmin(min(I(x)/A)),0.1)透射率t(x)=max(1-w min(min(I(x)/A)),0.1)透射率t(x)=max(1wmin(min(I(x)/A)),0.1)

J(x)=A+(I−A)/t(x)J(x)=A+(I-A)/t(x)J(x)=A+(IA)/t(x)

二、实验结果

请添加图片描述

通过继续实验发现了如下问题

1.暗通道探究

请添加图片描述
请添加图片描述
1.对于有雾图像,暗通道保持一定的亮度;对于色彩鲜艳无光点图像暗通道几乎为黑色或亮度很低

2.对于天空、光源等有光点的图像,即使无雾暗通道也保值高亮度

2.在局部区域有雾图片中的滤波核探究

滤波核=2:
在这里插入图片描述

滤波核=5:
在这里插入图片描述

滤波核=15
在这里插入图片描述

3.约束下的暗通道方案解决(2)问题

针对该问题,Meng提出了一种约束下的暗通道,其中:

大气估计A=对三通道各自进行最小值滤波,然后取各通道中最大的值为A分量大气估计A=对三通道各自进行最小值滤波,然后取各通道中最大的值为A分量大气估计A=对三通道各自进行最小值滤波,然后取各通道中最大的值为A分量

通过加入边界C0和C1限制J(x)通过加入边界C0和C1限制J(x)通过加入边界C0C1限制J(x)

加入L1范式限制透射率t,通过引入μ,使其μ和t交替优化直到收敛加入L1范式限制透射率t,通过引入μ,使其μ和t交替优化直到收敛加入L1范式限制透射率t,通过引入μ,使其μt交替优化直到收敛

三、idea-特征融合

通过对于图像不同的滤波核求出不同A,部分代码如下:


dark = cv2.erode(dc,np.ones((sz,sz))) # 偏暗
# -------------------------------------------------------------
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (sz, sz))  # 偏亮
dark = cv2.erode(dc, kernel)

A越高图像越暗;A越低图像越亮

通过简单的卷积神经网络学习对方图片中的特征然后在自身进行特征重构,然后再将两张图片进行特征融合。实验结果如下:
在这里插入图片描述


                   (左 A偏高原图        中 特征融合后原图        右 A偏低原图)

特征提取网络模型如下:

class Encoder(nn.Module):
    def __init__(self):
        super(Encoder, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
        self.relu = nn.ReLU(inplace=True)

    def forward(self, x):
        x = self.conv1(x)
        x = self.relu(x)
        return x


class Decoder(nn.Module):
    def __init__(self):
        super(Decoder, self).__init__()
        self.conv2 = nn.Conv2d(64, 3, kernel_size=3, stride=1, padding=1)
        self.tanh = nn.Tanh()

    def forward(self, x):
        x = self.conv2(x)
        x = self.tanh(x)
        return x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值