Я пытаюсь определить частоту размытия изображений лица с помощью приведенного ниже кода.
cv::Mat greyMat;
cv::Mat laplacianImage;
cv::Mat imageClone = LapMat.clone();
cv::resize(imageClone, imageClone, cv::Size(150, 150), 0, 0, cv::INTER_CUBIC);
cv::cvtColor(imageClone, greyMat, CV_BGR2GRAY);
Laplacian(greyMat, laplacianImage, CV_64F);
cv::Scalar mean, stddev; // 0:1st channel, 1:2nd channel and 2:3rd channel
meanStdDev(laplacianImage, mean, stddev, cv::Mat());
double variance = stddev.val[0] * stddev.val[0];
cv :: Mat M = (cv :: Mat_ (3, 1) << -1, 2, -1); cv :: Mat G = cv :: getGaussianKernel (3, -1, CV_64F); </p>
cv::Mat Lx;
cv::sepFilter2D(LapMat, Lx, CV_64F, M, G);
cv::Mat Ly;
cv::sepFilter2D(LapMat, Ly, CV_64F, G, M);
cv::Mat FM = cv::abs(Lx) + cv::abs(Ly);
double focusMeasure = cv::mean(FM).val[0];
return focusMeasure;
это иногда дает плохие результаты, как на картинке.
Существует ли лучший способ обнаружения размытых лиц? Я приложил пример изображения с высокой оценкой с кодом выше, который является ложным.
Лучший