У меня есть два изображения: оригинальное и размытое. Основная проблема — оценить ядро, которое использовалось для свертки исходного изображения для размывания.
Простой пример получения размытого изображения:
Mat src_raw = imread("D:/codes/debluring/img/lena.png", 1);
Mat kernel = (Mat_<float>(5, 5) <<
0.0392, 0.0398, 0.0400, 0.0398, 0.0392,
0.0398, 0.0404, 0.0406, 0.0404, 0.0398,
0.0400, 0.0406, 0.0408, 0.0406, 0.0400,
0.0398, 0.0404, 0.0406, 0.0404, 0.0398,
0.0392, 0.0398, 0.0400, 0.0398, 0.0392
);
Mat blured;
filter2D(src_raw, blured, src_raw.depth(), kernel);
imshow("Source Image", src_raw);
imshow("Blurred", blured);
cvWaitKey(0);
Теперь представьте, что у меня есть мат src_raw а также размыли и должен оценить ядро. Я не нашел никаких функций opencv, чтобы сделать это. Может быть, мне понадобится алгоритм оптимизации, чтобы получить его? Если да, могу ли я найти его в пакете opencv?
Спасибо
Если я правильно понимаю, вы хотите решить проблему деконволюции, вот два связанных документа с предоставленным исходным кодом:
Других решений пока нет …