原始论文在这里 http://www.cse.cuhk.edu.hk/leojia/projects/motion_deblurring/

一、概述

论文根据以下的基本模糊图像模型建立

其中I是我们观测到的图像,L是真实的图像,f是运动模糊的卷积核,n是观测过程中叠加的噪声

然后从统计角度分析L,f,n服从的分布,从而作为先验,构造能量函数进行优化求解。

二、对已有图像统计得到先验

1.L统计

1)对多幅图像统计的结果,L的梯度在全局上满足如下分布(曲线已经对数化)

曲线拟合表示为

最终的全局先验

2)构造L的局部先验来抑制振铃现象

使用一个与模糊核相同大小的窗口覆盖图像,计算偏差sd,输出图像 = sd<5?1:0,

将全局和局部先验组合起来

2.f统计

通过对模糊核的统计,f的直方图符合指数分布,即大部分像素是0附近的

3.n一般的表述为

统计表明噪声一般服从高斯分布,或者乘高斯分布

其中表示标准差,在Simon 2002论文中证明,递推出

三、如何进行优化?

由贝叶斯原理

构造能量函数,得到

上式中表示矩阵元素乘法,几个参数

实验中,初始化,前面有,从而得到

下面对(5)式进行分步优化

1.先优化L,将f去掉,(5)式可简化成

代替,上式再简化成

最后带的余项表示的近似。(8)式是关于的式子(当然还有I,这里先忽略),下面分开进行优化

1) 固定的话,(8)式进一步简化成

上式可以看出关于x和y的组合x和y等价,对每个具体的可写成,从而

这是一个关于的优化函数,最小化它就能得到一个最小的,即最小的x和y。

实验过程中,在迭代开始时分别设置在0.002-0.5 和 10-25之间,每次迭代后分别除以k1和k2,k1取值范围为[1.1, 1.4],k2= 1.5。

2) 更新了之后,我们固定可以将(8)式简化成

这个式子怎么求解呢?麻烦在于有卷积。进而考虑傅里叶变换到频域进行处理,得到

时域和频域对应,从而相当于求

这个优化在Gamelin .2003的文献里有求解原理说明,得到

其中的这里还是对原L的导数吗?有点疑问。

重复交替迭代优化直到收敛。实验过程中最初设为2,迭代一次乘以2。最后得到的最优值。

2.第二步就是优化模糊核了,固定则(5)式可简化为

这是关于的二次函数,类似于Jia 2007和Levin 2007写的样子,抽象如下

其中A和B是分别受L和I影响的矩阵,标准形式在Kim 2007的论文中提出,求解的基本思想是利用对偶原理,使用内点法求解。

至此,的最优化估计就已经得出,算法框架如下

参考文献

[1] GAMELIN, T. W. 2003. Complex Analysis. Springer.

[2] JIA, J. 2007. Single image motion deblurring using transparency.In CVPR.

[3] LEVIN, A., FERGUS, R., DURAND, F., AND FREEMAN, B. 2007.Image and depth from a conventional camera

with a coded aperture.In SIGGRAPH.

[4] KIM, S.-J., KOH, K., LUSTIG, M., AND BOYD, S. 2007. Anefcient method for compressed sensing. In ICIP.

[5] SIMON, M. K. 2002. Probability Distributions Involving GaussianRandom Variables: A Handbook for Engineers,

Scientists and Mathematicians. Springer.

从单幅图像高质量去除运动模糊——读JiaYaJia同名英文论文总结的更多相关文章

  1. 如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文?

    转自<知乎>如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文? 问题: 作为一个博士生,一直为写论文头疼,读过很多高质量论文,觉得写的真好,但是轮到自己写总 ...

  2. 维纳滤波和编码曝光PSF去除运动模糊【matlab】

    编码曝光知识 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/8276362.html %%%%%%%%%%%%%%%%%%%%%%% ...

  3. Win8 Metro(C#)数字图像处理--2.50图像运动模糊

    原文:Win8 Metro(C#)数字图像处理--2.50图像运动模糊  [函数名称] 图像运动模糊算法    MotionblurProcess(WriteableBitmap src,int  ...

  4. OpenCV3入门(十三)图像运动模糊

    1.原理 运动模糊产生: 由于相机传感器或物体相对运动, 按快门瞬间造成图像产生运动模糊. 在用摄像机获取景物图像时,如果在相机曝光期间景物和摄像机之间存在相对运动,例如用照相机拍摄快速运动的物体,或 ...

  5. atitit.thumb生成高质量缩略图 php .net c++ java

    atitit.java thumb生成高质量缩略图 php .net c++ 1. 图像缩放(image scaling)---平滑度(smoothness)和清晰度(sharpness) 1 2.  ...

  6. 移动Web—CSS为Retina屏幕替换更高质量的图片

    来源:互联网 作者:佚名 时间:12-24 10:37:45 [大 中 小] 点评:Retian似乎是屏幕显示的一种趋势,这也是Web设计师面对的一个新挑战;移动应用程序的设计师们已经学会了如何为Re ...

  7. 高质量动漫实时画质增强器Anime4K在mpv上的配置

    Anime4K地址 https://github.com/bloc97/Anime4K mpv地址  https://mpv.io/   这个要错峰下载,网速不太好 在C盘用户\..\AppData\ ...

  8. 高质量图形库:pixellib

    点这里 pixellib 是高质量 2D 图形库: 高质量抗锯齿,矢量图形绘制 多种图像格式: RGB, BGR, ARGB, ABGR, RGBA, BGRA 8 / 15 / 16 / 24 / ...

  9. (转)用AGG实现高质量图形输出(二)

    本文上接<用AGG实现高质量图形输出(一)>,分别介绍了AGG显示流程中的各个环节. 上次讲了AGG的显示原理并举了一个简单的例子,这一篇文章开始讲AGG工作流程里的每个环节.为了方便对照 ...

随机推荐

  1. PHP的命名空间 与类是自动加载

    namespace 假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的.因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件.所以 ...

  2. 利用Jquery获取、设置iframe中元素

    <iframe id="iframe" src="'+url+'"></iframe>'; //iframe加载完成后 $(" ...

  3. 适配器模式/adapter模式/结构型模式

    定义 将类的接口转化为客户端希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作,别名Wrapper(包装器). 适配器模式,最终改变一个已有对象的接口. 使用场景 当有那么个类, ...

  4. js实现复制到剪贴板功能,兼容所有浏览器

    http://www.cnblogs.com/PeunZhang/p/3324727.html https://github.com/zeroclipboard/ZeroClipboard 复制链接到 ...

  5. linux系统meminfo详解(待补充)

    ========================================================================================== MemTotal: ...

  6. php_codesninffer phpcs用法学习使用:

    18:34 2016/1/12php_codesninffer phpcs用法学习使用:可以加一个参数设置结果输出为各种格式:如source格式:$ phpcs -s --report=source ...

  7. JavaBean对象与Map对象互相转化

    /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...

  8. ES6 ( 三 ) 字符串扩展

    一.字符Unicode表示方法 ES6中可以使用以下6种方法表示字符 '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // tru ...

  9. C++ 画星号图形——空心三角形(星号左对齐)(核心代码介绍)

    //输出一个由星号组成的三角形(星号左对齐) int a;//控制组成三角形的星号的行数 cout<<"请输入要组成三解形的星号的行数n(n>=2):\n"; c ...

  10. requirejs:研究笔记

    模块化历史 模块化异步加载方式 后期维护 查找问题 复用代码 防止全局变量的污染 http://requirejs.cn/ http://requirejs.org/ 我的目录结构 总体步骤 < ...