//--------------------------------------------------------------
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();
	}
}