基于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),其原理示意图如下

Retinex原理示意图

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

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

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

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

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

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

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

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

2)matlab实现

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

结果:

原图

处理后

原图

处理后的图

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

  1. 基于变色龙算法的线性规划问题求解matlab程序

    基于变色龙算法的线性规划问题求解matlab程序 1 变色龙算法 变色龙是爬行动物,是非常奇特的动物,它有适于树栖生活的种种特征和行为.避役的体长约15-25厘米,身体侧扁,背部有脊椎,头上的枕部有钝 ...

  2. 详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

       本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示.本文作为本系列的第一篇文章主要介绍如何进行环境的创建,还有一定要记得读前言!!! 本系列文章链接: ------- ...

  3. 时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测

    时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测 ...

  4. 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测

    时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 效果一览 基本 ...

  5. 基于鲸鱼算法的线性规划问题求解matlab程序

    基于鲸鱼算法的线性规划问题求解matlab程序 1 鲸鱼算法 座头鲸有特殊的捕猎方法,这种觅食行为被称为泡泡网觅食法:标准 WOA 模拟了座头鲸特有的搜索方法和围捕机制,主要包括:围捕猎物.气泡网捕食 ...

  6. 【优化算法】基于matlab象鼻虫损害优化算法 (WDOA)【含Matlab源码 2228期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]基于matlab象鼻虫损害优化算法 (WDOA)[含Matlab源码 2228期] 点击上面蓝色字体,直接付费下载,即可. 获 ...

  7. 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】

    一.背景差分法和帧间差分法的车辆运动目标检测简介 1 引言 运动目标检测是从图像序列中检测运动目标.通过运动目标检测可以得到图像中的运动目标,获取图像中的运动信息.运动目标检测在医学辅助诊断.航天航空 ...

  8. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  9. rgv动态调度MATLAB代码,基于贪心算法的智能RGV的动态调度策略

    李胜成 摘  要:一种智能加工系统由8台计算机数控机床(CNC).1辆轨道式自动引导车(RGV).1条RGV直线轨道.1条上料传送带.1条下料传送带等附属设备组成.文章通过研究RGV的选择判断规律,以 ...

  10. 基于注水算法的MIMO信道容量matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MIMO无线通信技术源于天线分集与智能天线技术,具有二者的优越性,MIMO系统的发射端与接收端都采用 ...

最新文章

  1. TechEd 2012奥兰多!
  2. 在IE6/7下表格td标签没有内容时不显示边框?
  3. mysql设置Tooken过期时间_基于thinkPHP3.2实现微信接入及查询token值的方法
  4. Cracking the coding interview--Q1.7
  5. java 将图片转成二进制文件bin_java 问题:怎样把一个bin二进制图片文件用java代码打开?求解!...
  6. element里面popover里面的高度_五斗柜的高度一般是多少 五斗柜放在什么位置好
  7. Python程序员面试必备常用问题答案及解析
  8. 洛谷P5159 WD与矩阵
  9. queue,stack中的库函数
  10. 信息安全系统设计基础实验二:固件设计
  11. python部署到服务器上解析不到模块_在服务器上部署kafka-python包
  12. 《JavaScript高效图形编程(修订版)》——导读
  13. [数论] 快速傅里叶变换FFT
  14. 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
  15. 论项目管理中的需求管理
  16. Word中有哪些实用技巧?Word文件怎么转换成PDF文件?
  17. @PropertySource配置的用法
  18. 【2021自我知识蒸馏】Extracting knowledge from features with multilevel abstraction
  19. python多线程结束线程_Python多线程和Office第2部分
  20. 【IT圈内事】2019互联网企业100强

热门文章

  1. 分区魔术师于分区助手怎么选择
  2. 啊哈 c语言pdf百度云,啊哈c语言完整版
  3. 前端学习白嫖-QQ音乐
  4. 长虹电视刷机固件包汇总
  5. socket连接测试工具,window和linux下
  6. linux环境生成pdf字体问题,字体概述与Linux字体常见问题的解决.pdf
  7. 使用bat一键生成bmfont艺术字
  8. 3U VPX板卡设计
  9. 傲腾加速内存安装调试
  10. linux中hdfs格式化,HDFS操作命令