Hi Egor, Hi Juan, Thank you very much for the help!
Yuanyuan On Thu, Dec 29, 2016 at 4:16 AM, Egor Panfilov <egor.v.panfi...@gmail.com> wrote: > Hi Yuanyuan, > > In your example the image data range is not being rescaled as it already > has dtype float. `img_as_float` will rescale from [0:255] to [0:1] only > if the dtype of input ndarray is of integer family (and, in your case, > uint8). > > Take a look: > In [3]: nd_int = np.random.randint(0, 255, (3, 3)) > > In [4]: nd_int > Out[4]: > array([[ 85, 15, 60], > [225, 252, 32], > [162, 173, 34]]) > > In [5]: nd_int = nd_int.astype(np.uint8) > > In [6]: skimage.img_as_float(nd_int) > Out[6]: > array([[ 0.33333333, 0.05882353, 0.23529412], > [ 0.88235294, 0.98823529, 0.1254902 ], > [ 0.63529412, 0.67843137, 0.13333333]]) > > Please, notice that if your data lies in a range [0:255], but the ndarray > dtype is not uint8 (e.g. uint16, int8, etc), you will get different results. > > Regards, > Egor > > 2016-12-27 19:12 GMT+03:00 wine lover <winecod...@gmail.com>: > >> Hi Egor, >> >> Thank you for the suggestion. This is how I modify the code >> >> imgs_equalized = np.random.rand(imgs.shape[0],i >> mgs.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 is >> >> imgs[i,0] (584, 565) >> imgs[i,0] float64 >> imgs[i,0] 255.0 >> imgs[i,0] 0.0 >> afte applying astype >> imgs[i,0] (584, 565) >> imgs[i,0] float64 >> imgs[i,0] 255.0 >> imgs[i,0] 0.0 >> >> >> Looks like it does not convert the image type as I expected, in specific, >> the maximum value. >> >> Thanks, >> Yuanyuan >> >> >> >> >> >> >> On Tue, Dec 27, 2016 at 1:39 AM, Egor Panfilov <egor.v.panfi...@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-as-float (see >>> also http://scikit-image.org/docs/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, >>> Egor >>> >>> 2016-12-27 1:27 GMT+03:00 wine lover <winecod...@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(im >>>> gs[i,0],clip_limit=0.03) >>>> return imgs_equalized >>>> >>>> The dtype is float64, maximum value is 255.0 and minimum value is 0.0 >>>> >>>> Running the program generates the following error message ( I only >>>> keep the related ones) >>>> >>>> imgs_equalized[i,0] = exposure.equalize_adapthist(im >>>> gs[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 >>>> >>>> >>>> 1. add imgs[i,0] = imgs[i,0]/255. which scale it to 0 and 1 >>>> 2. convert imgs[i,0] from float64 to unit8 >>>> >>>> but imgs[i,0] = imgs[i,0].astype(np.unit8) gives the error message such >>>> as >>>> imgs[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 >>> >>> >> >
_______________________________________________ scikit-image mailing list scikit-image@python.org https://mail.python.org/mailman/listinfo/scikit-image