gpt4 book ai didi

c# - GPU 上的 OpenCV MatchTemplate

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:44 24 4
gpt4 key购买 nike

在我的 C# 项目中,我需要快速模板匹配算法。我现在拥有的是 OpenCV 实现。简化的代码是:

 using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
// ...

var image = new Mat("Image.png");
var template = new Mat("Template.png");

double minVal, maxVal;
Point minLoc, maxLoc;
var result = image.MatchTemplate(template, MatchTemplateMethod.CCoeffNormed);
result.MinMaxLoc(out minVal, out maxVal, out minLoc, out maxLoc);
Console.WriteLine("maxLoc: {0}, maxVal: {1}", maxLoc, maxVal);

我想在 GPU 上进行相同的计算以显着加快它们的速度,但找不到如何执行此操作的示例。 github 上的示例已被注释掉,似乎不起作用。

最佳答案

我之前尝试过将 OpenCV 的 matchTemplate() 函数移植到 GPU。

他们实际上给出了 their documentation for the method 中的方程式.这称为“归一化互相关”。

enter image description here

天真的方法是简单地将其移植到 GPU(我将其作为像素着色器)。结果比 OpenCV 的 CPU 方法慢。为什么?他们实际上使用了一种称为“快速归一化互相关” 的方法,如this paper 中所述。来自 ILM 的 J.P Lewis。

诀窍是在频域中进行相关并利用 convolution theorem :频域中的逐点乘法相当于空间域中的卷积。对我们来说,这意味着时间复杂度大大降低,我们只需添加一个 FFT。

关于c# - GPU 上的 OpenCV MatchTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30939869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com