matlab retinex,基于Retinex算法视频增强的MATLAB实现

基于Retinex算法视频增强的MATLAB实现

一、读书笔记

1:数字图像文件简介

BMP文件:Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。

GIF文件:GIF文件的数据是一种基于LZW算法的连续色调的无损压缩格式,不属于任何应用程序。

JPEG图像格式:后缀名为.jpg或者.jpeg,是一种有损压缩格式。

ICO文件:Windows的图标文件格式的一种,可以存储单个图案、多尺寸、多色板的图标文件

HDF文件:层次型数据格式可以存储不同类型的图像和数码数据,有函数库。

PNG文件:常用于JAVA程序、网页和S60中。

TIFF文件:主要用来存储包括照片和艺术图在内的文件格式。

DICOM文件:数字影像和通信标准。

2:基于MATLAB图像处理基础

1)图像数据类型

double类型:图像处理最常用的数据类型,也是matlab中默认的数据类型。图像数据的取值范围为0-1。

Unit8类型:常用于从存储设备中读取数据时,操作不能使结果超出[0,255].

Unit16类型:用于精度较高的图像中。

Logical类型:常用于二值图像中,可用true、false或关系运算符得到。

2)数据类型转换

名称

将输入转换为

有效的输入图像数据类型

Im2unit8

Unit8

Unit8, Unit16, Double, logical

Im2unit16

Unit16

Unit8,Unit16, Double, logical

Mat2gray

Double[0-1]

Unit8,Double, Unit16, logical

Im2double

Double

Unit8,Double, Unit16, logical

Im2bw

logical

Unit8, Unit16, Double

3)文件信息读取

Matlab提供imfinfo函数来实现所有格式(除DICOM)的信息读取,调用形式: info=imfinfo(’filename’)

4)读取图像

使用imread可以将图像读入matlab环境,语法:

imread (‘filename’),其中,filename是一个含有文件全名的字符串。

函数size可给出一副图像的行数和列数

>>size(f)

Ans=

1024  1024

5)显示图像

在matlab桌面上显示图像一般用imshow,语法:

imshow (f,G)

其中,f是一个图像数组,G为显示该图像的灰度级数。若将G省略,则默认256.语法 imshow(f,[low high])会将小于或等于low的显示为黑色,大于或等于high的显示为白色,介于两者之间的值以默认的级数显示为中等亮度值。语法 imshow(f,[])可以将变量low设置为数组f的最小值,将high设置为f的最大值。

6)保存图像

使用imwrite函数可将图像写入磁盘,语法;

Imwrite(f,’filename’)

Filename必须是一个可识别的文件格式扩展名

另一种常用但只用于jpeg图像的函数imwrite,其语法为

Imwrite(f,’filename.jpg’,’quality’,q),

Q为一个0到100的整数,q越小,图像退化越严重

3:亮度变换与空间滤波

1)函数imadjust是对灰度图像进行亮度变换的基本IPT工具。语法

g=imadjust(f,[low_in high_in],[low_out high_out],gamma)

将low_in至high_in之间的值映射到low_out至high_out之间的值,其他的值被剪切掉了。

2)对数和对比度的拉伸变换

对数变换通过以下表达式实现:

g=c*log(1+double(f))

3)阈值变换

表达式:g=1./(1+(m./(double(f)+eps)).^E)

Eps可避免f出现0值的溢出现象

4)计算并绘制图像直方图

函数:imhist(f);

直方图均衡化有函数histep实现,语法:g=histep(f,nlev)

Nelv为输出图像制定的灰度等级

5)空间滤波:

工具箱使用函数imfilter来实现线性空间滤波,语法

g=imfilter(f,w,filter_mode,boundary_options,size_options)

w为滤波掩膜,g为滤波结果

二、Retinex算法简介 与实现

1)简介

Retinex(视网膜”Retina”和大脑皮层”Cortex”的缩写)理论是一种建立在科学        实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温•兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种基于理论的图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex 理论是以色感一致性(颜色恒常性)为基础的。

不同于传统的图像增强算法,如线性、非线性变换、图像锐化等只能增强图像的某一类特征,如压缩图像的动态范围,或增强图像的边缘等,Retinex可以在动态范围压缩、边缘增强和颜色恒常三方面达到平衡,因此可以对各种不同类型的图像进行自适应性地增强。

单尺度(Single-Scale Retinex, SSR)算法原理 根据Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如下

18dc82c5a2a6c15a17f7fea642800afc.png

Retinex原理示意图

对于观察图像S中的每个点(x,y),用公式可以表示为:

S(x,y)=R(x,y)﹒L(x,y) (1)

据Retinex 理论,物体的颜色是由物体对光线的反射能力决定的,而物体对光线的反射能力是物体本身固有的属性,与光源强度的绝对值没有依赖关系。因此通过计算各个像素间的相对明暗关系,可以对图像中的每个像素点做校正,从而确定该像素点的颜色。

单尺度(Single-Scale Retinex, SSR)算法在对数域中则表示为:

6a32ece6729a7345f0aba9046db8d44d.png

根据上面式的原理,Retinex理论进行图像增强的关键是从原图像中有效的信息计算出亮度图像L(x,y)。但是从原图像计算亮度图像在数学上是一个奇异问题,因此只能通过数学上近似估计的方式估算亮度图像。在Retinex算法的发展史中,曾经出现过平方反比的环绕形式、指数形式以及高斯指数形式,但在单尺度Retinex增强算法中,杰泊森(Jobson)论证了高斯卷积函数可以对源图像提供更局部的准确处理,因而可以更好地增强图像,其可以表示为:

b2f66d00fd83b7757eb8ddbde809b647.png其中λ是常量矩阵,c是滤波半径,并且满足:

9ab32cf89d9771580285f9c8b081c09a.png

c越小,灰度动态范围压缩的越多,c越大,图像锐化的越厉害。因此亮度图像最终可以表示为:

e293237a9ce487e9897fa2917bf778b9.png

单尺度(SSR)可以表示为:

df4c9ef589d3df723afb3110159fa4fa.png

2)matlab实现

步骤:读入图像→归一化→设置高斯函数参数及矩阵→高斯函数和输入图像矩阵卷积→取对数→和输入图像矩阵的对数相差→取指数→输出图像

结果:

1384b0d8ae1a3fcad278764a44e9261e.png

原图

f77efc7e58b73d963b91d1ae7fbbfe18.png

处理后

8636d97350988997543d8b82d7f069f4.png

原图

e5ff3e24dca4093a69e037bd8b0f0ecf.png

处理后的图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值