4

我已经研究了一段时间的计算机视觉并阅读了 OpenCV 源代码。这令人沮丧,因为源代码对我来说似乎并不清晰。我对 cvResize 有一个特殊的问题。我了解线性插值,但代码太复杂而无法阅读。有没有人知道 cvResize 是如何工作的以及结构是如何设置的,谁能给我解释一下?

4

2 回答 2

3

不太推荐看OpenCV的源码,主要是这几个原因:

  1. 如果您使用的是 C 接口,您可能正在查看 C++ 接口的包装器(如果您使用的是 OpenCV >= 2.0,则应该使用该包装器)。
  2. 存在许多适用于所有图像类型(精度、通道数等)的抽象。
  3. 特定于硬件的优化使代码更加复杂(例如针对 x86/x64 的 SSE/AVX 优化)。
  4. 特别是在调整大小的方法中,考虑到源/目标图像的大小,可能会有很多边缘情况需要处理。

为了从高层次上理解代码是如何工作的,我强烈建议阅读双线性插值最近邻插值Lanczos 重采样,并寻找在 Matlab 等面向科学的语言中调整大小的实现。信号处理和/或线性系统方面的知识将帮助您了解这些滤波器的质量差异。

于 2013-06-26T11:16:25.177 回答
0

OpenCV 文档很模糊,如果您正在阅读源代码,我假设您对源代码非常生气,就像我一样 :) 好吧,这需要一段时间,大量的实验和在线阅读。慢慢地你填补空白

  1. 假设您使用的是 OpenCV 的 C 接口
  2. 你可能应该通过这本书来了解 cvResize
  3. 除非您了解插值、双线性、三次的含义,否则您不会学习 cvResize 的所有选项。这些并不难,但您必须了解一点理论,然后自己编写程序来测试代码。
于 2013-06-26T11:03:49.113 回答