news 2026/3/26 8:25:04

图像增强与去雾:常用算法集合及Matlab实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像增强与去雾:常用算法集合及Matlab实现

图像增强,图像去雾,常用算法集合,Matlab实现。 包括:直方图算法,Retinex系列算法(SSR,MSR,MSRCR),暗通道先验算法。 代码都已调试好,可直接输入图像出结果。 去雾效果对比如图所示。

在图像处理领域,图像增强和去雾是两个非常重要的研究方向。图像增强旨在提升图像的视觉质量,让图像看起来更加清晰、丰富;而图像去雾则是为了从雾天等低能见度条件下拍摄的图像中恢复出清晰的场景。今天就来给大家分享一些常用的图像增强和去雾算法及其Matlab实现。

直方图算法

直方图算法是一种简单但有效的图像增强方法。它通过重新分配图像的灰度值,使图像的灰度分布更加均匀,从而提升图像的对比度。

% 读取图像 img = imread('input.jpg'); % 判断图像是否为彩色图像 if size(img, 3) == 3 img = rgb2gray(img); end % 计算直方图 histogram = imhist(img); % 直方图均衡化 enhanced_img = histeq(img); % 显示原始图像和增强后的图像 subplot(1, 2, 1); imshow(img); title('原始图像'); subplot(1, 2, 2); imshow(enhanced_img); title('直方图均衡化后的图像');

在这段代码中,首先读取图像,如果是彩色图像则将其转换为灰度图像。然后通过imhist函数计算图像的直方图,再利用histeq函数进行直方图均衡化,最后将原始图像和增强后的图像显示出来对比效果。直方图均衡化通过拉伸灰度级范围,将原本集中在某些灰度区间的像素重新分布到整个灰度范围内,这样就增加了图像的对比度。

Retinex系列算法

SSR(单尺度Retinex算法)

Retinex理论的基本思想是将图像的亮度信息和反射率信息分离,通过增强反射率信息来实现图像增强。SSR算法是Retinex算法的一种简单实现。

function enhanced_img = SSR(img, sigma) % 高斯滤波 blurred_img = imgaussfilt(img, sigma); % 计算对数域的差值 enhanced_img = log10(img + 1) - log10(blurred_img + 1); % 转换回线性域并归一化 enhanced_img = 255 * (enhanced_img - min(enhanced_img(:))) / (max(enhanced_img(:)) - min(enhanced_img(:))); enhanced_img = uint8(enhanced_img); end

这里SSR函数接收输入图像img和高斯滤波的标准差sigma。首先利用imgaussfilt对图像进行高斯滤波,模拟人眼对不同尺度的响应。然后在对数域计算原图像与滤波后图像的差值,最后将结果转换回线性域并归一化到0 - 255的范围,得到增强后的图像。

MSR(多尺度Retinex算法)

MSR算法结合了多个不同尺度的高斯滤波,以获取更丰富的图像细节。

function enhanced_img = MSR(img, sigmas) num_sigmas = length(sigmas); msr_result = zeros(size(img)); for i = 1:num_sigmas blurred_img = imgaussfilt(img, sigmas(i)); msr_result = msr_result + log10(img + 1) - log10(blurred_img + 1); end msr_result = msr_result / num_sigmas; enhanced_img = 255 * (msr_result - min(msr_result(:))) / (max(msr_result(:)) - min(msr_result(:))); enhanced_img = uint8(enhanced_img); end

此函数MSR接收图像img和一个包含多个标准差的数组sigmas。通过循环对不同尺度的高斯滤波结果进行累加,再平均得到最终的增强结果,相比SSR,它能更好地保留图像不同尺度的细节。

MSRCR(多尺度Retinex颜色恢复算法)

MSRCR算法在MSR的基础上增加了颜色恢复的功能,使得增强后的图像颜色更加自然。

function enhanced_img = MSRCR(img, sigmas, alpha, beta) num_sigmas = length(sigmas); msr_result = zeros(size(img)); for i = 1:num_sigmas blurred_img = imgaussfilt(img, sigmas(i)); msr_result = msr_result + log10(img + 1) - log10(blurred_img + 1); end msr_result = msr_result / num_sigmas; % 颜色恢复 intensity = mean(img, 3); color_restoration = alpha * log10(beta * img./ intensity(:, :, ones(1, 3)) + 1); enhanced_img = msr_result.* color_restoration; enhanced_img = 255 * (enhanced_img - min(enhanced_img(:))) / (max(enhanced_img(:)) - min(enhanced_img(:))); enhanced_img = uint8(enhanced_img); end

这里在MSR的基础上,通过计算图像的亮度信息intensity,并利用颜色恢复系数alphabeta来调整图像的颜色,使得增强后的图像不仅细节丰富,颜色也更加逼真。

暗通道先验算法

暗通道先验算法是一种经典的图像去雾算法。其核心思想是在大多数非天空的局部区域里,至少有一个颜色通道会有很低的值,这些区域就构成了暗通道。

function [J, t] = dehaze(img, omega, w) % 暗通道计算 dark_channel = minChannel(minFilter(img, w)); % 大气光估计 [~, I] = sort(dark_channel(:), 'descend'); num_pixels = numel(dark_channel); top_pixels = round(num_pixels * 0.1); atm_light = mean2(reshape(img(I(1:top_pixels), :), [], 3)); % 透射率估计 t = 1 - omega * dark_channel / atm_light(1); % 透射率优化 t = imguidedfilter(img, t); t(t < 0.1) = 0.1; % 去雾图像计算 J = zeros(size(img)); for k = 1:3 J(:, :, k) = (img(:, :, k) - atm_light(k))./ max(t, 0.1) + atm_light(k); end J = uint8(J); end function min_ch = minChannel(img) min_ch = min(img, [], 3); end function img_filtered = minFilter(img, w) img_padded = padarray(img, [w w], 'replicate'); img_filtered = zeros(size(img)); for k = 1:size(img, 3) img_filtered(:, :, k) = ordfilt2(img_padded(:, :, k), 1, ones(2 * w + 1)); end img_filtered = img_filtered(w + 1:end - w, w + 1:end - w, :); end

在这段代码中,dehaze函数实现了暗通道先验算法的主要流程。首先通过minChannelminFilter函数计算暗通道,然后估计大气光atm_light,接着计算透射率t并进行优化,最后根据透射率和大气光恢复出去雾后的图像J

图像增强,图像去雾,常用算法集合,Matlab实现。 包括:直方图算法,Retinex系列算法(SSR,MSR,MSRCR),暗通道先验算法。 代码都已调试好,可直接输入图像出结果。 去雾效果对比如图所示。

以上这些算法在图像增强和去雾方面都有各自的特点和优势,去雾效果对比如图所示(这里假设已经有相应的对比图展示)。通过Matlab的实现,我们可以方便地应用这些算法来处理实际的图像,提升图像的质量和清晰度。希望大家在实际项目中能够灵活运用这些算法,获取满意的图像处理效果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 12:55:47

国内iPaaS主流厂商推荐哪家好(最新专业深度测评)

在企业数字化转型进入规模化落地的2025年&#xff0c;iPaaS&#xff08;集成平台即服务&#xff09;已从“可选工具”升级为“数字化基座”&#xff0c;成为打通系统数据孤岛、实现业务自动化的核心支撑。本次测评聚焦国内主流iPaaS系统集成平台&#xff0c;旨在通过客观量化分…

作者头像 李华
网站建设 2026/3/23 1:54:40

神马影视8.8版2026最新版:核心技术升级与多场景适配解析

各位行业同仁&#xff0c;今天分享神马影视8.8版2026最新源码系统的核心亮点。这款新版系统聚焦播放流畅度、数据处理效率与多端兼容性三大维度升级&#xff0c;技术点通俗易理解&#xff0c;不管是开发入门者还是运营从业者&#xff0c;都能快速掌握实用价值&#xff0c;适配个…

作者头像 李华
网站建设 2026/3/22 22:06:33

【dz-1009】基于单片机的智能头盔设计

基于单片机的智能头盔设计 摘 要 针对传统头盔功能单一、缺乏安全保障的问题&#xff0c;本文设计了一款基于STM32F103C8T6单片机的智能头盔。该头盔主要由光敏电阻、MPU6050传感器、GPS模块、超声波传感器、按键、OLED显示屏以及通信模块构成。通过光敏电阻实时监测光照强度&…

作者头像 李华
网站建设 2026/3/16 0:35:59

软件测试常见面试题汇总(2026版)

一、常见的面试题汇总 1、你做了几年的测试、自动化测试&#xff0c;说一下 selenium 的原理是什么&#xff1f; 我做了五年的测试&#xff0c;1年的自动化测试&#xff1b; selenium 它是用 http 协议来连接 webdriver &#xff0c;客户端可以使用 Java 或者 Python 各种编…

作者头像 李华