如何在C#中获取拉普拉斯算子的方差
How to get the variance of Laplacian in C#
简单地说,我正在尝试使用 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*\
最后,我想要这个sharpenedImage
的方差。
我已经在 Python 中轻松地尝试过了:
def variance_of_laplacian(image):
lap_val = cv2.Laplacian(image, cv2.CV_8UC1)
return lap_val.var()
那么在 C# 中是否有 lap_val.var()
的等价物?
我找不到与此相关的任何匹配文章。谢谢!
方差是标准差的平方,所以你应该可以使用它。
以下代码使用 OpenCvSharp4
和 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;
}
}
简单地说,我正在尝试使用 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*\
最后,我想要这个sharpenedImage
的方差。
我已经在 Python 中轻松地尝试过了:
def variance_of_laplacian(image):
lap_val = cv2.Laplacian(image, cv2.CV_8UC1)
return lap_val.var()
那么在 C# 中是否有 lap_val.var()
的等价物?
我找不到与此相关的任何匹配文章。谢谢!
方差是标准差的平方,所以你应该可以使用它。
以下代码使用 OpenCvSharp4
和 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;
}
}