//static void GradientsBase::binarizeImage(imageType_t const & currentImage_p, realType_t dBlackPoint_p, weightImageType_t & rMaskImage_p) { #if 0 imageType_t image(currentImage_p); image.ResetSelections(); image.Binarize(dBlackPoint_p); // first channel image.ResetSelections(); image.SelectChannel(0); rMaskImage_p.ResetSelections(); rMaskImage_p.Assign(image); // compress into one channel for(int i=1;i<image.NumberOfChannels();++i){ image.SelectChannel(i); rMaskImage_p.Max(image); } #else int const nCols=currentImage_p.Width(); int const nRows=currentImage_p.Height(); int const nChannels=currentImage_p.NumberOfChannels(); rMaskImage_p.AllocateData(nCols,nRows); rMaskImage_p.Black(); for(int channel=0;channel<nChannels;++channel){ for(int row=0;row<nRows;++row){ for(int col=0;col<nCols;++col){ if(currentImage_p.Pixel(col,row,channel)>dBlackPoint_p) { rMaskImage_p.Pixel(col,row)=1.0; } } } } #endif }
//static void GradientsMergeMosaic::erodeMaskConvolve(weightImageType_t & rMask_p,int32 shrinkCount_p) { int sideLength=1+2*shrinkCount_p; int nElements=sideLength*sideLength; SeparableFilter filter( sideLength,1.0/nElements); SeparableConvolution convolve(filter); rMask_p.ResetSelections(); convolve >> rMask_p; rMask_p.Binarize(0.999999); }