【问题标题】:gpu::matchTemplate versus cvMatchTemplategpu::matchTemplate 与 cvMatchTemplate
【发布时间】:2014-12-14 19:38:07
【问题描述】:

我已经实现了一个用于在图像中搜索图案的软件。使用 cvMatchTemplate 的执行时间约为 10 毫秒(因为我在 120x160 像素的搜索窗口中采用 40x40 的模式。图像是 640x480,所以我不考虑整个图像)。

我已经使用 gpu::MatchTemplate 实现了相同的算法,并且我期待执行时间得到改进。计算分数需要 220 毫秒。

发生了什么?

谢谢。

编辑:我测量了图像的加载时间,执行“.upload”功能需要 1 毫秒,因为图像已经解压缩。

算法不一样吗?

编辑:我使用 CUDA 和我自己的内核编写了代码:它使用图像上的 cuda 函数执行 FFT,算法的整个执行时间不到 2 毫秒,图像为 1024x1024,模式为 200x200。 我使用 thread_sync 来测量 exec。时间。

【问题讨论】:

  • 即使使用 FFT,对于 1024*1024 和 200*200 模板而言,不到 2ms 的结果令人惊讶。您是否使用了简单的 fft(参见 docs.opencv.org/modules/core/doc/operations_on_arrays.html#dftconvolveDft 方法)?我假设您必须以相同大小的图像( 1024*1024 )计算 200*200 模板的 fft。或者您是否选择了基于图块的关联以利用较小的模板?
  • 我使用 cufftExecR2C 对整个图像执行 FFT,所以您的假设是正确的。 FFT执行时间非常非常小,不到1毫秒(当然取决于使用的显卡)。无论如何,我编写了自己的内核来执行相关性(FFT mul,相关系数计算,搜索模式)。我使用 opencv 只是为了拍摄图像。

标签: opencv gpu cpu matchtemplate


【解决方案1】:

我认为这在很大程度上取决于您的 GPU 处理能力,有些 gpu 的性能无法比 cpu 好。 看到这个问题gpuvscpu

【讨论】:

  • 实际上我正在两个不同的 GPU 上测试相同的代码:GTX 660m 和 GT640。而且我有相同的执行时间(或多或少)
猜你喜欢
  • 1970-01-01
  • 2015-03-15
  • 2017-06-26
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 2018-05-08
相关资源
最近更新 更多