首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV同形-关于取消lanczos插值的问题

OpenCV同形-关于取消lanczos插值的问题
EN

Stack Overflow用户
提问于 2022-10-04 11:05:28
回答 1查看 64关注 0票数 0

我试图改进OpenCV lanczos插值算法的性能,将同形变换应用于天文图像,因为它很容易在某些图像中围绕星体振铃。我的方法是两次应用同形,一次使用lanczos,一次使用双线性滤波,它不受振铃的影响,但在保持细节方面表现不佳。然后,我使用双线性内插输出作为引导图像,并将lanczos插值输出夹紧到指南,如果其低于给定的百分比。我有工作代码(以下),但有两个问题:

  1. 似乎不适合在Mat中的元素中迭代。是否有更好的方法使用OpenCV Mat方法进行比较和替换循环?

  1. ,我的整体方法在计算上是昂贵的--我对整个Mat应用了两次单调法。是否有更全面更好的方法来防止拉克佐斯插值的放弃?(重写整个算法加上OpenCV提供的所有各种优化对我来说不是一个选项。)

代码语言:javascript
复制
    warpPerspective(in, out, H, Size(target_rx, target_ry), interpolation, BORDER_TRANSPARENT);
    if (interpolation == OPENCV_LANCZOS4) {
        int count = 0;
        // factor sets how big an undershoot can be tolerated
        double factor = 0.75;
        // Create guide image
        warpPerspective(in, guide, H, Size(target_rx, target_ry), OPENCV_LINEAR, BORDER_TRANSPARENT);
        // Compare the two, replace out pixels with guide pixels if too far out
        for (int i = 0 ; i < out.rows ; i++) {
            const double* outi = out.ptr<double>(i);
            const double* guidei = guide.ptr<double>(i);
            for (int j = 0; j < out.cols ; j++) {
                if (outi[j] < guidei[j] * factor) {
                    out.at<double>(i, j) = guidei[j];
                    count++;
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2022-10-04 18:11:32

克里斯多夫·拉克维茨( Christoph Rackwitz )给出的答案非常简单:

代码语言:javascript
复制
        compare(out, (guide * factor), mask, CMP_LT);
        guide.copyTo(out, mask);

谢谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73946947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档