2017-05-13 1 views
1

J'ai deux images: originale et estompée. Le problème principal est d'estimer le noyau qui a été utilisé pour la convolution de l'image originale pour être blured.Opencv. Estimer le noyau après le blanchissement

Exemple simple d'obtenir l'image blured:

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); 

Maintenant, imaginez que j'ai Mat src_raw et blured et devrait estimer noyau. Je n'ai trouvé aucune fonction opencv pour le faire. Peut-être aurai-je besoin d'un algorithme d'optimisation pour l'obtenir? Si oui, puis-je le trouver dans un paquet opencv?

Merci

enter image description here

Répondre