2017-06-23 1 views
0

Je voulais savoir où je peux trouver comment la fonction GaussianBlur dans OpenCV est implémentée. En parcourant le code source, je n'ai trouvé que file mais je cherche le code où la convolution est faite. par exemple quelque chose comme ceci:Comment fonctionne la fonction GaussianBlur dans OpenCV

for x to picture.rows 
    for y to picture.cols 
     for r to mask.width 
     for c to mask.cols 
      do convolution 

Est-ce que le OpenCV GaussianBlur calcule la circonvolution pour chaque pixel ou quelque chose comme chaque seconde pixels pour accélérer?

+0

La mise en œuvre contient des informations provenant du champ de vision par ordinateur, ce qui peut ne pas être sur le sujet pour le SO. –

Répondre

-1

Ci-dessous sont quelques liens où le filtre gaussien a été mis en œuvre J'espère que cela vous aide.

Exemple de code -

int main(int argc, char** argv) 
{ 
    //create 2 empty windows 
    namedWindow("Original Image" , CV_WINDOW_AUTOSIZE); 
    namedWindow("Smoothed Image" , CV_WINDOW_AUTOSIZE); 

    // Load an image from file 
    Mat src = imread("MyPic.JPG", CV_LOAD_IMAGE_UNCHANGED); 

    //show the loaded image 
    imshow("Original Image", src); 

    Mat dst; 
    char zBuffer[35]; 

    for (int i = 1; i < 31; i = i + 2) 
    { 
     //copy the text to the "zBuffer" 
     _snprintf_s(zBuffer, 35,"Kernel Size : %d x %d", i, i); 

     //smooth the image using Gaussian kernel in the "src" and save it to "dst" 
     GaussianBlur(src, dst, Size(i, i), 0, 0); 

     //put the text in the "zBuffer" to the "dst" image 
     putText(dst, zBuffer, Point(src.cols/4, src.rows/8), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255), 2); 

     //show the blurred image with the text 
     imshow("Smoothed Image", dst); 

     //wait for 2 seconds 
     int c = waitKey(2000); 

     //if the "esc" key is pressed during the wait, return 
     if (c == 27) 
     { 
      return 0; 
     } 
    } 

    //make the "dst" image, black 
    dst = Mat::zeros(src.size(), src.type()); 

    //copy the text to the "zBuffer" 
    _snprintf_s(zBuffer, 35,"Press Any Key to Exit"); 

    //put the text in the "zBuffer" to the "dst" image 
    putText(dst, zBuffer, Point(src.cols/4, src.rows/2), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255)); 

    //show the black image with the text 
    imshow("Smoothed Image", dst); 

    //wait for a key press infinitely 
    waitKey(0); 

    return 0; 
} 

Links-

Link 1

Link2

+0

Bien que les liens puissent répondre à la question, veuillez en copier le contenu pertinent dans la réponse. –

+0

a ajouté l'exemple de code comme suggéré –

+0

Ce n'est pas l'implémentation du filtre gaussien ... c'est juste du code qui l'utilise. – Miki