- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试计算立体相机设置中两个对应像素与其各自对极线的距离。我为此目的实现的代码如下所示:
#include <iostream>
#include <vector>
#include <opencv2/calib3d/calib3d.hpp>
float calculateDistanceToEpiLineSum(const cv::Mat2f& left_candidate, const cv::Mat2f& right_candidate, const cv::Matx33f& fundamental_mat) {
// Calculate epipolar lines
cv::Mat epiLineRight=cv::Mat(1,3,CV_32FC1);
cv::Mat epiLineLeft=cv::Mat(1,3,CV_32FC1);
cv::computeCorrespondEpilines(left_candidate,2,fundamental_mat,epiLineRight);
cv::computeCorrespondEpilines(right_candidate,1,fundamental_mat,epiLineLeft);
// Calculate distances of the image points to their corresponding epipolar line
float distance_left_im=std::abs(epiLineLeft.at<float>(0)*left_candidate[0][0][0]+
epiLineLeft.at<float>(1)*left_candidate[0][0][1]+
epiLineLeft.at<float>(2))/
std::sqrt(std::pow(epiLineLeft.at<float>(0),2.f)+std::pow(epiLineLeft.at<float>(1),2.f));
float distance_right_im=std::abs(epiLineRight.at<float>(0)*right_candidate[0][0][0]+
epiLineRight.at<float>(1)*right_candidate[0][0][1]+
epiLineRight.at<float>(2))/
std::sqrt(std::pow(epiLineRight.at<float>(0),2.f)+std::pow(epiLineRight.at<float>(1),2.f));
return distance_left_im+distance_right_im;
}
int main()
{
cv::Matx33f fundamental_mat=cv::Matx33f{-0.000000234008931f,-0.000013193232976f, 0.010025275471910f,
-0.000017896532640f, 0.000009948056751f, 0.414125924093639f,
0.006296743991557f,-0.411007947095269f,-4.695511356888332f};
cv::Vec2f left_candidate_vec(135.,289.);
cv::Vec2f right_candidate_vec(205.,311.);
cv::Mat2f left_candidate(left_candidate_vec);
cv::Mat2f right_candidate(right_candidate_vec);
float distance_sum=calculateDistanceToEpiLineSum(left_candidate,right_candidate,fundamental_mat);
std::cout<<"The sum of the distances equals "<<distance_sum<<" pixels\n";
return 0;
}
我面临的问题是我可能必须每秒执行此操作数千次。我知道 cv::computeCorrespondEpilines
的第一个输入可以是一个像素 vector ,它允许使用更向量化的方法并且可能会稍微加快速度。问题是,我无法使用它,因为我使用的不是传统相机,而是 event-based sensors因此我将异步接收像素(而不是接收帧)。
现在我想知道以下内容:
calculateDistanceToEpiLineSum
是否存在重大缺陷以不好的方式影响功能的性能?在这里不使用 OpenCV 函数,而是自己实现 computeCorrespondEpilines
可能是个好主意吗? ax+by+c=0
将线参数存储在三元组中,但假设每台摄像机的分辨率为 480x360,我有两个 480x360x3 的矩阵,这是相当大的。这样做可行吗无论如何,还是有更好的方法?最佳答案
如果不知道您的计算约束是什么,就无法回答时间性能问题,因此以下是一个非常粗略的估计。
在底部,计算候选匹配像素对的一个点与其关联的对极线成本的距离粗略:
所以这对大约有 70 个翻牌。
这一切在几秒钟内意味着什么,至少取决于您的处理器时钟周期。 Skylake IA64 可以执行 16 个 DP 矢量化触发器/周期,因此称它为 5 个周期。在 3 GHz 时,耗时不到 2 ns。考虑到这一点,我们称其为总共 10 ns。
您说您必须每秒执行“数千次”此计算。以每对 10ns 的速度,您每秒可以完成 1 亿。
鉴于上述情况,您确定此特定操作将成为瓶颈,而不是例如来自相机的 I/O(包括图像解码)吗?
忠告:学习使用良好的微基准测试框架来获取硬件的实际性能数据。我推荐好老Google Benchmark .
关于c++ - 有效地计算像素到它们对应的对极线的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58912902/
我想检查我的应用程序或系统中是否存在库。在 Java 中,我通常执行 System.loadlibrary,但是有谁知道 C 中类似的相应调用吗? 最佳答案 是dlopen打开一个库,dlsym 从加
我在 typescript 中输入以下内容 export type Excludable = T & { isExcluded?: boolean } 其中过滤值: export type Filte
我最近在我的应用程序中添加了一种方法,可以自动格式化 TextView ,从“50000”到“50,000”,效果绝对完美。现在我遇到的问题是,在我的应用程序中,有多个按钮功能可以从该 TextVie
SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%' 对话表 id | chatMem
我正在编写一个需要将 Java Date() 值保存到 MySQL 数据库的 RESTful Web 服务,但是,我不确定 MySQL 中可以保存 Java Date() 的数据类型是什么,或者我是否
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
我曾尝试使用 swift 开发一款利用 iPhone 的 3D 触摸硬件的游戏。然而,当我将我的应用程序提交到 App Store 时,它被拒绝了,因为该游戏无法在 iPad 上玩。 我的问题是,
Qt 的有序关联容器对应项 std::map是QMap , std::set是QSet , 对于无序关联容器 std::unordered_map是QHash . 我应该用什么来代替std::unor
JavaScript 方法 String.fromCharCode() 在以下意义上与 Python 的 unichar() 等效: print unichr(213) # prints Õ on t
正如谷歌在 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" 中提到的那样,Google API 客户端库已重新
我正在使用 MapLayer 和 MapOverlay 在 map 中创建自己的路径/折线,GPS 捕获的所有点都存储在一个结构中,以便我可以访问它们。随时。 现在,我希望路径在用户操作 map (缩
我们使用 Adobe Flash Builder 创建由 Flex 提供支持的交互式 Web 应用程序。现在我们正在寻找替代方案,让我们在 UI 设计和迎合 HTML5 的编码方面拥有同样的开发便
我想知道Android/Java 中类似C#/C++ 中的GetTickCount 方法的相应方法吗? 最佳答案 Android 为 SystemClock.uptimeMillis() .请注意,u
我用 Vue + Phaser 开始了新项目,但是当我尝试加载 Assets 时,this.game.load.image 中的“load”和“add”返回“undefined”。我尝试从 JS 文件
我是一名优秀的程序员,十分优秀!