MATLAB: Rescale Depth RGB image between zeros and one

image processingImage Processing Toolboxkinect

Dear All, I have 1000 d-rgb images (unit16) and each image has different size. I want to normalize the image by resizing them to [0 1] interval. Could you please tell me if there is a function or an efficient algorithm which can do such operation. I transfer the image to double and single, but the scaled images become since 0 and 0.05 intervals. Bye the way the scale of d-rgb image is different from image to others which scaled from zero to greater than 3000.

Best Answer

normImage = single( imageData ) / single( max( imageData(:) ) );
will scale a single image between 0 and 1.
If you want to scale every image independently between 0 and 1 then you can just use that on each image.
If you want to scale all images with the same scale factors then you would have to scan over all the images first and find the maximum value across all images and then use that value for every image in place of max( imageData(:) ) for each image.
If your images do not contain 0s though and you want to map the minimum data value of the image to 0 then it is a little more complicated. This is something I created a custom RangeMapper class for so that I don't have to go over the maths any more!