基于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)数据类型转换名称将输入转换为有效的输入图像数据类型Im2unit8Unit8Unit8,Unit16,Double,logicalIm2unit16Unit16Unit8,Unit16,Double,logicalMat2grayDouble[0-1]Unit8,Double,Unit16,logicalIm2doubleDoubleUnit8,Double,Unit16,logicalIm2bwlogicalUnit8,Unit16,Double3)文件信息读取Matlab提供imfinfo函数来实现所有格式(除DICOM)的信息读取,调用形式:info=imfinfo(’filename’)4)读取图像使用imread可以将图像读入matlab环境,语法:imread(‘filename’),其中,filename是一个含有文件全名的字符串。函数size可给出一副图像的行数和列数size(f)Ans=102410245)显示图像在matlab桌面上显示图像一般用imshow,语法:imshow(f,G)其中,f是一个图像数组,G为显示该图像的灰度级数。若将G省略,则默认256.语法imshow(f,[lowhigh])会将小于或等于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_inhigh_in],[low_outhigh_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”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(HumanVisualSystem)的图像增强理论。该算法的基本原理模型最早是由EdwinLand(埃德温•兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种基于理论的图像增强方法。Retinex理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。不同于传统的图像增强算法,如线性、非线性变换、图像锐化等只能增强图像的某一类特征,如压缩图像的动态范围,或增强图像的边缘等,Retinex可以在动态范围压缩、边缘增强和颜色恒常三方面达到平衡,因此可以对各种不同类型的图像进行自适应性地增强。单尺度(Single-ScaleRetinex,SSR)算法原理根据Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如下Retinex原理示意图对于观察图像S中的每个点(x,y),用公式可以表示为:S(x,y)=R(x,y)﹒L(x,y)(1)据Retinex理论,物体的颜色是由物体对光线的反射能力决定的,而物体对光线的反射能力是物体本身固有的属性,与光源强度的绝对值没有依赖关系。因此通过计算各个像素间的相对明暗关系,可以对图像中的每个像素点做校正,从而确定该像素点的颜色。单尺度(Single-ScaleRetinex,SSR)算法在对数域中则表示为:根据上面式的原理,Retinex理论进行图像增强的关键是从原图像中有效的信息计算出亮度图像L(x,y)。但是从原图像计算亮度图像在数学上是一个奇异问题,因此只能通过数学上近似估计的方式估算亮度图像。在Retinex算法的发展史中,曾经出现过平方反比的环绕形式、指数形式以及高斯指数形式,但在单尺度Retinex增强算法中,杰泊森(Jobson)论证了高斯卷积函数可以对源图像提供更局部的准确处理,因而可以更好地增强图像,其可以表示为:其中λ是常量矩阵,c是滤波半径,并且满足:c越小,灰度动态范围压缩的越多,c越大,图像锐化的越厉害。因此亮度图像最终可以表示为:单尺度(SSR)可以表示为:2)matlab实现步骤:读入图像→归一化→设置高斯函数参数及矩阵→高斯函数和输入图像矩阵卷积→取对数→和输入图像矩阵的对数相差→取指数→输出图像结果:原图处理后原图处理后的图