Effecient ways to merge blob whose position inside another blob using cvbloblib

asked 2014-02-25 04:35:35 -0500

vsay gravatar image

updated 2015-10-06 08:42:59 -0500

I basically want to remove all blobs whose positions insides another blobs.

image description

I use the cvbloblib . I can get all the blobs; however, the library basically detect all blob even the position of those blob inside another.

I think of using iterative ways to detect if each blob inside another and merge them together.

for (int i = 0; i<res.GetNumBlobs(); i++){
       for (int j = 0; i<res.GetNumBlobs(); i++){
              //find if each blob is inside another
              if(condition blob(i) inside){
                       //delete
                       //break or return to another blob(i+1)
              }
       }
 }

However there are some issues :

  1. iterative ways is not effecient way

  2. You see in the image above, there are the cases where a blobs insides not 1 but could be another N blobs. so I tend to think about recursive function to do that.

Do you have any ways to merge those blobs inside ?

edit retag flag offensive close merge delete

Comments

1

May be you could ask Will Stewart to share his solution (http://answers.opencv.org/question/27897/creating-regions-of-interest-roi-by-clustering/) because I think that can be applied to your problem (I mean partitioned, non-hierarchical agglomerative clustering approach).

tuannhtn gravatar imagetuannhtn ( 2014-02-25 06:08:48 -0500 )edit