如何在C#中获得拉普拉斯方差

Gay*_*ya3 6 c# opencv variance

简而言之,我试图使用 OpenCVSharp 作为 C# 函数的一部分来计算图像的清晰度。

作为第一次尝试,我使用了拉普拉斯滤波器,如下所示:

int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = image.Type().Depth;

Mat sharpenedImage = image.Laplacian(ddepth, kernel_size, scale, delta);

\* calculate the variance of the laplacian*\
Run Code Online (Sandbox Code Playgroud)

最后,我想要 this 的方差sharpenedImage

我已经在 Python 中轻松尝试过:

def variance_of_laplacian(image):
    lap_val = cv2.Laplacian(image, cv2.CV_8UC1)
    return lap_val.var()
Run Code Online (Sandbox Code Playgroud)

lap_val.var()那么C# 中有类似的东西吗?

我找不到任何与此相关的匹配文章。谢谢你!

Pal*_*Due 8

方差是标准差的平方,所以你应该能够使用它。以下代码使用OpenCvSharp4and进行编译OpenCvSharp4.runtime.win,但我不知道它是否符合您的要求。试试看。

static double Variance(Mat image)
{
    using (var laplacian = new Mat())
    {
        int kernel_size = 3;
        int scale = 1;
        int delta = 0;
        int ddepth = image.Type().Depth;
        Cv2.Laplacian(image, laplacian, ddepth, kernel_size, scale, delta);
        Cv2.MeanStdDev(laplacian, out var mean, out var stddev);
        return stddev.Val0 * stddev.Val0;
    }
}
Run Code Online (Sandbox Code Playgroud)