gpt4 book ai didi

c++ - 使用 cv::Mat 的高效 C++ 四元数乘法

转载 作者:可可西里 更新时间:2023-11-01 15:23:43 25 4
gpt4 key购买 nike

我想乘以 2 个四元数,它们存储在 cv::Mat 结构中。我希望函数尽可能高效。到目前为止,我有以下代码:

/** Quaternion multiplication
*
*/
void multiplyQuaternion(const Mat& q1,const Mat& q2, Mat& q)
{
// First quaternion q1 (x1 y1 z1 r1)
const float x1=q1.at<float>(0);
const float y1=q1.at<float>(1);
const float z1=q1.at<float>(2);
const float r1=q1.at<float>(3);

// Second quaternion q2 (x2 y2 z2 r2)
const float x2=q2.at<float>(0);
const float y2=q2.at<float>(1);
const float z2=q2.at<float>(2);
const float r2=q2.at<float>(3);


q.at<float>(0)=x1*r2 + r1*x2 + y1*z2 - z1*y2; // x component
q.at<float>(1)=r1*y2 - x1*z2 + y1*r2 + z1*x2; // y component
q.at<float>(2)=r1*z2 + x1*y2 - y1*x2 + z1*r2; // z component
q.at<float>(3)=r1*r2 - x1*x2 - y1*y2 - z1*z2; // r component
}

这是 OpenCV 最快的方法吗?使用定点运算会最快吗?

最佳答案

this教程涵盖了访问不同像素的不同方法。与直接像素访问相比,Mat::at 函数被发现慢了大约 10%,这可能是由于 Debug模式下的额外检查。

如果您真的不在乎性能,您应该使用文中提到的 3 种不同方法重写您的方法,然后分析以找到最适合您情况的方法。

关于c++ - 使用 cv::Mat 的高效 C++ 四元数乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781033/

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