我正在尝试优化此算法以使用移动摄像机视频进行自适应背景检测:
http://www.springerlink.com/content/4j2m3885r3133202/fulltext.pdf
该算法加快了背景模型的升级(SVD 对于实时应用来说太重了)。我可以管理 3 个属性来加速算法。属性是:
- N第一次 SVD 计算的帧数
- M描述背景模型的特征向量个数(M<=N)
- P等待批量更新的帧数
你知道我怎样才能找出处理时间和这三个属性之间的关系吗?
你知道如何找出最优值吗?
该算法的主要部分是在批量更新期间对传入帧进行正交归一化的 QR 分解。这个功能需要很多时间。
你知道计算正交化的更快算法吗?
这里是我正在使用的 m_cT 的函数 QR(论文中的矩阵U'=[U|E] ):
for (int i = m_iNFrame; i < m_iNFrame+m_iNUpdate; i++)
{
m_cT.col(i).copyTo(m_cQ.col(i));
for(int j = 0; j < i; j++)
{
m_cR.at<double>(j,i) = m_cQ.col(j).dot(m_cT.col(i));
m_cQ.col(i) = m_cQ.col(i) - m_cR.at<double>(j,i)*m_cQ.col(j);
}
m_cR.at<double>(i,i)=norm(m_cQ.col(i));
m_cQ.col(i)=m_cQ.col(i).mul(1.0/m_cR.at<double>(i,i));
}
在测试过程中,我注意到帧中的高频细节在相机运动过程中会产生大量误报。
你认为在 SVD 计算之前应用一个平滑滤波器可以得到更好的检测 BG/FG 吗?
谢谢您的帮助。