gpt4 book ai didi

c++ - 使用 Seamfinder 和 Exposurecompensator 进行图像拼接需要更多时间

转载 作者:太空狗 更新时间:2023-10-29 23:12:00 25 4
gpt4 key购买 nike

我正在尝试拼接图像和我正在处理的代码,它使用了 SeamFinder 和 ExposureCompensator 以及其他功能。但是在运行代码时,这两个花费了很多时间。是否有任何其他替代方案或是否有提高性能的方法。

Ptr<ExposureCompensator> compensator = ExposureCompensator::createDefault(expos_comp_type);
compensator->feed(corners, images_warped, masks_warped);

seam_finder = makePtr<GraphCutSeamFinder>(GraphCutSeamFinderBase::COST_COLOR);
seam_finder->find(images_warped_f, corners, masks_warped);

以上是两个比较耗时的功能。请帮我解决这个问题。提前致谢。

最佳答案

众所周知,在许多情况下,通过 OpenCV 进行的 ImageStitching 速度很慢。或许您可以在这里试一试 Open MP Parallel 并通过使用并行化来应对您面临的延迟。

OpenMP 由一组控制程序工作方式的编译器 #pragmas 组成。 pragma 的设计使得即使编译器不支持它们,程序仍会产生正确的行为,但没有任何并行性。

在循环的不同迭代彼此无关的情况下,因此使这些循环成为并行化的主要目标。 OpenMP 有效地利用了这些常见的程序特征,因此只需在您的源代码中添加几行编译器指令,就可以非常容易地让 OpenMP 程序使用多个处理器。

如果您正在运行一个正在拼接一组图像的循环,您可以确保每组图像的拼接并行运行。

#pragma omp parallel for
for( ... )
{
// Image-stitching algorithms go here.
}

此编译器指令 #pragma opm parallel for 告诉编译器使用 OpenMP 自动并行化 for 循环。

对于非循环,或者只是代码段,你可以做这样的事情:

#pragma omp parallel sections
{
#pragma omp section
{
DoSomething();
}

#pragma omp section
{
DoSomethingElseParallely();
}
}

我知道答案可能不会直接帮助你,但可能会给你一些挖掘的途径。

您可以详细了解 OpenMP loop Parallelism 的用法和 OpenMP: Sections 在使用之前。

关于c++ - 使用 Seamfinder 和 Exposurecompensator 进行图像拼接需要更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48656703/

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