问题标签 [photogrammetry]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 从 2d 图像创建设备的 3d 模型
目标:我必须创建一个机器零件的 3d 模型。我有大约 25 张从不同角度拍摄的同一事物的图像。
进展:我能够提取机器上大多数图像的标签的坐标。
问题:但我不知道如何进行。我已经阅读了一些关于航空三角测量的内容,但我不知道如何实现它。如果您能指导我正确的方向,我将不胜感激。
如果您可以使用 python 和 opencv 提供您的解决方案,那将非常有帮助。
编辑:对不起,我不能上传这个代码,因为它是机密的。请不要怪我,我只是实习生。虽然我可以说我从图像中裁剪了标签的模板,然后使用 Sift 在所有图像上匹配该模板以获取标签的坐标。
meshlab - COLMAP 摄影测量:重建只给出点云,没有网格
我一直在尝试使用 COLMAP 从照片中生成 3D 网格,但我能得到的只是无用的点云。
我研究了各种 YouTube 教程,但我得到的结果与我看到的不同,主要是因为我永远无法获得实体 3D 网格。
为了获得一致的曝光,我购买了一款名为 ProMovie+ 的 iPhone 应用程序,它可以在锁定曝光的情况下以 4K 拍摄,但会根据需要聚焦于拍摄对象。(iPhone 内置的 AE/AF 锁定功能让许多镜头失焦,但该应用程序解决了这个问题。)
接下来,我从生成的 4K 视频中保存了静止的 PNG 图像。就源图像而言,一切似乎都具有足够高的质量。
最初每秒捕获 1 个 PNG 的素材。在没有得到好的结果之后,我尝试以不同的增量增加 FPS,甚至高达 30fps(这是我拍摄的,我认为这是矫枉过正)。所以我现在排除了帧数据不足的问题。一定有别的原因导致我的捕获量很差。
这是我最终的结果:
相机位置用红色表示,由于我使用了很多数据帧(接近 500 个)以希望获得可用的结果,因此它显示为一条红色的大实线。你能看到点云中那个黄色的东西吗?这就是我试图捕捉的对象。看起来没什么大不了的...
我希望结果更像这样(取自视频教程):
显然我做错了什么,因为 COLMAP 并没有为我产生任何接近这个的东西。一旦我得到一个从 COLMAP 导出到 MeshLab 的 .ply 文件,当我打开点大小滑块时,我可以区分顶点中的颜色。
但它只显示顶点颜色,由于我的几何图形上没有面,我被卡住了,不知道是否可以生成面或使用这个 3D 数据。
更新:我找到了比我一直关注的其他教程更好的教程。它详细解释了稀疏重建是该过程的第一部分,而密集重建是第二部分。不幸的是,COLMAP 的开发人员做了一些不好的事情,他们没有提供没有 CUDA 的情况下执行密集重建的方法。
他们提供了一个糟糕的借口,即在 CPU 上执行此操作会很慢。我猜他们是在告诉我去买一台新电脑。
所以现在我正在研究是否有其他软件可以填补这个空白,或者是破解 COLMAP 以使用 CPU 的方法。
更新 #2:尝试安装 VSFM 以进行密集立体声重建,但没有提供安装程序,因此我必须构建它。进展顺利:
arkit - 如何在服务器上保存 ARKIT 扫描的资源?
我正在使用 ARKit 扫描 AR 环境。如果我将它保存在设备或应用程序包上,AR 应用程序可以完美运行。我想要的是在某种服务器上保存 AR 资源并在用户使用应用程序时同步这些资源。
mobile-application - 如何创建 3D 建模应用程序?我需要什么资源?
我想创建一个将 2d 图像/视频转换为 3d 模型的应用程序。在研究它时,我发现了类似的应用程序,如 Trnio、Scann3D、Qlone 和其他一些应用程序(尽管它们中很少有人提供较差的输出 3D 模型)。我还发现了一项由微软研究推出的名为 mobileFusion 的技术,它展示了我对我的应用程序所希望的相同愿景,但这些应用程序并非如此。
computer-vision - 图像坐标中的 ARKit 关键点 (2D)
问题说明”:
我想在使用ARKit的 Apple 智能手机的两个连续图像之间使用关键点(又名连接点),但我找不到这些。
我可以从ARPointCloud或rawFeaturePoints在世界参考系中找到 3D 值,但我无法为实际检测到它们的对的每个图像找到 2D 值(即在图像参考系中)(可能使用一些修改后的SIFT检测器或任何算法。 ..事实上,我也想知道使用了哪种算法)。
问题:
您知道它们存储在哪个对象中或我如何检索它们吗?
我想将它们重新投影到相机在其他软件(python、scikit-image甚至opencv)中拍摄的图像上以进行一些处理。
image-stitching - 如何使用 pix4D 软件拼接无人机图像?
我只想使用 pix4D 软件并排注册无人机图像,但问题是我没有任何 GCP。如何获得所有图像都正确拼接的马赛克?
photogrammetry - Meshroom:如何访问最终的相机参数?
我正在尝试编写一个脚本,从 Meshroom 加载相机参数并将它们导入 CAD 程序。我的第一个理解是这些参数(位置、旋转矩阵、焦距等)包含在 StructureFromMotion 子目录中的 JSON文件camera.sfm中。
在将这些参数导入 Rhino3D 并将生成的 3D 网格视图与 PrepareDenseScene 目录中未失真的照片进行比较后,我发现了惊人的巨大差异。运行结果的网格很好,所以我认为偏差是因为cameras.sfm中的参数不是最终的。文件仅包含从输入图像的 EXIF 信息中读取的焦距并且没有细化值,这一事实也支持了这一假设。所以我的问题是:
如何从 Meshroom 的输出中访问最终的相机参数?
知道这一点对我重建之前为 VisualSFM + CMPMVS 实施的摄影测量/CAD 管道有很大帮助。
非常感谢!
编辑:由于这是我的第一篇文章,我无法为 Meshroom 创建新标签。也许这可以由其他人添加?谢谢!
python - 用于 windows 的 python 摄影测量工具箱 GUI
我最近学习了摄影测量,对使用 python 摄影测量工具箱很感兴趣,但是,我正在使用 windows 10 64 位,我不知道如何在 windows 中安装 PPT。我能找到的唯一与 Windows 相关的 PPT GUI 在 http://arc-team-open-research.blogspot.com/2011/09/python-photogrammetry-toolbox-for.html
有谁知道有关如何在 Windows 10 上安装的任何教程?
编辑:python 3.6 64bit 已经安装在我的电脑上(虽然是 python 的初学者)
opencv - OpenCV 立体摄影测量 - 为什么我的 Z 轴与主点不一致?
据我了解 OpenCV 的坐标系,如图所示。
校准立体对的左侧相机位于面向 Z 方向的原点处。
我有一对经过校准的 2464x2056 像素相机(立体均方根值约为 0.35),计算了一对图像的视差并将其重新投影以获得 3D 点云。但是,我注意到 Z 轴与相机的光学中心不一致。
这确实与我希望做的一些点云操作有点混乱——这是预期的,还是表明在此过程中出现了问题?
下面是我生成的点,加上轴——红绿线和蓝线分别表示从原点出来的 x、y 和 z 轴。
如您所见,当我在校准期间将主点固定为 cx = 1232,y=1028 时,Z 轴截取头部和后部之间的点云,这对应于大约 x = 637, y = 1028 的像素坐标。当我删除 CV_FIX_PRINCIPAL_POINT 标志时,这大约计算为 cx = 1310,cy=1074,并且 Z 轴在 x=310,y=1050 附近截取。
与此处的校正图像相比,中点 x = 1232,y=1028 用黄色十字标记,图像的中心位于人体模型上方,Z 轴之间的交点与我预期的位置明显不同。
有谁知道为什么会发生这种情况?任何帮助将不胜感激。
swift - 如何将无人机相机的欧拉角和高度转换为图像中心坐标?
我正在尝试计算用无人机拍摄的图像中心像素的真实世界 3D 坐标。我有无人机的经度、纬度、高度和欧拉角(偏航、俯仰和滚动)。假设地面是平坦的(海平面,因为这是无人机的绝对高度)。
现在我只看图像的中心,所以滚动角可能是不必要的,但我仍然拥有它以备将来使用。
如果可能的话,我对图像中心的 lon、lat、高度 (0) 感兴趣。
我尝试用欧拉角制作一个旋转矩阵,并将其与无人机和地面之间的向量相乘。然后将结果添加到无人机的初始位置向量,然后添加到长度,直到它达到海平面。但这似乎并没有给出预期的结果。
编辑:我一直在解决这个问题并进行了一些更新,但我仍然没有做对。我在地图上绘制我的结果并与已知位置进行比较,我可以告诉我我的结果是关闭的。代码:
我尝试使用 Beta 在此线程中描述的方法:如何将欧拉角转换为方向矢量?但我似乎误会了什么。
我不确定最后添加矢量分量时要使用什么角度。我猜这可能是我的问题。我的 Coordinate 类只使用 long 和 lat,但我是否必须以某种方式添加 z 组件才能使其正确?在这种情况下我应该以什么角度添加它?