visual-c++ - 使用卷积方法处理35 x 35内核

亲爱的所有人,我想使用35 x 35内核进行卷积。有什么建议吗?或已经可以在opencv中使用的任何方法?因为现在cvfilter2d最多只能支持10 x 10内核。

最佳答案

如果由于OpenCV的大小限制而只需要快速解决方案,则可以将35x35内核分成5x5的7x7“内核图块”集,将每个“内核图块”应用于图像以获取输出,然后进行移位结果并将它们合并以获得最终的总和。

有关使用大型2D内核进行卷积的一般建议:

  • 尝试使用可分离的内核,即,内核是列 vector 和行 vector 的外积。换句话说,代表内核的矩阵是等级1。
  • 尝试使用FFT方法。空间域中的卷积与频域中的逐元素共轭乘法相同。
  • 如果内核是全等级的,并且出于应用程序的目的而不能被修改,则考虑使用SVD将内核分解为35个1级矩阵的集合(每个矩阵都可以表示为列 vector 的外积)和行 vector ),并且仅对与最大奇异值关联的矩阵执行卷积。这会将误差引入结果中,但是可以基于奇异值来估计误差。 (又称为MATLAB方法)

  • 其他特殊情况:
  • 可以表示为重叠矩形块之和的内核可以使用积分图像(Viola-Jones面部检测中使用的方法)进行计算。
  • 平滑且模态(具有少量峰值)的核可以通过2D高斯的总和来近似。
  • https://stackoverflow.com/questions/3844582/

    相关文章:

    opencv - 投影仪和 OpenCV

    docker - 如何在 Docker API 中使用挂载创建容器

    python - 如果测试失败,则停止/失败 docker build

    visual-studio - 使用Visual Studio的OpenCV中的链接器错误

    docker - 'network_mode' 和 'networks' 不能组合解决方法

    visual-c++ - cxcore210d.dll丢失

    opencv - 将OpenCV IplImage或Mat复制到Freeimage FIBITMAP

    opencv - 使用OpenCV进行镜头检测

    python - 在 Python 2.7 (Ubuntu/Windows XP) 上无法识别 Op

    python - 录像逻辑错误-fps