#include "HxImageRep.h"
Go to the source code of this file.
Functions | |
HxSegmentation2d * | HxImageToSegmentation (HxImageRep input, HxImageRep segments, int connectivity, int minArea) |
Convert image segments to an HxSegmentation2d. More... |
|
Convert image segments to an HxSegmentation2d.
00259 { 00260 HxTagList tags; 00261 HxAddTag(tags, "connectivity", connectivity); 00262 HxAddTag(tags, "minArea", minArea); 00263 00264 HxSegmentation2d* seg = new HxSegmentation2d(); 00265 seg->setInputImage(input); 00266 HxAddTag(tags, "segmentation", seg); 00267 00268 HxImageRep labeled = segments.queueBasedOp(segments, "ImageToSegmentation", 00269 tags); 00270 seg->setLabeledImage(labeled); 00271 00272 // because in filling the neigbours list, we were looking only in the past, 00273 // not in the future we still have to make the list of neigbours symetric 00274 HxBlob2dRelation* relation = seg->getRelation("neighbours"); 00275 for (HxBlob2dListConstIter bi=relation->getBlobBegin() ; 00276 bi<relation->getBlobEnd() ; bi++) { 00277 HxBlob2dListConstIter bj = bi; 00278 bj++; 00279 HxBlob2dListBackInserter ins = relation->findRelatedBlobsInserter(*bi); 00280 for ( ; bj<relation->getBlobEnd() ; bj++) { 00281 for (HxBlob2dListConstIter bk = relation->findRelatedBlobsBegin(*bj) ; 00282 bk < relation->findRelatedBlobsEnd(*bj) ; 00283 bk++) { 00284 if ((*bi)->getLabel() == (*bk)->getLabel()) { 00285 *ins++ = *bj; 00286 } 00287 } 00288 } 00289 } 00290 return seg; 00291 } |