Есть ли способ определить, размыто ли изображение? - PullRequest
182 голосов
/ 14 октября 2011

Мне было интересно, есть ли способ определить, является ли изображение размытым или нет, анализируя данные изображения.

Ответы [ 12 ]

1 голос
/ 04 июня 2014

Код Matlab двух методов, которые были опубликованы в авторитетных журналах (транзакции IEEE по обработке изображений), доступен здесь: https://ivulab.asu.edu/software

проверьте алгоритмы CPBDM и JNBM.Если вы проверите код, его не очень сложно перенести, и, кстати, он основан на методе Марциалиано в качестве базовой функции.

0 голосов
/ 05 июня 2018

Это то, что я делаю в Opencv для определения качества фокусировки в регионе:

Mat grad;
int scale = 1;
int delta = 0;
int ddepth = CV_8U;
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
/// Gradient X
Sobel(matFromSensor, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT);
/// Gradient Y
Sobel(matFromSensor, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
convertScaleAbs(grad_y, abs_grad_y);
addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);
cv::Scalar mu, sigma;
cv::meanStdDev(grad, /* mean */ mu, /*stdev*/ sigma);
focusMeasure = mu.val[0] * mu.val[0];
...