问题标签 [image-stitching]

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.

0 投票
1 回答
1480 浏览

c++ - 如何在使用 OpenCV / C++ 进行拼接之前检测图像位置

我正在尝试将 2 个图像合并/缝合在一起,但发现 OpenCV 中的默认拼接器类无法处理我的图像。所以我开始自己写。不幸的是,图像太大而无法附加到此消息中(它们的大小都是 12600x9000 像素)。所以我会尽量解释清楚。

这两张图片不是相机拍摄的照片,而是从 PDF 文件中提取的 tiff 文件。图像本身实际上是 CAD 图纸,所以没有太多渐变,因此我认为默认的拼接器类无法处理它们。

到目前为止,我设法提取了特征并匹配它们。我还使用以下众所周知的示例将它们拼接在一起:

我有点让它适合..因为我的问题是,在我的情况下,两个图像可以垂直或水平对齐。默认情况下,互联网上的所有缝合示例都假定第一张图像是左图,第二张图是右图。

所以我的第一个问题是:如何检测图像是在第一张图像的左侧、右侧、上方还是下方并创建适当大小的新图像?

其次..目前我得到了正确的图像..但是,因为我没有一些像样的代码来检查新图像的理想宽度和高度,所以我在新图像中有很多黑色/空白空间。删除那些黑色区域的最佳 C++ 代码是什么?(我在网上看到很多 Python 脚本.. 但没有 C++ 示例......而且我有 0 个 Python 技能......)

非常感谢您的帮助。问候,弗洛里斯。

0 投票
2 回答
1004 浏览

matlab - 气缸全景

我想创建金属(涂漆/其他)圆柱形物体的侧面的 2D 全景图,该物体可能有划痕或凹痕等缺陷。我拍摄了一段 300 帧的视频,具有相同的适当 ROI。现在我正在尝试缝合两个连续的帧,但没有控制点(无法识别),因为表面是均匀的,所以你不知道第二帧的第一列在第一帧中的位置。此外,由于金属表面的高反射特性,像素的强度值倾向于在两个连续帧上变化。由于表面的弯曲性质,每一帧都有失真。作为一种替代方法,我尝试使用多个凸轮,但我丢失了帧两端的“数据”。

0 投票
1 回答
4384 浏览

c++ - OPENCV CUDA -- getCudaEnabledDeviceCount 返回 0

我是 cuda 的 opencv 新手。我使用 opencv2.4.6 和 CUDA4.2。我已经成功地用 cuda 编译了 opencv。当我使用代码时:

它返回cudaSuccesscuda_count=1 但是,当我使用代码时:

为什么num_devices returns 0

我的完整代码是:

0 投票
0 回答
209 浏览

c# - 当accord.dll 出现OutOfMemoryException

我正在使用accord.dll 来处理图像。我在进行图像拼接时遇到了一个问题,即如果图像分辨率很高,并且我得到一张图像的有趣点是 31000,而第二张图像的有趣点是 22000。现在我正在尝试使用 CorrelationMatching 关联这些点。 match() 方法当时它给出了一个错误,比如内存不足异常,所以请建议我解决这个问题。

以下是在我的应用程序中编写的代码。

0 投票
0 回答
1378 浏览

c++ - 使用opencv和C++对3张图像进行全景拼接

我正在使用开放式 CV 和 C++ 将 3 张图像拼接在一起,从而形成全景图。所以我正在做的是.. 使用 SURF Detector 然后使用 Surf Descriptor Extractor 等来拼接 2 张图像。然后,我将这 2 个图像的结果保存在我的项目所在的文件夹中并重复相同的操作,但这次是 2 个缝合图像的先前结果和需要缝合的最后一个图像..我得到构建错误:S 任何人都可以请帮忙?

这是代码 pastebin.com/QuDuN0Ze

0 投票
0 回答
923 浏览

opencv - 使用拼接器模块拼接图像时的尺寸问题

我尝试使用 OpenCV 中的拼接器模块来拼接图像。下面是我的代码(核心部分)。

上面代码中的“imgs”是一个 Mat 类型的向量。

我在网上看到很多类似的代码与此类似,但我不知道为什么我的代码对输入图像的大小有很大的限制。如果输入图像大小约为 800 * 600,则效果很好。但是当大小为 650 * 650 或 1280 * 640 或其他大小时,控制台提示将在程序结束后很快关闭。并且没有图像保存在“panoResult.jpg”中。也不显示图像。Visual Studio 2010 只是Image_stitching2.exe: Native' has exited with code -1 (0xffffffff). 在我调试时显示。

有人可以帮忙吗?我真的需要在这方面取得进展,因为我已经花了几个小时来修复它,但只是不正确。任何提示或帮助对我来说都很棒。

0 投票
0 回答
393 浏览

c++ - 在 iPhone 中使用 OpenCV 时产生的图像拼接问题

我正在使用 OpenCV 拼接图像。我正在使用四张尺寸为"720 × 960 像素"的图像。从四个图像中,我使用了三个图像,这些图像将在应用程序启动时进行拼接。当我点击缝合按钮时,第四个将缝合。它工作正常。但是,当我将所有四个图像的大小从“720 × 960 像素更改为 640 × 960 像素”并再次在调整图像大小后运行代码时,问题就出现了,这三个图像的显示方式与我上面提到的相同,但是当我从我必须缝合第四张图像的地方点击缝合按钮时,编译器会在控制台中显示一条消息,如下所述 -

无法拼接图像,错误代码 = 1

<错误>:CGImageCreate:无效的图像大小:0 x 0。

我使用了以下代码-

在 CVViewController.h

在 CVViewController.m

我在项目中使用的代码在这里

还有一件事-我已经在 ios 7.0 模拟器中测试了我的代码以及上面的链接代码。当我将它运行到设备中时,它只是在控制台中显示了我上面提到的消息。

有人可以告诉我哪里可能出错以及如何解决吗?谢谢

0 投票
2 回答
2700 浏览

java - 是否可以从 Java 中在 Android 中进行全景图像拼接?

我正在使用 openCV4Android,我知道有很多与此主题相关的问题。他们中的大多数(有答案的人)建议使用 C++ 的解决方案并将其添加到文件夹 jni + Android.mk 等中的项目中。

我可以做些什么来避免 C++ 并从 Java 调用每个方法吗?

如果 OpenCV 无法实现,我愿意尝试替代方案。

谢谢。

0 投票
0 回答
3811 浏览

c# - OpenCV/EmguCV大图拼接

我在图像拼接技术和算法方面相当陌生。我需要的是拼接几张图像(从 2 到 20)。图像大小约为 4-5 MB,分辨率为 4000x3000。

由于我有 .NET 背景,我尝试了安装包附带的 EmguCV 拼接示例应用程序。但我一直收到 OutOfMemory 异常或未能分配 xxxxx 字节。之后,我尝试编写使用 OpenCV 的本机 C++ 控制台应用程序并得到相同的结果。所以问题出在拼接实现内部,或者我需要为 Stitcher 类设置一些特殊设置?

尝试了不同版本的 Emgu - 2.9、2.4.2 和 2.4,OpenCV - 2.4.7

将图像大小调整到 800x600 并没有帮助。当它非常小时,库返回 0 作为结果。

我在两台不同的机器上测试了它,Windows 8 x64 8 GB RAM 和 Windows 7 x64 16 GB。在这两种情况下,应用程序都会尝试使用所有可用内存,然后崩溃。

有谁知道这个库可以处理的最大图像大小是多少?我应该使用哪些设置来减少内存使用量?有没有人能够拼接大图像?

将不胜感激任何帮助或建议。

谢谢!

EmguCV C# 代码(它实际上是来自 EmguCV 图像拼接示例应用程序的代码)

OpenCV C++ 代码:

更新:

在缝合器中禁用波校正后,我能够处理更大的文件并且它不会填满所有可用的 RAM。

我也想知道处理多张图像的最佳方法是什么。将它们一个接一个地缝合或将所有图像放入数组中并将所有处理责任交给 OpenCV 库?

OpenCV库中实现的拼接算法是否有任何描述?我刚找到这张图http://docs.opencv.org/modules/stitching/doc/introduction.html 我想知道和理解幕后的所有细节,因为我会处理不同分辨率和大小的不同图像。所以对我来说,在性能和质量之间取得平衡很重要。

谢谢!

0 投票
2 回答
445 浏览

android - 带有 JavaCV for Android 的 Stitcher 中的 ExceptionInInitializerError

我正在使用此代码在 Android 上使用 JavaCV 进行图像拼接:

但是当我执行它时,应用程序崩溃并且日志显示以下错误:

并且错误指向 Stitcher initilization,即我的代码的第一行。如果我尝试这样做Stitcher stitcher;,它不会中断,但我不能做任何其他事情,因为缝合器没有初始化。如果我尝试将其初始化为null它会崩溃并出现相同的错误。

关于这个问题的任何想法?我一直在寻找一段时间,所有人都在使用它,而且它似乎有效。