【MATLAB图像处理实用案例详解(1)】—— 基于直方图优化的图像去雾技术

一、背景意义

雾霾天气往往会给人类的生产和生活带来极大不便,也大大增加了交通事故的发生概率。一般而言,在恶劣天气(如雾天、雨天等)条件下,户外景物图像的对比度和颜色会被改变或退化,图像中蕴含的许多特征也会被覆盖或模糊,这会导致某些视觉系统(如电子卡口、门禁监控等)无法正常工作。因此,从在雾霾天气下采集的退化图像中复原和增强景物的细节信息具有重要的现实意义。数字图像处理技术已被广泛应用于科学和工程领域,如地形分类系统、户外监控系统、自动导航系统等。为了保证视觉系统全天候正常工作,就必须使视觉系统适应各种天气状况。
本案例将展开对雾霾天气下的图像清晰化技术的讨论,雾天天气下的图像清晰化技术也有可能对其他恶劣天气下的图像清晰化技术的发展起到促进作用。
在这里插入图片描述

二、理论基础

2.1 空域图像増强

图像增强是指按特定的需要突出一幅图像中的某些信息,并同时削弱或去除某些不需要的信息的处理技术。
图像增强的主要作用是相对于原来的图像,处理后的图像能更加有效地满足某些特定应用的要求

根据图像处理空间的不同,图像增强基本上可分为两大类:频域处理法空域处理法

在这里插入图片描述

频域处理法的基础是卷积定理,其通过进行某种图像变换(如傅里叶变换、小波变换等)得到频域结果并进行修改的方法来实现对图像的增强处理。
空域处理法是直接对图像中的像素进行处理,一般是以图像灰度映射变换为基础并且根据图像增强的目标来采用所需的映射变换,常见的图像对比度增强、图像的灰度层次优化等处理均属于空域处理法。

2.2 直方图均衡化

直方图是图像的一种统计表达形式。对于一幅灰度图像来说,其灰度统计直方图可以反映该图像中不同灰度级出现的统计情况。一般而言,图像的视觉效果和其直方图有对应关系,通过调整或变换其直方图的形状会对图像显示效果有很大影响。

直方图均衡化主要用于增强灰度值动态范围偏小的图像的对比度。该方法的基本思想是把原始图像的灰度统计直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。
直方图均衡化也叫作直方图均匀化,就是把给定图像的直方图分布变换成均匀分布的直方图,是一种较为常用的灰度增强算法。
直方图均衡化概括起来包括以下三个主要步骤:

  • 预处理。输入图像,计算该图像直方图。
  • 灰度变换表。根据输入图像的直方图计算灰度值变换表。
  • 查表变换。执行变换x’=H(x) ,表示对步骤1中得到的直方图使用步骤2 得到的灰度值变换表进行查表变换操作,通过遍历整幅图像的每一个像元,将原始图像灰度值x 放入变换表H(x) 中,可得到变换后的新灰度值x’

图像经直方图均衡化后,将会包含更多的信息量,进而能突出某些图像特征。具有均匀分布直方图的图像,其信息量H最大。

为进行图像去雾实验,采用全局直方图均衡化、局部直方图均衡化算法来进行图像去雾实验,并选择Retinex 增强算法来作为直方图去雾算法的延伸。

三、方法选择

3.1 全局直方图算法

全局直方图均衡算法对于整幅图像的像素使用相同的直方图变换,对于那些像素值分布比较均衡的图像来说,算法的效果很好。如果图像中包括明显比图像其他区域暗或者亮的部分,在这些部分的对比度将得不到有效的增强。
直接采用整体直方图均衡化对于色彩均衡的图像的确也有较好的效果,残留的雾感较前面的方法较浓,但也去除了大部分雾。
效果展示:
在这里插入图片描述
全局直方图算法核心代码如下:

function In = RemoveFogByGlobalHisteq(I, flag)

if nargin < 2
    flag = 1;
end
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
M = histeq(R);
N = histeq(G);
L = histeq(B);
In = cat(3, M, N, L);
if flag
    figure;
    subplot(2, 2, 1); imshow(I); title('原图像', 'FontWeight', 'Bold');
    subplot(2, 2, 2); imshow(In); title('处理后的图像', 'FontWeight', 'Bold');
    Q = rgb2gray(I);
    W = rgb2gray(In);
    subplot(2, 2, 3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold');
    subplot(2, 2, 4); imhist(W, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold');
end

3.2 局部直方图算法

可以看到,全局直方图均衡化增强只是将原图像的直方图进行了均衡化,未能有效保持原始图像的局部特征,容易出现色彩失真问题。通过局部直方图处理可以在一定层度上保持原有图像的局部特征,提高去雾的效果。所谓的局部直方图处理就是选择固定尺寸的滑动窗口作用于原始图像来进行局部的处理,通过对RGB三通道进行局部直方图均衡化,然后再整合到新的图像中。
效果展示:
在这里插入图片描述
局部直方图算法核心代码如下:

function In = RemoveFogByLocalHisteq(I, flag)

g1 = GetLocalHisteq(I(:, :, 1));
g2 = GetLocalHisteq
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wendy_ya

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值