在信号处理领域,压缩感知(Compressed Sensing)是一种能够从远少于传统奈奎斯特采样定理所要求的样本数目中重建稀疏信号的技术。压缩感知的理论基础在于一个前提假设,即许多自然信号都含有稀疏的表示,换句话说,这些信号可以用很少的非零系数表达。在这个框架下,贪婪算法,如匹配追踪(Matching Pursuit, MP)和正交匹配追踪(Orthogonal Matching Pursuit, OMP),提供了有效的求解方法。
匹配追踪(MP)算法
可以将MP算法比喻为从一堆不同币值的硬币中挑选出一些来凑出总金额369元的过程。MP算法的工作原理是迭代选择与当前残差相关性最强的字典元素(即币值),然后更新残差(即剩余需要凑出的金额)。
正交匹配追踪(OMP)算法
OMP算法在MP的基础上增加了一个正交化步骤,这意味着在每次迭代中,它不仅选择一个与残差相关性最强的字典元素,而且还考虑已经选取的字典元素,确保新选择的元素与已选择的元素正交。这就如同在凑金额的过程中,确保不会重复考虑同一币值的硬币。
贪婪算法在压缩感知中的应用
假设你站在一家糖果店前,店主提出一个有趣的挑战:你被给予了一堆不同面值的硬币,你的任务是选出若干硬币,它们的总额恰好等于369元。这个任务看似简单,却隐藏着复杂性,因为硬币的面值多种多样,选择的方式也有无数种。
在这个挑战中,你可以采用一种贪婪的策略。开始时,你没有任何硬币,总额差距为369元。你的策略是:每一步都选择一个能让你离目标金额最近的单个硬币。这个选择过程就是贪婪算法的核心思想,而在信号处理中,这种策略对应的是“匹配追踪”算法。
贪婪算法之所以得名,是因为它在每一步都尽可能选择最佳的局部解,而不是从全局角度出发。在糖果店的例子中,你可能首先选择了一个价值300元的硬币,因为这是单个能最大限度减少差距的硬币。然后你剩下69元没有凑出,这时你再次从剩下的硬币中选择一个能使剩余金额最小的硬币,比如一个50元硬币,如此类推,直到最后凑齐所需的369元。
现在,想象糖果店升级了挑战规则。这次,每选择一个硬币后,你需要重新评估所有已选择硬币的组合,确保它们之间没有重复,并尽可能使总额接近目标值。这个新策略对应的则是“正交匹配追踪”算法。在OMP中,算法不仅选择与剩余金额相关性最强的硬币,还确保所有已选硬币的集合是最优的。
在压缩感知中,我们面对的不是硬币和金额,而是信号和稀疏基。信号可以被视为金额总数,而稀疏基中的元素则如同不同面值的硬币。MP和OMP算法的任务是从过完备的字典基中挑选出一个最佳的稀疏表示,就像从一堆硬币中凑出特定金额一样。
在信号重建中,这种挑选过程的目标是用尽可能少的字典元素(即硬币)准确地表示信号(即金额)。MP和OMP算法通过迭代地选择字典元素(硬币)并更新残差(剩余金额)来实现这一目标,从而使信号的重建过程高效且准确。
通过以上比喻,我们可以看到,虽然MP和OMP算法在数学上可能显得抽象和复杂,但它们实际上与我们日常生活中的某些问题类似,而且通过这些算法我们能够在压缩感知的领域取得显著的成果。
相关博文
理解并实现OpenCV中的图像平滑技术
OpenCV中的边缘检测技术及实现
OpenCV识别人脸案例实战
入门OpenCV:图像阈值处理
我的图书
下面两本书欢迎大家参考学习。
OpenCV轻松入门
李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。
在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。
本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。
计算机视觉40例
李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。