如何使用opencv GpuMat在cuda上执行逐元素矩阵乘法?

How to perform element-wise matrix multiplication on cuda using opencv GpuMat?

本文关键字:元素 执行 opencv 何使用 GpuMat cuda      更新时间:2023-10-16

>正如标题所说,我需要使用 GpuMat 在 cuda 上执行逐元素矩阵乘法。我想要的结果是cv::Mat mul()函数为非 GPU 垫提供。我可以使用内置函数,也可以为该操作编写 kernell,但我几乎不需要帮助,因为我是 cuda 的新手。

我都准备好了编写内核来执行它,但到目前为止还没有成功。我也尝试使用可用于 GpuMats 的 mulSpectrums,但该函数要求矩阵是类型 CV_32FC2但我需要我的矩阵是CV_32F的。 如果实际上没有办法在不CV_32FC2的矩阵上执行该操作,那么您可以向我展示将矩阵类型从 CV_32F 更改为 CV_32FC2 并返回CV_32F的有效方法。

如果有人有时间和意愿,我希望得到额外的解释,了解如何在 CUDA 内核中对 GpuMat 矩阵执行操作。

我需要它将我的 SSIM 算法加速到尽可能低的值,因为 0.01 秒对我来说是很多 atm 的方式。

但是,在 cuda 内部的 GpuMat CV_32F 上执行该 mul 操作的任何类型的帮助都将很棒。

元素乘法可以使用 cv::cuda::multiply 执行。 https://docs.opencv.org/master/d8/d34/group__cudaarithm__elem.html

您还可以研究NPP库: https://docs.nvidia.com/cuda/npp/group__image__mul.html