稀疏表示介绍(上)

声明

  1. 之前虽然听过压缩感知和稀疏表示,实际上昨天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步。
  2. 主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro 第 9 课。
  3. 由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈!

1. Denoising 与 MAP

故事从 denoising 说起,话说手头上有一张含有噪音的图片 Lena,如何除去噪音得到好的 clean image 呢?

对于上面的问题,用 x 值表示某个像素的灰度值,我们可以建立这样一个最小化的数学模型:

其中, y 表示已知的观测值,也就是含有噪声的原图, x 表示要恢复成 clean image 的未知值。

模型的第一项的直观作用就是,预测值 x 不要离观测值 y 太远。数学上的解释是, x 的取值概率可以看做是以 y 为均值的高斯分布,即图像带有 Gaussian noise, 第二项是规则化项。由来如下:假设 x 本来是就带有某种先验概率的分布,现在又已知观测值 y, 根据贝叶斯原理, 现在 x 的分布(后验)正比于先验概率分布与高斯分布的乘积。如果先验概率分布也正是指数分布,将乘积取负对数,就可以得到上述在机器学习里非常常见的 MAP 模型。

现在的问题是:最好的先验 (prior) 究竟是什么? G(x) 应该取什么形式? 定义图像信号的最好空间是什么?

在学术界,这方面的工作已经做得非常多,对这个问题的探讨过程可以比喻成类人猿向人类进化的过程:

第一张图, prior 假设 clean image 能量尽量小, x 要尽可能地小。第二张图, prior 认为恢复后的图像要光滑,于是产生了 Laplacian 和 low energy 的结合,朝前进化了一步。第三张图,prior 认为要考虑 edges 是不光滑滴,需要不同情况不同处理…… Sparse and Redundant 是正在讨论的问题,目前是最新的进化版本,而后面也有一些算法,虽然也成功进化成人类,可惜太胖了,行动不便—— computationally expensive and difficult。 Sparse modeling 的先验究竟是什么?要回答这个问题,还需要了解一些基础概念。

2. Sparsity and Lp Norm

  1. How to Represent Sparsity

    表示一个向量的稀疏程度可以用 Lp norm, 对于 alpha 向量的某一个元素为 x, Lp norm 的计算公式和函数图像如下:

    我们希望不管 x 多大,它非零的惩罚是相同的,L0 norm 正好满足这个要求,它表示的意思是数出 alpha 向量中非零的个数

  2. Sparse Modeling of Signal

    一张 8×8 的图片,可以表示成 64 维的向量 x ,如何进行稀疏表示?下图中假设 N = 64:

    左边矩阵 D 是字典矩阵,由 K 个 N 维的列向量组成。 根据 K 与 N 的关系,又可以划分为:

    1. > N: over-complete, 这种情况在稀疏表示里面最常见
    2. K = N: complete, 例如傅里叶变换和 DCT 变换都是这种情况
    3. < N: under-complete

中间列向量 alpha 是一个稀疏向量,特点是非零项很少,图中只有三个非零项,代表 D 矩阵对应行向量的线性组合。

最后 x 向量表示恢复后的向量。

atoms 表示 D 的列向量

实际上 DCT 变换也可以看做是一种稀疏表示,它的 D 向量是由固定的且刚好完备的正交基向量组成,并且 alpha 向量也具有一定稀疏性。

对于上图,假设 D 矩阵 K > N,并且是满秩的,那么对于任意个 N 维的向量 b (图中是 x ),肯定有 Ax = b。现在加入 Lp norm 的约束条件,限制只能用少量的 A 的列向量 (atoms 作为基,向量 b 就被固定在某个 span 内,成为了一个 Lp 优化问题:

用紫色表示平面,用青色表示 norm 取同一个值的球形(等高线),问题如下:在平面 Ax = b 平面内选出 norm 最小的最优解

当 p >= 1时,norm ball和平面的交点有多个。这是一个凸优化问题,可以用拉格朗日乘子来解决这个问题。

当 0 < p < 1 时, norm ball 可行解十分稀疏,是一个非凸优化问题,解决这类问题很难,但是却有很好的稀疏性。

当 p = 0 时, norm ball 上的点除了坐标轴,其他部分无限收缩,与平面的交点在某一个坐标轴上,非零系数只有一个。

回到第一节将的 MAP 模型, Sparse Modeling 模型就是非零系数限制在 L 个之内(意味着解在至多 L 个 atoms 组成的 span 里),尽可能接近平面:

这样,我们用少量的 atoms 组合成真实信号,而 noise cannot be fitted very well, 在投影到低维空间的过程中起到了降噪的作用。

3. Some Issues:

模型可以改成 L0 norm 的形式和其他形式来计算或者求近似吗?

解集 alpha 向量是唯一的吗?我们可以求它的近似吗?如果可以,如何估计近似程度?

应该采用什么样的字典矩阵 D 才能较好地消除噪声?字典 D 如何确定?



参考资料:

[1]:Image and video processing, by Pro.Guillermo Sapiro 第 9 课

[2] http://hi.baidu.com/chb_seaok/item/bdc0903472229990b80c030f

时间: 2024-10-07 07:52:17

稀疏表示介绍(上)的相关文章

第 20 章 项目实战--首页内容介绍[上][3]

学习要点: 1.首页内容介绍[上] 主讲教师:李炎恢 本节课我们轮播图的下方,设计一个内容介绍,内容介绍分两部分,本次为上半部分. 一.首页内容介绍[上] //关于上节课轮播图,手册上其实有一个更好的方案,并不需要通过额外的代码控制. <a href="#myCarousel" data-slide="prev" class="carousel-control left"> <span class="glyphicon

【转】JSP内置对象详细介绍(上)

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

JSP内置对象详细介绍(上)&lt;转载&gt;

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

ASP.NET MVC 入门介绍 (上)

1. MVC模式 MVC模式是一种软件架构模式.它把软件系统分为三个部分:模型(Model),视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发 明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,此 模式通过对复杂度的简化,使程序结构更加直观.软件

稀疏表示介绍(中)

声明 之前虽然听过压缩感知和稀疏表示,实际上昨天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步. 主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro 第 9 课. 由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈! 1. Uniqueness 假设我们已知字典矩阵 D 和稀疏向量 a, 计算出一个信号 x,即

[Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的"原图"等,此时尝试学习Phantomjs和CasperJS来解决这个问题.这第一篇文章当然就是安装过程及入门介绍. 一. 安装Phantomjs 下载地址:http://phantomjs.org/        官网介绍:          PhantomJS is a headless WebKit scriptable with a JavaScript

【转载】Direct3D HLSL介绍(上)

原文路径:http://www.csharpwin.com/csharpspace/3087.shtml 写过Direct3D程序的朋友们可能还记得,在以往,大家常为如何表现更多真实的材质(如玻璃.金属等)而发愁.这种情况在DirectX8.0问世后有所改善了,我们可以编写Shader来完成.最新的Direct3D中,HLSL把程序员从复杂的Shader指令集中解放出来,着力于更重要的算法. HLSL(High-Level Shader Language)本文将从如下几个部分介绍 准备工作 HL

稀疏表示介绍(下)

声明 之前虽然听过压缩感知和稀疏表示,实际上前两天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步. 主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro 第 9 课. 由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈! 1. From Local to Global Treatment 图片尺寸有大有小,在 DC

[Python学习] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的"原图"等,此时尝试学习Phantomjs和CasperJS来解决这个问题.这第一篇文章当然就是安装过程及入门介绍. 一. 安装Phantomjs 下载地址:http://phantomjs.org/ 官网介绍: PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fas