失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > HSV空间Retinex理论低照度图像增强

HSV空间Retinex理论低照度图像增强

时间:2020-07-02 18:06:56

相关推荐

HSV空间Retinex理论低照度图像增强

文章目录

一、课题任务、目的和要求二、课题方案设计三、课题设计实现1 同态滤波算法增强夜晚图像的RGB各分量2 HSV空间改进的多尺度Retinex 算法及伽马校正3 直方图均衡函数对反射图像进行对比度拉伸4 拉普拉斯增强算子对反射图像进行影像增强5 饱和度分量自适应非线性增强

一、课题任务、目的和要求

1.课题任务:对夜晚图像进行增强。

2.课题目的:通过多种方法对夜晚图像进行增强。

3.课题要求:在尽可能提高可视度、信息熵、对比度的情况下对夜晚图像进行增强。

二、课题方案设计

1.设计思路:基于同态滤波及多尺度Retinex的夜晚图像增强算法

首先用同态滤波算法增强夜晚图像的RGB各分量,然后由RGB空间转换至HSV 空间,在保持色调H不变的情况下,用改进的多尺度Retinex 算法对亮度分量V的照度分量和反射分量分别进行直方图修正和伽马校正的增强处理,对饱和度S进行自适应非线性拉伸,最后将图像再转换至RGB空间,并通过MATLAB 仿真实验验证改进算法的优越性。

2.方案框图:

三、课题设计实现

1 同态滤波算法增强夜晚图像的RGB各分量

(1)方法简述

同态滤波采用图像的照射-反射模型,通过处理照射分量和反射分量来改善图像的质量, 在傅里叶变换中,低频对应照射分量,高频部分对反射分量。在处理夜晚图像时,降低照射分量,增强反射分量,从而提高图像的对比度。

%% 数据读取clear;clc;close all;Imageori=imread('yewan3.png'); %打开图像Image=im2double(Imageori);%将图像归一化并转换为double数据%% 同态滤波logI=log(Image+1); %对数运算,防止图像值为0sigma=1414; filtersize=[7 7];%高斯滤波器参数lowfilter=fspecial('gaussian',filtersize,sigma); %构造高斯低通滤波器highfilter=zeros(filtersize);%存储高斯高通滤波器模板highpara=1; lowpara=0.8;%控制滤波器幅度范围的系数 highfilter(ceil(filtersize(1,1)/2),ceil(filtersize(1,2)/2))=1;%4 4为1 向上取证highfilter=highpara*highfilter-(highpara-lowpara)*lowfilter; %高斯低通滤波器转换为高斯高通滤波器highpart=imfilter(logI,highfilter,'replicate','conv'); %时域卷积实现滤波NewImage=highpart; %存储到NewImage当中top=max(NewImage(:)); bottom=min(NewImage(:));%取图像的最大值和最小值New=(NewImage-bottom)/(top-bottom);New=1.5.*(New);%数据的映射处理,符合人眼视觉特性 线性灰度级变换figure(1);subplot 121;imshow(Imageori);title('原图');subplot 122;imshow(New);title('基于同态滤波的增强图像');

(3)运行结果

2 HSV空间改进的多尺度Retinex 算法及伽马校正

(1)方法简述

将原始影像从RGB色彩空间转换到符合人眼视觉特性的HSV色彩空间进行增强处理的主要目的是将颜色分量与亮度分量及饱和度分量分离,保证颜色分量不变,调整亮度分量和饱和度分量。这样能够避免传统方法在RGB色彩空间中分别对三个颜色通道进行调整而导致的颜色失真问题,使增强后的影像更加符合人眼视觉特性。RGB色彩空间向HSV色彩空间的转换是从基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标双锥体的转换,其转换的基本原则是分离出RGB中的亮度分量,并将色度分解为色调和饱和度两个分量,用角向量表示色调。

传统的Retinex算法采用高斯函数作为其环绕函数,将MSR算法中的高斯函数用双边滤波函数代替,双边滤波与高斯滤波相比,可以同时增强空域和时域的平滑性,避免了高斯滤波的误判问题,可以更好地保持图像的边缘信息,使得处理后的图像边缘更加光滑连续,还能在一定程度上解决图像的光晕问题。其中sigma_s取值为[15 70 110],其中sigma_r取值为[0.05 0.10 0.15]。

为了使图像的色彩更加自然,对经过双边滤波处理后的入射分量进行伽马变换,其中C =0.77;Gamma =[0.05 0.1 0.3]。

(2)程序代码

%% HSV空间改进的多尺度 Retinex 算法hsv=rgb2hsv(New);%将rgb色彩空间转换到hsv色彩空间imgh=hsv(:,:,1);imgs=hsv(:,:,2);imgv=hsv(:,:,3);%分别取hsv通道[height,width]=size(imgv);%读取图像高宽vhigh=zeros(height,width);vlow=zeros(height,width); %存储图像w=256;% 定义双边滤波窗口宽度 sigma_s=[15 70 110]; sigma_r=[0.05 0.10 0.15]; % 双边滤波的两个标准差参数 [X,Y] = meshgrid(-w:w,-w:w); %创建方行网格for g=1:3Gs = exp(-(X.^2+Y.^2)/(2*sigma_s(g)^2));%计算邻域内的空间权值for i=1:height for j=1:width temp=imgv(max(i-w,1):min(i+w,height),max(j-w,1):min(j+w,width));Gr = exp(-(temp-imgv(i,j)).^2/(2*sigma_r(g)^2));%计算灰度邻近权值 % W为空间权值Gs和灰度权值Gr的成绩 W = Gr.*Gs((max(i-w,1):min(i+w,height))-i+w+1,(max(j-w,1):min(j+w,width))-j+w+1);vlow(i,j)=sum(W(:).*temp(:))/sum(W(:)); endend%对入射分量进行伽马变换C =0.77;Gamma =[0.05 0.1 0.3];%伽马校正参数vlow = C*(vlow.^Gamma(g));%伽马校正公式vhigh=1/3*(log(imgv./vlow+1)+vhigh);%获得v通道的高频分量endresult=cat(3,imgh,imgs,vhigh);%将处理后的通道重新进行拼接result=hsv2rgb(result);%将hsv色彩空间重新转换回rgb色彩空间figure(2);subplot 121;imshow(Imageori);title('原图');subplot 122;imshow(result);title('基于双边滤波的MSR');

(3)运行结果

3 直方图均衡函数对反射图像进行对比度拉伸

(1)方法简述

这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。这种方法对于背景和前景都太亮或者太暗的图像非常有用。

(2)程序代码

%% 引入直方图均衡函数对反射图像进行对比度拉伸%vhigh=3.6*log(vhigh+1);vhigh=histeq(vhigh,256);%进行直方图均衡化result=cat(3,imgh,imgs,vhigh);%将处理后的通道重新进行拼接result=hsv2rgb(result);%将hsv色彩空间重新转换回rgb色彩空间figure(3);subplot 121;imshow(Imageori);title('原图');subplot 122;imshow(result);title('对比度拉伸');

(3)运行结果

4 拉普拉斯增强算子对反射图像进行影像增强

(1)方法简述

拉普拉斯增强算子可以使像素之间的灰度差异得到保留,使灰度突变处的对比度得到增强,最终在保留影像背景的前提下突现出影像中的边缘细节信息,因此,本文采用拉普拉斯增强算子对影像进行边缘细节增强。拉普拉斯增强算子是最简单的各向同性微分算子,具有旋转不变性。连续的拉普拉斯算子不能直接用于影像增强,需要利用模板来实现。本文影像边缘增强的原理是将拉普拉斯增强算子模板与原始亮度影像进行卷积运算,原始亮度影像减去卷积运算结果得到的运算结果即为边缘影像。拉普拉斯模板有多种形式,最常见的是4邻域拉普拉斯算子和8邻域拉普拉斯算子,其基本要求是:中心像素的系数为正,而中心像素周围的像素的系数为负,且所有系数和为零。

(2)程序代码

%% 拉普拉斯增强算子对反射图像进行影像增强H=fspecial('laplacian',0);%创建拉普拉斯算子边缘检测模板R=imfilter(imgv,H);%进行边缘检测edgeImage=abs(R);%对检测后的图像取绝对值vhigh=vhigh+0.3*edgeImage;%对亮度分量进行增强result=cat(3,imgh,imgs,vhigh);%将处理后的通道重新进行拼接result=hsv2rgb(result);%将hsv色彩空间重新转换回rgb色彩空间figure(4);subplot 121;imshow(Imageori);title('原图');subplot 122;imshow(result);title('拉普拉斯增强');

(3)运行结果

5 饱和度分量自适应非线性增强

(1)方法简述

当图像的亮度分量增强后,图像的饱和度偏低,为了使图像颜色更加饱满,所以需要对饱和度进行拉伸; 而且在不同的环境中获取的夜晚图像有很大差异, 所以需要对饱和度处理的程度也就不同; 因此,提出了一种针对饱和度分量的自适应非线性拉伸算法, 其公式为

(2)程序代码

%% 饱和度分量自适应非线性增强Imagemean=zeros(height,width);%新建图像平均值模板Imagemin=zeros(height,width);%新建图像最小值模板Imagemax=zeros(height,width);%新建图像最大值模板%对图像中的每一个点的rgb通道分别计算最大、最小、平均值for x=1:width-1for y=1:height-1 ii=Image(y,x,:);ii=ii(:);Imagemean(y,x)=mean(ii);Imagemin(y,x)=min(ii);Imagemax(y,x)=max(ii);endendk=Imagemean./(Imagemin+Imagemax+1);%计算自适应的k值imgs=(1+k).*imgs;%自适应非线性增强result=cat(3,imgh,imgs,vhigh);%将处理后的通道重新进行拼接result=hsv2rgb(result);%将hsv色彩空间重新转换回rgb色彩空间figure(5);subplot 121;imshow(Imageori);title('原图');subplot 122;imshow(result);title('饱和度增强');

(3)运行结果

如果觉得《HSV空间Retinex理论低照度图像增强》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。