//-------------------------------------------------------------- void DepthHoleFiller::performMorphologicalOpen ( ofxCvGrayscaleImage &input){ // Clean up the holes using morphological close. // http://homepages.inf.ed.ac.uk/rbf/HIPR2/open.htm input.erode(); input.dilate(); }
//-------------------------------------------------------------- void DepthHoleFiller::performMorphologicalOpen ( ofxCvGrayscaleImage &input, int nTimes){ // Clean up the holes using morphological close. // http://homepages.inf.ed.ac.uk/rbf/HIPR2/open.htm for (int i=0; i<nTimes; i++){ input.erode(); } for (int i=0; i<nTimes; i++){ input.dilate(); } }
//-------------------------------------------------------------- void DepthHoleFiller::performMorphologicalClose ( ofxCvGrayscaleImage &input, int diameter){ // Clean up the holes using morphological close. // use a "larger structural element" by repeated passes. // http://homepages.inf.ed.ac.uk/rbf/HIPR2/close.htm for (int i=0; i<diameter; i++){ input.dilate(); } for (int i=0; i<diameter; i++){ input.erode(); } }