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),其原理示意图如下
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实现相关推荐
- 基于变色龙算法的线性规划问题求解matlab程序
基于变色龙算法的线性规划问题求解matlab程序 1 变色龙算法 变色龙是爬行动物,是非常奇特的动物,它有适于树栖生活的种种特征和行为.避役的体长约15-25厘米,身体侧扁,背部有脊椎,头上的枕部有钝 ...
- 详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建
本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示.本文作为本系列的第一篇文章主要介绍如何进行环境的创建,还有一定要记得读前言!!! 本系列文章链接: ------- ...
- 时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现基于Adam算法优化BiLSTM双向长短期记忆神经网络时间序列预测 ...
- 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 效果一览 基本 ...
- 基于鲸鱼算法的线性规划问题求解matlab程序
基于鲸鱼算法的线性规划问题求解matlab程序 1 鲸鱼算法 座头鲸有特殊的捕猎方法,这种觅食行为被称为泡泡网觅食法:标准 WOA 模拟了座头鲸特有的搜索方法和围捕机制,主要包括:围捕猎物.气泡网捕食 ...
- 【优化算法】基于matlab象鼻虫损害优化算法 (WDOA)【含Matlab源码 2228期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]基于matlab象鼻虫损害优化算法 (WDOA)[含Matlab源码 2228期] 点击上面蓝色字体,直接付费下载,即可. 获 ...
- 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】
一.背景差分法和帧间差分法的车辆运动目标检测简介 1 引言 运动目标检测是从图像序列中检测运动目标.通过运动目标检测可以得到图像中的运动目标,获取图像中的运动信息.运动目标检测在医学辅助诊断.航天航空 ...
- 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别
1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...
- rgv动态调度MATLAB代码,基于贪心算法的智能RGV的动态调度策略
李胜成 摘 要:一种智能加工系统由8台计算机数控机床(CNC).1辆轨道式自动引导车(RGV).1条RGV直线轨道.1条上料传送带.1条下料传送带等附属设备组成.文章通过研究RGV的选择判断规律,以 ...
- 基于注水算法的MIMO信道容量matlab仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MIMO无线通信技术源于天线分集与智能天线技术,具有二者的优越性,MIMO系统的发射端与接收端都采用 ...
最新文章
- TechEd 2012奥兰多!
- 在IE6/7下表格td标签没有内容时不显示边框?
- mysql设置Tooken过期时间_基于thinkPHP3.2实现微信接入及查询token值的方法
- Cracking the coding interview--Q1.7
- java 将图片转成二进制文件bin_java 问题:怎样把一个bin二进制图片文件用java代码打开?求解!...
- element里面popover里面的高度_五斗柜的高度一般是多少 五斗柜放在什么位置好
- Python程序员面试必备常用问题答案及解析
- 洛谷P5159 WD与矩阵
- queue,stack中的库函数
- 信息安全系统设计基础实验二:固件设计
- python部署到服务器上解析不到模块_在服务器上部署kafka-python包
- 《JavaScript高效图形编程(修订版)》——导读
- [数论] 快速傅里叶变换FFT
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 论项目管理中的需求管理
- Word中有哪些实用技巧?Word文件怎么转换成PDF文件?
- @PropertySource配置的用法
- 【2021自我知识蒸馏】Extracting knowledge from features with multilevel abstraction
- python多线程结束线程_Python多线程和Office第2部分
- 【IT圈内事】2019互联网企业100强