news 2026/7/15 5:50:44

图像增强与去雾:常用算法集合及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/7/3 2:22:39

MATLAB图像增强:开启视觉盛宴之旅

MATLAB图像增强代码 代码些许复杂&#xff0c;由本人一个朋友编写 是机器视觉和图像增强领域的应用&#xff0c;有gui界面&#xff0c;可以载入原图和参照强化的图像&#xff0c;读取参照图像的RGB或者HSV 分量&#xff0c;并强化原图像&#xff0c; 运行&#xff0c;corrction…

作者头像 李华
网站建设 2026/7/1 11:19:57

基于SpringBoot的爱心商城系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的爱心商城系统&#xff0c;以满足现代电子商务领域对于高效、安全、易用的在线购物平台的需求。具体研究目的如下&…

作者头像 李华
网站建设 2026/7/1 14:57:49

基于SpringBoot的甘肃旅游服务平台毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于SpringBoot框架的甘肃旅游服务平台&#xff0c;以实现甘肃旅游资源的数字化管理和智能化服务。具体研究目的如下&#xff1a;提高甘肃旅游…

作者头像 李华
网站建设 2026/7/1 23:25:00

【dz-1008】基于单片机的环境监测系统设计

摘要 随着人们对生活环境质量关注度的不断提升&#xff0c;对环境参数的精准监测与及时预警变得尤为重要。传统的环境监测方式多依赖人工采样和实验室分析&#xff0c;不仅耗时费力、响应滞后&#xff0c;还存在数据获取不及时、监测范围有限等问题&#xff0c;难以满足实时、…

作者头像 李华
网站建设 2026/7/8 22:01:28

【dz-1012】小型无士栽培自动控制系统设计与实现

摘要 在无土栽培领域&#xff0c;环境参数与营养液状态的精准调控对作物生长质量与产量起着决定性作用。传统无土栽培管理多依赖人工巡检和经验调节&#xff0c;存在参数控制滞后、营养液配比失衡、资源浪费等问题&#xff0c;难以满足精细化种植的严苛需求。 基于 STM32F103…

作者头像 李华
网站建设 2026/7/1 23:53:52

绿色工厂与上市公司匹配数据(2017-2023)

1729顶刊收割机&#xff01;绿色工厂与上市公司匹配数据&#xff08;2017-2023&#xff09;数据简介2016年工业和信息化部&#xff08;以下简称工信部&#xff09;启动了第一批绿色制造体系示范建设项目&#xff0c;该项目涵盖绿色工厂、绿色产品、绿色园区、绿色供应链等多方面…

作者头像 李华