基于建立模板的消除水下扭曲成像
2016-05-10 16:12
267 查看
本文为针对我所研究的课题水下成像所学习文献的总结,欢迎交流、批评指正。如需源程序、文献等请私信。
原文:Seeing through Water:Image Restoration using Model-based Tracking(The Robotics Institute, Carnegie Mellon University).2009 IEEE 12th International Conference on Computer Vision(ICCV).
提出的问题
对水中物体成像,如图1所示。由于水面不是平面具有波动,光线在传输过程中经历折射和反射,最终到达相机会出现图像扭曲。
图1 水下成像示意图
解决思路
对每一帧图像的扭曲情况进行测量,实时还原退化图像。具体来说就是根据波动方模拟水面波动所造成的扭曲,建立一个waterbase,包含不同扭曲情况(可以认为是基向量),再将图像序列扭曲用waterbase和投影系数表示,在复原图像的同时,用较小的存储空间(waterbase+系数)可以重建每一帧的扭曲图像。
两个要点
1.waterbase是否可以有效的描述所有扭曲情况,包括同一帧的不同扭曲,不同帧的扭曲。2.即使第一点成立,那么如何获得每一帧的扭曲图像,在不知道静止图像的前提下。
模型建立
图2 水下成像模型
如图2所示,Ig代表静止波面时所得像,I代表退化图像,水面扭曲为w,因此I就是Ig和w的函数,可由下式表示:
I(x,t) = Ig(x+w(x,t))
并有水面波动方程:
当水面波动w与水面高度h相比较小时,有:
上式可通过向前欧拉公式求解:
h(x,t + Δt) = 2h(x, t) − h(x, t − Δt) +c2∇2h(x, t)(Δt)2 (2代表平方)
因此,如果已知h(x,0)和h(x,1)就可以模拟出任意时刻的扭曲。如下图所示,上下第一幅图是原图,随后是模拟的扭曲图形。
图3 扭曲模拟
建立waterbase
文中将原图像做分块处理,优化起来更容易。Waterbase是57*40*2*10的矩阵,前两维代表57*40的图像块,2分别代表在x,y两个方向坐标的变化,10代表块数量。表达式可以写为:
B(x) =[b1(x), b2(x), . . . ,b10(x)] %waterbase
任意扭曲w(x,t)≈
B(x)p %p为投影稀疏
数量块为10是因为假设了水面波动是较为平缓的,因此对一系列扭曲W做PCA后,前10个特征向量认为是比较大的扭曲情况,除此之外的就忽略了。
如图4所示,根据输入的水波波速以及一些参数建立的waterbase。
图4 waterbase示意图
下面就是两个问题,第一,waterbase由于只取了前10个特征值,描述的是否准确?第二,如果准确的话,怎么用其进行描述,即序列图像的畸变如何获取?
第一个问题,作者从主观视觉考虑,输入一组图像,通过波面方程模拟其扭曲,再通过waterbase投影,重构扭曲,对比模拟的扭曲和重构扭曲图像视觉效果,如下图所示:
图5 waterbase重构扭曲图
第二个问题,向waterbase投影的前提是知道扭曲w。
如果有静止图像,将每一帧图像与静止图像相减,就可以到不同帧的扭曲图像,但是现在没有静止图像。
这里简单介绍下思路:
Xs,Xt分别代表在s和t时刻的扭曲图像坐标,Ys,Yt对应与平静图像下的坐标,因此有:
Ig(Ys) = I(Xs) ,Ig(Yt) = I(Xs)
可以理解为静止图像和扭曲图像的亮度值分布是近似的,只是由于扭曲,一些点的坐标发生两维度的位移。
这就意味着针对一组ps,pt,可以得到一组ys,yt,也即平静图像Ig(Ys)和Ig(Yt)
而我们认为静止图像是不变的,因此可通过最小化两幅计算出的静止图像的差来优化出ps,pt,从而建立原图扭曲。 即下式:
图6 复原图像实验结果
具体实现过程的一些技巧以及实验结果参见文献。
原文:Seeing through Water:Image Restoration using Model-based Tracking(The Robotics Institute, Carnegie Mellon University).2009 IEEE 12th International Conference on Computer Vision(ICCV).
提出的问题
对水中物体成像,如图1所示。由于水面不是平面具有波动,光线在传输过程中经历折射和反射,最终到达相机会出现图像扭曲。
图1 水下成像示意图
解决思路
对每一帧图像的扭曲情况进行测量,实时还原退化图像。具体来说就是根据波动方模拟水面波动所造成的扭曲,建立一个waterbase,包含不同扭曲情况(可以认为是基向量),再将图像序列扭曲用waterbase和投影系数表示,在复原图像的同时,用较小的存储空间(waterbase+系数)可以重建每一帧的扭曲图像。
两个要点
1.waterbase是否可以有效的描述所有扭曲情况,包括同一帧的不同扭曲,不同帧的扭曲。2.即使第一点成立,那么如何获得每一帧的扭曲图像,在不知道静止图像的前提下。
模型建立
图2 水下成像模型
如图2所示,Ig代表静止波面时所得像,I代表退化图像,水面扭曲为w,因此I就是Ig和w的函数,可由下式表示:
I(x,t) = Ig(x+w(x,t))
并有水面波动方程:
当水面波动w与水面高度h相比较小时,有:
上式可通过向前欧拉公式求解:
h(x,t + Δt) = 2h(x, t) − h(x, t − Δt) +c2∇2h(x, t)(Δt)2 (2代表平方)
因此,如果已知h(x,0)和h(x,1)就可以模拟出任意时刻的扭曲。如下图所示,上下第一幅图是原图,随后是模拟的扭曲图形。
图3 扭曲模拟
建立waterbase
文中将原图像做分块处理,优化起来更容易。Waterbase是57*40*2*10的矩阵,前两维代表57*40的图像块,2分别代表在x,y两个方向坐标的变化,10代表块数量。表达式可以写为:
B(x) =[b1(x), b2(x), . . . ,b10(x)] %waterbase
任意扭曲w(x,t)≈
B(x)p %p为投影稀疏
数量块为10是因为假设了水面波动是较为平缓的,因此对一系列扭曲W做PCA后,前10个特征向量认为是比较大的扭曲情况,除此之外的就忽略了。
如图4所示,根据输入的水波波速以及一些参数建立的waterbase。
图4 waterbase示意图
下面就是两个问题,第一,waterbase由于只取了前10个特征值,描述的是否准确?第二,如果准确的话,怎么用其进行描述,即序列图像的畸变如何获取?
第一个问题,作者从主观视觉考虑,输入一组图像,通过波面方程模拟其扭曲,再通过waterbase投影,重构扭曲,对比模拟的扭曲和重构扭曲图像视觉效果,如下图所示:
图5 waterbase重构扭曲图
第二个问题,向waterbase投影的前提是知道扭曲w。
如果有静止图像,将每一帧图像与静止图像相减,就可以到不同帧的扭曲图像,但是现在没有静止图像。
这里简单介绍下思路:
Xs,Xt分别代表在s和t时刻的扭曲图像坐标,Ys,Yt对应与平静图像下的坐标,因此有:
Ig(Ys) = I(Xs) ,Ig(Yt) = I(Xs)
可以理解为静止图像和扭曲图像的亮度值分布是近似的,只是由于扭曲,一些点的坐标发生两维度的位移。
这就意味着针对一组ps,pt,可以得到一组ys,yt,也即平静图像Ig(Ys)和Ig(Yt)
而我们认为静止图像是不变的,因此可通过最小化两幅计算出的静止图像的差来优化出ps,pt,从而建立原图扭曲。 即下式:
图6 复原图像实验结果
具体实现过程的一些技巧以及实验结果参见文献。
相关文章推荐
- Python全局变量
- nodemailer发送邮件遇到的一些问题
- c bash 代码遍历文件夹下所有文件
- Linux下MySQL安装与操作
- Jvm工作原理学习笔记
- Android 自定义view --圆形百分比(进度条)
- HTTP状态码查询
- 怎么实现iMindMap中的流程图的快速运用
- Linux 命令大全
- DetachedCriteria详细使用
- JavaScript 三种创建对象的方法
- Html5自定义dialog
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 蜂巢之Iaas云主机快速启动的优化
- 将之前的DotNetOpenAuth项目发布到IIS
- Bootstrap兼容
- 第2章 面向对象的设计原则(SOLID):5_迪米特法则
- 去掉scrollview顶部的灰条
- Maven构建springMVC+mybites
- jquery select全部遍历