计算机视觉之目标跟踪(二) 稀疏表示及MP算法实现

稀疏表示及MP算法

天天在实验室划,回宿舍了就好好总结一下写篇博客吧
-----------------------------分割线--------------------------------
上一次介绍了用均值漂移(meanshift)算法来实现目标跟踪,有许多的局限性。同样是生成式的目标跟踪算法,稀疏表示(sparse coding)更加受到研究者的重视。
稀疏表示即将二维的图像用一个系数矩阵和稀疏字典来近似表示,打个比方:如果图象a是M×N的矩阵,我们只需一个M×K的系数矩阵b和一个K×N稀疏字典c,使得a近似于b×c。
那么参数不是更多使得信号更复杂了吗?
答案是NO,因为系数矩阵b的大部分参数都是为0的,而稀疏字典c是已知的,所以图像a就被压缩成了极少的数字。
这是借鉴了人类的大脑记忆方式(我猜的):我们在记住一个物体时,不可能记住该物体的全部图像信息,而只是记住了一个模糊的“印象”,使得我们下次见到它时能够识别出来。
回到我们的问题,我们需要找到一个稀疏字典,并让稀疏字典内尽可能少的向量来表示我们的原始图像。若我们一个一个去试的话,无疑会耗费大量的算力,所以这是一个np难的问题。所以我们只能找出一个尽可能优的解。
有如下方法解决:
1.贪婪算法
2.松弛算法
在这里只给出贪婪算法中的MP算法(因为暂时只学到这里hiahia)。
MP算法步骤:

  • step1 初始化系数矩阵为0,找到稀疏字典C(关于稀疏字典的学习以后再说,这里用随机正交矩阵代替)令要表示的图像的一个向量为误差f 。
  • step2 在稀疏字典中找出与f最为相近的向量m
  • step3 求出f在m向量上的投影与m的比值alpha,使得f=alpha*m+k,其中k为新的误差
  • step4 判断该误差是否小于误差阈值,若小于,则退出程序;否则,令f=k,回到step2

这样,经过多次迭代,最终得到初始向量:
f0=alpha1m1 + alpha2m2 + alpha3*m3 + c(c为可容忍的误差)
python实现如下:

import math
import numpy as np
import cv2

img = cv2.imread("./img/image.jpg")

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#生成稀疏基DCT矩阵
mat_dct_1d=np.zeros((60, 60))
v=range(60)
for k in range(0, 60):
    dct_1d=np
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值