用SIFT-OpenCV处理大型图像的错误

2024-09-28 01:33:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用opencvpython对遥感图像进行SIFT特征检测。这些图像是高分辨率的,可以是数千像素宽(7000 x 6000或更大)。不过,我的记忆力有问题。作为参考点,我在Matlab中运行了同样的7000 x 6000图像(使用VLFEAT),没有内存错误,尽管较大的图像可能会有问题。有人对使用OpenCV-SIFT处理这种数据集有什么建议吗?在

OpenCV错误:cv::OutOfMemoryError,文件C:\projects\OpenCV python\OpenCV\modules\core\src中内存不足(无法分配672000000字节)\分配cpp,第55行 OpenCV错误:断言失败(u!=0)在cv::Mat::create中,文件

(我使用的是Spyder IDE中的Python2.7和OpenCV3.4,它使用的是64位的Windows32GB内存。)


Tags: 文件内存图像错误像素特征opencvcv
2条回答

我会把图像分割成更小的窗口。只要你知道窗口重叠(我假设你知道横向偏移),任何窗口中的匹配都是有效的。在

你甚至可以用它来检查,图像任何部分的特征点之间的转换必须相同才能使转换有效

在这种情况下,有几种方法可以处理SIFT角点检测:

  1. 每单位/次一核处理单个图像
  2. 在单核上每单位时间多处理2个或更多图像
  3. 在多个核心上每单位时间多处理2个或更多图像。在

将核心读作cpu或gpu。线程化导致串行处理而不是并行处理。在

如前所述,Rebecca在她的个人电脑上至少有32gb的内存供她使用,这足以让选项1立即处理。在

所以从这个角度来看。。按照马丁的建议分割一幅图像。。。在我看来应该是最后的手段。在

Why should you avoid splitting a single image in multiple windows during feature detection (w/o running out of memory)?

回答:

如果一个角点位于窗口的分离侧,因此不情愿地变成了两个多多少少的多边形直线形状,那么您将找不到您要寻找的角点,除非您有专门的算法来搜索这些异常。在

偶然:

在丽贝卡的情况下,关键是要知道她采取了哪种方法来处理图像。。。是一个、两个或更多的图像同时加载到内存中吗?在

如果成百上千的图像同时加载到内存中。。。你基本上是通过剥夺系统的呼吸空间(以自由内存的形式)来窒息系统。此外,我们并不是在讨论其他加载到内存中并为各种后台程序声明(保留)或消耗内存空间的程序。这是当前最重要的问题。在

过度思考:

如果像Martin建议的那样,Opencv库在处理Rebecca描述的大量图像时存在问题。。做一些调试,然后把你的发现报告给Opencv,在这里贴一个问题,就像她那样。。。但是post还显示了如何在开始时处理图像处理的代码;如上所述,这一点很重要。是的,正如马丁所说。。。不要贴包装纸。。。这样做完全没有意义。一个版本(参考)可能比一个更多的链接。。。或标记;-)

相关问题 更多 >

    热门问题