Capel, David, and Andrew Zisserman. "Computer vision applied to super resolution." Signal Processing Magazine, IEEE 20, no. 3 (2003): 75-86.

简介

超分辨率重建的目的是使用一组低分辨率的图像来估计一副高分辨率图像。重建主要通过两个步骤来完成:配准低分辨率的图片组到一个公共的坐标系,然后使用图像的生成模型(generative image model)和图像的先验知识和匹配的图像组数据来形成高分辨率的图像。

图像配准

ML Registration to Two Views

假设真实的物体点投影到图像面上的坐标是\(\underline{x}\),而检测到的对应的点\(x\)的位置的概率分布可以表示为高斯分布: $ Pr(x|\underline{x}) = \frac{1}{2\pi\sigma^2}exp(-\frac{(x-\underline{x})^2+(y-\underline{y})^2}{2\sigma^2}) $

在两幅低分辨率图像中,给定了相互对应的一组理想特征点\({\underline{x}\leftrightarrow\underline{x}'}\),通过特征点检测算法计算得到的相应特征点对的似然概率就是: \(Pr(x,x')=\prod_i{}Pr(x'\_i|\underline{x}'\_i)Pr(x_i|\underline{x}_i)\)

使用\(log\)函数并去掉不影响函数最小化的\(\sigma\)后,点对的似然函数简化为:

\(L = \sum_i{}((x_i-\hat{x}\_i)^2+(y\_i - \hat{y}\_i)^2 + (x'\_i-\hat{x'}\_i)^2 + (y'\_i-\hat{y'}_i)^2)\)

式中理想点对间映射\(\hat{x'} = H\hat{x}\)可以带入其中,最终的方程中H和N个理想点的坐标(x,y共2N个参数)是未知数,使用非线性最优化进行估计,类似相机标定,得到最终的Homography矩阵H

Algorithm: Automatic Two-View Registration

  1. Feature : 计算亚像素特征点,Key Poins
  2. 特征点匹配
  3. RANSAC 配准:得到Homography矩阵 H
  4. 最优估计 H:通过最大化似然估计,得到优化的H
  5. 使用优化的H重新计算特征点匹配 通过迭代,使得匹配点对稳定,得到最后的H

多幅配准

如果是多幅图像,可以选择一副图像,然后估计所有其他图像到这幅图像的映射Homography矩阵系列\(H_i\)。

光度配准

由于相机的自动曝光、白平衡或是由于相机方位的改变,图像组的亮度和颜色并不统一,通常在图像位置匹配完成后,还需要进行灰度色彩值的配准,在两组图像或特征点区域中,我们可以设计一个线性的辐射度变化,然后通过匹配后的像素对应关系,计算这一线性变化的参数。

超分辨率重建

实际采集到的低分辨率图像可以看成是高分比率图像通过一系列的劣化过程得到的,这些过程包括:几何变换 、光学模糊、空间采样和噪声等,超分辨重建的过程其实就是这个劣化过程的逆过程,利用劣化后的图像来估计清晰的图像。接下来会讨论两种方法ML似然估计和MAP贝叶斯后验估计,但在之前会给出图像的生成模型。

生成模型 Generative Models

低分辨率图像的生成可以用一个公式来表示: $ g_n = \alpha_nM_n\bar{f}+\beta_n+\eta_n $

其中各个参数的解释如下:

  • \(\bar{f}\):理想的高分辨率图像按照像素位置展开的矢量;
  • \(g_n\):第n张低分辨率图像;
  • \(\alpha_n,\beta_n\):灰度或颜色配准的参数;
  • \(M_n\):劣化矩阵 \(M = s\downarrow(h(u,v) * \bar{f}(T(x, y))\),由以下几个部分组成:
    • \(T\):几何变换或变形
    • \(h(u, v)\) :综合的点扩展函数
    • \(s\downarrow\):下采样
  • \(\eta_n\):噪声

如果有N幅图像,就可以构成一个超定的线性系统:

最大似然估计

假设图像的噪声是高斯噪声,观测到的图样的概率为: $ Pr(g_n|\bar{f})=\prod_{\forall{}x,y}\frac{1}{\sigma_n\sqrt{2\pi}}exp(-\frac{(\bar{g_n}(x,y)-g_n(x,y))^2}{2\sigma_n^2}) $

式中的\(\bar{g_n}\)是有生成模型计算得到的,使用Log函数,去掉与最小化无关的\(\sigma\)得到的似然函数为: $ \sum_{\forall{}n}\mathcal{L}(g_n)=-\sum_{\forall{}n}\lVert{}M_n\bar{f}-g_n\rVert^2=-\lVert{}Mf-g\rVert^2 $

由于M非常大,这个类似最小二乘的线性系统,很难用伪逆\(M^+\)来计算,而需要使用迭代法进行计算,相关方法在常规的数值线性代数教科书上有详细描述。

贝叶斯最大后验估计

该方法普遍比最大似然估计有更好的效果,并且加入了图像的先验知识。由贝叶斯概率公式\(Pr(\bar{f}|g)=Pr(g|\bar{f})Pr(\bar{f})/Pr(g)\),使用Log函数,MAP方法的最优化问题可以表示为: \(f_{map}=\mathop{argmax}\_f lg Pr(\bar{f}) + lg Pr(g|\bar{f}) = \mathop{argmax}\_f lg Pr(\bar{f}) - \frac{1}{2\sigma_n^2}\lVert{}Mf-g\rVert^2\)

Gaussian MRFs

其中\(Pr(f)\)就是图像的先验知识。ML方法的最大问题在于分辨率持续增大时,噪声的影响也持续增大,最终图像信号淹没在了噪声中。而在MAP方法中,为了防止像素值无顾忌的被噪声占据,可以约束一个像素和其周边的像素具有一定的连续性,从而约束像素值在一个范围内。在数学表达式上,可以使用该像素点的导数来表示它和周边的连续性,如\(d_x, d_y, d_{xy}, d_{yx}\)。如前所述,\(f\)是按像素展开的矢量,而梯度算子在二维上是一个滤波器算子,也需要展开为一个更大的稀疏矩阵\(L\),并且像素值变化连续,导数就需要小,那么在MAP最大化式中,需要加上负号。综上,可以定义图像的先验概率为: $ Pr(f)=\frac{1}{Z}exp(-f^TQf), Q=L^TL $ 则Log的最大后验概率则会变为: $ f_{map}=\mathop{argmax}_f-\gamma^2\lVert{}Lf\rVert^2-\frac{1}{2\sigma^2}\lVert{}Mf-g\rVert^2 $

Huber MRFs

Gaussian MRFs方法使用高斯函数保证图像的平滑特性,但导致应该保持非连续的边界区域被过度平滑。为了保证边缘处的非连续性,采用更加鲁棒的估计方法Huber函数来估计像素点的梯度值,在计算出梯度后,带入huber函数,则可以保证对于分界线处梯度值的保证,相关信息可见Robust估计相关资料。

效果图

下面两张图给出了ML和MAP两种方法效果图,点开看大图。

Computer Vision Applied to Super Resolution的更多相关文章

  1. Analyzing The Papers Behind Facebook's Computer Vision Approach

    Analyzing The Papers Behind Facebook's Computer Vision Approach Introduction You know that company c ...

  2. Speech Super Resolution Generative Adversarial Network

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/10874993.html 论文作者:Sefik Emre Eskimez , Kazuhito K ...

  3. [转载]Three Trending Computer Vision Research Areas, 从CVPR看接下来几年的CV的发展趋势

    As I walked through the large poster-filled hall at CVPR 2013, I asked myself, “Quo vadis Computer V ...

  4. 计算机视觉和人工智能的状态:我们已经走得很远了 The state of Computer Vision and AI: we are really, really far away.

    The picture above is funny. But for me it is also one of those examples that make me sad about the o ...

  5. Computer Vision Tutorials from Conferences (3) -- CVPR

    CVPR 2013 (http://www.pamitc.org/cvpr13/tutorials.php) Foundations of Spatial SpectroscopyJames Cogg ...

  6. [学习笔记] CS131 Computer Vision: Foundations and Applications:Lecture 9 深度学习

    深度学习 So far this week Edge detection RANSAC SIFT K-Means Linear classifier Mean-shift PCA/Eigenfaces ...

  7. [学习笔记] CS131 Computer Vision: Foundations and Applications:Lecture 4 像素和滤波器

    Background reading: Forsyth and Ponce, Computer Vision Chapter 7 Image sampling and quantization Typ ...

  8. 【E2EL5】A Year in Computer Vision中关于图像增强系列部分

    http://www.themtank.org/a-year-in-computer-vision 部分中文翻译汇总:https://blog.csdn.net/chengyq116/article/ ...

  9. code and dataset resources of computer vision

    From:http://rogerioferis.com/VisualRecognitionAndSearch2014/Resources.html Source Code Non-exhaustiv ...

随机推荐

  1. css float引发的塌陷问题及解决方案

    如果父元素高度自适应,而且子元素有设置float left/right, 那么此时父元素的高度不会随子元素而变,如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题. ht ...

  2. MYSQL----myownstars(102)

    http://blog.itpub.net/15480802/cid-84815-list-1/

  3. phpcms 源码分析一: common.inc.php

      其实就是从网上找到的的逆雪寒的分析, 我下来之后发现格式和错字的问题,非常影响阅读,现在我就是做了下搬运工的角色, 同时将格式调整到可读性提高点而已,让各位看官稍微舒心点: 下面进入整体: < ...

  4. iOS之GCDAsyncSocket第三方库的使用

    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...

  5. c语言,strcmp(),字符串比较,看Asic 码,str1>str2,返回值 > 0;两串相等,返回

    #include<stdio.h> #include<string.h> int main() {  char *buffer1="aaa",*buffer ...

  6. 解决Ubuntu下sublime中不能输入中文的问题

    解决Ubuntu下sublime中不能输入中文的问题 Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sub ...

  7. Eclipse部署多个Web项目内存溢出,java.lang.OutOfMemoryError: PermGen space

    Eclipse部署多个Web项目内存溢出,java.lang.OutOfMemoryError: PermGen space >>>>>>>>>& ...

  8. (转)OpenVPN下载、安装、配置及使用详解

    原文地址:http://www.365mini.com/page/14.htm OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的 ...

  9. js数组&&字符串&&定时器2

    一.系统时间对象Date 方法 描述 Date() 返回当日的日期和时间. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周 ...

  10. 20160410javaweb之JDBC---DBUtils框架

    DBUtils 1.DbUtils 工具类 2.QueryRunner -- 两行代码搞定增删改查 (1)QueryRunner() --需要控制事务时,使用这组方法 int update(Conne ...