【问题标题】:Focus-stacking using OpenCV / Emgu CV使用 OpenCV / Emgu CV 进行焦点堆叠
【发布时间】:2016-10-12 10:07:47
【问题描述】:

我有一个 C# (Emgu CV) 应用程序,我可以在其中以不同的焦距捕获同一场景的多个图像。现在我想创建一个多焦点图像模拟,如本文所述http://blog.patdavid.net/2013/01/focus-stacking-macro-photos-enfuse.html

我找不到任何使用 OpenCV 的方法。 我能够使用此代码为我的图像创建锐度图

private Image<Gray, float> GetFocusMask(string imgfile)
    {
        var img = new Image<Bgra,byte>(imgfile);

        Image<Gray, byte> imgGray = img.Convert<Gray, byte>();
        Image<Gray, float> roughSharpness = imgGray.Laplace(5);
        roughSharpness = roughSharpness.Dilate(2);
        roughSharpness._SmoothGaussian(3);

        return roughSharpness;
    }

不幸的是,我现在卡住了,不知道如何使用此蒙版来计算原始焦点图像集合的单个景深图像。

【问题讨论】:

    标签: c# .net opencv focus emgucv


    【解决方案1】:

    我做过类似的事情,使用与拉普拉斯不同的度量,但想法是一样的:

    1. 使用拉普拉斯或类似方法计算每个深度的清晰度分数。

    2. 创建深度图。地图与图像大小相同。每个像素都包含该点锐度得分最高的深度索引。

    3. 使用中值滤波器(例如 5x5)过滤深度索引。这将减少错误深度值的数量。

    4. 创建合并图像。在每一个点,从深度图中选择该点索引对应的像素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2013-07-04
      • 2017-12-18
      • 2011-09-04
      • 2015-04-08
      • 1970-01-01
      相关资源
      最近更新 更多