图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)

Posted LLLLnannan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)相关的知识,希望对你有一定的参考价值。

一、图像增强技术介绍

简单进行一个背景介绍:图像增强就是将一幅图中需要的信息增强,消弱或去除不需要的信息的一种处理技术,可以达到改善图像质量的作用。
根据处理空间的不同,可以分为空域增强和频域增强两种。空域增强就是直接对图像的像素进行处理,主要有灰度变换、直方图方法等,直方图均衡化就是改善图像质量非常好的一种方法;频域增强可以先将图像由空间域转换到频域后,在频域进行滤波,频域滤波可以用到低频滤波、高频滤波、同态滤波等等。

下面简单介绍几种常用的图像增强方法以及在图像去雾上的应用。

二、 图像增强matlab代码

1、灰度变换增强

灰度变换增强是逐点改变图像像素点的灰度值的一种增强方法。
可以通过调整图像的灰度范围,图像的亮度进行增强。

①J=imadjust(I,[输入灰度范围],[输出灰度范围],gamma)对图像进行灰度调整,gamma为1时线性变换,gamma不为1时非线性变换,默认为1

%1.调整灰度值
I=imread('pout.tif');
J=imadjust(I,[0.2 0.5],[0,1]);
%原图的灰度范围为0~255,将小于255*0.2的灰度值调整为0,大于255*0.5的灰度值调整为255
figure;
subplot(221);imshow(I),title('原图');
subplot(222);imshow(J),title('调整灰度后图像');
subplot(223);imhist(I),title('原图直方图');
subplot(224);imhist(J),title('调整灰度后图像的直方图');

②进行灰度图像增强时,stretchlim()可以得到图像的最佳灰度输入区间

%2.stretchlim应用
I=imread('pout.tif');
M=stretchlim(I);
J=imadjust(I,M,[]);
figure;
subplot(221);imshow(I),title('原图');
subplot(222);imshow(J),title('调整灰度后图像');
subplot(223);imhist(I),title('原图直方图');
subplot(224);imhist(J),title('调整灰度后图像的直方图');

③J=brighten(I,beta)对图像进行亮度调整,beta取值-1到1之间,-1到0 图像变暗,0到1 图像变亮

%3.调整亮度
I=imread('pout.tif');
I=im2double(I);
figure;
subplot(131);imshow(I);title('原图');
J1=brighten(I,.6);
subplot(132);imshow(J1);title('变亮');
J2=brighten(I,-.6);
subplot(133);imshow(J2);title('变暗');

2、直方图增强(以去雾图像举例)

①全局直方图均衡化
调用函数:histeq()

I=imread('building.jpg');
%分通道
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
%对RGB分量进行全局直方图均衡化
IR=histeq(R);
IG=histeq(G);
IB=histeq(B);
%均衡化后的图像
I2=cat(3,IR,IG,IB);
figure;
subplot(221);imshow(I),title('原图');
subplot(222);imshow(I2),title('全局均衡化后的图像');
%直方图显示
M=rgb2gray(I);
N=rgb2gray(I2);
subplot(223);imhist(I),title('原图直方图');
subplot(224);imhist(I2),title('全局均衡化后的图像的直方图');


全局直方图均衡化不能保持原图的局部特征,容易出现颜色失真问题,进行局部直方图处理,可以在一定程度上保持原图的局部特征。

②局部直方图均衡化
调用函数:g=adapthisteq(f,param1,val1,param2,val2,…);

I=imread('building.jpg');
%分通道
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
%对RGB分量进行局部直方图均衡化
IR=adapthisteq(R,'clipLimit',0.02,'Distribution','rayleigh');
IG=adapthisteq(G,'clipLimit',0.02,'Distribution','rayleigh');
IB=adapthisteq(B,'clipLimit',0.02,'Distribution','rayleigh');
%均衡化后的图像
I2=cat(3,IR,IG,IB);
figure;
subplot(221);imshow(I),title('原图');
subplot(222);imshow(I2),title('局部均衡化后的图像');
%直方图显示
M=rgb2gray(I);
N=rgb2gray(I2);
subplot(223);imhist(I),title('原图直方图');
subplot(224);imhist(I2),title('局部均衡化后的图像的直方图');


以上就是一些简单的图像增强以及基于直方图的图像去雾的介绍及代码实现,还有Retinex(SSR、MSR、MSRCR)图像增强算法及其在图像去雾上的应用后面会专门整理。

如果觉得本篇文章有帮到您,希望可以点赞支持,本人还在学习当中,若有错误和问题,欢迎大家给我留言呀~

以上是关于图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)的主要内容,如果未能解决你的问题,请参考以下文章

图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)

图像去雾基于matlab GUI直方图均衡化+Retinex理论图像去雾含Matlab源码 1509期

跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理

跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理

跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理

MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾