Hi Egor,Thank you for the suggestion. This is how I modify the codeimgs_equalized = np.random.rand(imgs.shape[0],imgs.shape[1],imgs.shape[2], imgs.shape[3]) for i in range(imgs.shape[0]):print('imgs[i,0] ',imgs[i,0].shape)print('imgs[i,0] ',imgs[i,0].dtype)print('imgs[i,0] ',imgs[i,0].max())print('imgs[i,0] ',imgs[i,0].min())imgs[i,0]=img_as_float(imgs[i,0]) print('afte applying astype')print('imgs[i,0] ',imgs[i,0].shape)print('imgs[i,0] ',imgs[i,0].dtype)print('imgs[i,0] ',imgs[i,0].max())print('imgs[i,0] ',imgs[i,0].min())the output isimgs[i,0] (584, 565)imgs[i,0] float64imgs[i,0] 255.0imgs[i,0] 0.0afte applying astypeimgs[i,0] (584, 565)imgs[i,0] float64imgs[i,0] 255.0imgs[i,0] 0.0Looks like it does not convert the image type as I expected, in specific, the maximum value.Thanks,YuanyuanOn Tue, Dec 27, 2016 at 1:39 AM, Egor Panfilov <egor.v.panfilov@gmail.com> wrote:Dear Yuanyuan,First of all, it is not a good idea to initialize the array with values using `np.empty`. I'd recommend to use either `np.random.rand` or `np.random.randint`.As for main point of your question, I believe you might need http://scikit-image.org/docs/dev/api/skimage.html#img-a (see also http://scikit-image.org/ds-float ocs/dev/user_guide/data_types. ).html So, you can either create an array of floats [0:1) via `np.random.rand`, or create an array of uints via `np.random.randint`, and call `img_as_float`. Then `equalize_adapthist` should work flawlessly.Regards,Egor2016-12-27 1:27 GMT+03:00 wine lover <winecoding@gmail.com>:______________________________Dear All,I was trying to use the above code segment for performing Contrast Limited Adaptive Histogram Equalization (CLAHE).def clahe_equalized(imgs):imgs_equalized = np.empty(imgs.shape)for i in range(imgs.shape[0]):print('imgs[i,0] ',imgs[i,0].dtype)print('imgs[i,0] ',imgs[i,0].max())print('imgs[i,0] ',imgs[i,0].min())imgs_equalized[i,0] = exposure.equalize_adapthist(imgs[i,0],clip_limit=0.03) return imgs_equalizedThe dtype is float64, maximum value is 255.0 and minimum value is 0.0Running the program generates the following error message ( I only keep the related ones)imgs_equalized[i,0] = exposure.equalize_adapthist(imgs[i,0],clip_limit=0.03) raise ValueError("Images of type float must be between -1 and 1.")ValueError: Images of type float must be between -1 and 1.In accordance with the above error message and image characteristics, what are the best way to handle this scenario.I have been thinking of two approaches
- add imgs[i,0] = imgs[i,0]/255. which scale it to 0 and 1
- convert imgs[i,0] from float64 to unit8
but imgs[i,0] = imgs[i,0].astype(np.unit8) gives the error message such asimgs[i,0]=imgs[i,0].astype(np.unit8) AttributeError: 'module' object has no attribute 'unit8'Would you like to give any advice on this problem? Thank you very much!_________________
scikit-image mailing list
scikit-image@python.org
https://mail.python.org/mailman/listinfo/scikit-image
_______________________________________________
scikit-image mailing list
scikit-image@python.org
https://mail.python.org/mailman/listinfo/scikit-image