Rejoindre assez près les contours de openCV

J'ai un ensemble de détection de contours/gouttes à partir d'une image.
Le problème est que certains de ces gouttes sont un split au cours de blob de détection et de lissage.
J'ai essayé d'utiliser le code suivant.

Mat outlines=Mat::zeros(m3.size(),CV_8UC3);
findContours(m3,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE,Point(0,0));
//Approximate Contours
std::vector<std::vector<cv::Point> > contours_poly( contours.size() );
for( int i = 0; i < contours.size(); i++ ) {
    approxPolyDP(cv::Mat(contours[i]), contours_poly[i], 5, true );
    std::vector<cv::Point> hull;
    cv::convexHull(cv::Mat(contours_poly[i]),hull);
    cv::Mat hull_points(hull);
    cv::RotatedRect rotated_bounding_rect = minAreaRect(hull_points);
    Point2f vertices[4];
    if(rotated_bounding_rect.size.area()==0){
        continue;
    }
    rotated_bounding_rect.points(vertices);
    for (int i = 0; i < 4; ++i)
    {
        cv::line(outlines, vertices[i], vertices[(i + 1) % 4], cv::Scalar(0, 255, 0), 1, CV_AA);
    }
}

Le problème est que, même si ces contours sont détectés et le joint à l'aide de la approxPolyDP méthode elle conduit à la disparition de certains petits blobs même quand ils sont seuls et n'ont pas d'autres gouttes dans les environs.

Ce que je veux, c'est pour ceux gouttes qui sont très près d'être rejoint ou au moins l'un d'entre eux devrait être supprimé de ma liste de contours et de tout le reste doit être préservée.

Ci-dessous sont la première et la dernière images qui rendrait ma question plus clairement.
De L'Image Initiale:

http://sdrv.ms/1bp8x89

L'Image Finale:

http://sdrv.ms/1bp8tp5

Comme nous pouvons le voir dans l'image finale, la petite tache sur le côté droit de l'image disparaît, même lorsque certains de ces notes n'ont pas été raccordé correctement.

Également de cette technique est de prendre quelques secondes pour une seule image. Compte tenu d'une vidéo, cette technique devient très inefficace.

Veuillez suggérer des remèdes.

InformationsquelleAutor Sohaib | 2013-10-01