Hello Juan, I want to thank you for your quick reply to my question the last time and i do not want to bother you with my questions. I always try to solve my problems before posting my question here. Sometime, i just cannot figure out how to fix the error.
What i want to do is to create a GLCM image using different grey levels (8-bit, 16-bit and 32-bit) and compare the results. The type of the image i am using is a float32. I used the '' rescale intensity'' as you suggested, i converted the image to 8-bit and it worked. When i try to rescale the image in 16-bit and 32-bit for some reason it doesn't work. i get the error: AssertionError Traceback (most recent call last)<ipython-input-16-ca616e8222fb> in <module>() 22 23 for j in xrange(img.shape[1] ):---> 24 glcm = greycomatrix(rescale, [1], [0], symmetric = True, normed = True ) 25 26 testraster1[i,j] = greycoprops(glcm, 'contrast') C:\Anaconda2\lib\site-packages\skimage\feature\texture.pyc in greycomatrix(image, distances, angles, levels, symmetric, normed) 101 image = np.ascontiguousarray(image) 102 assert image.min() >= 0--> 103 assert image.max() < levels 104 image = image.astype(np.uint8) 105 distances = np.ascontiguousarray(distances, dtype=np.float64) AssertionError: It seems that i am allowed only to use an 8-bit image for the GLCM calculation. So, does this code in scikit-image work only for 8-bit images? is there another way to solve my problem? I will keep trying to find a solution but if you have an idea on how to solve this problem, please tell me Thank you in advance Ioannis On Monday, 19 September 2016 15:41:07 UTC+1, ioannis...@gmail.com wrote: > > Thank you very much Juan for your quick reply. > That was helpful :) > > Ioannis > > On Monday, 19 September 2016 01:03:45 UTC+1, Juan Nunez-Iglesias wrote: >> >> Hi Ioannis, >> >> Unfortunately the levels keyword is used as a hint to the function about >> the number of levels when the image is uint16, because the possible number >> of levels is huge. But if you want to convert the image to those levels, >> you have to do it manually. I suggest you look at the "rescale_intensity" >> function: >> >> >> http://scikit-image.org/docs/dev/api/skimage.exposure.html#skimage.exposure.rescale_intensity >> >> and process your image before passing it to the glcm function. >> >> I hope this helps! Keep pinging if you have more questions. =) >> >> Juan. >> >> On Sun, Sep 18, 2016 at 4:57 AM, <ioannis...@gmail.com> wrote: >> >>> Hello everyone, >>> >>> I am using a SAR image (16-bit) and trying to implement GLCM algorithm >>> using sciki-learn. When trying to calculate the GLCM using greycomatrix i >>> get the following error: >>> >>> assert image.max() < levels. It says that the maximum value of the image >>> intensity must be less than the number of grey levels. >>> Because the SAR image is really big, i want to reduce the calculation time >>> by reducing the levels to 8. >>> Even if i remove the parameter 'level=8' when using greycomatrix, still >>> gives me the same error >>> >>> My code is the following: >>> >>> from skimage.feature import greycomatrix, greycoprops >>> import numpy as np >>> from skimage import data >>> import rasterio >>> >>> path = 'C:\Users\GLCM_implementation\glasgow.tif' >>> >>> with rasterio.open(path, 'r') as src: >>> import_file = src.read() >>> img = import_file[0,:,:] #i need only the two dimentions (height, width) >>> print img.shape >>> >>> >>> #calculate the GLCM specifying the distance, direction(4 directions) and >>> number of grey levels >>> GLCM = greycomatrix(img, [1], [0, np.pi/4, np.pi/2, 3*np.pi/4],levels=8, >>> symmetric=False, normed=True) >>> #list(GLCM[:,:,0,2]) >>> >>> >>> #Calculate texture statistics >>> contrast = greycoprops(GLCM, 'contrast') >>> >>> dissimilarity = greycoprops(GLCM, 'dissimilarity') >>> >>> homogeneity = greycoprops(GLCM, 'homogeneity') >>> >>> energy = greycoprops(GLCM, 'energy') >>> >>> correlation = greycoprops(GLCM, 'correlation') >>> >>> ASM = greycoprops(GLCM, 'ASM') >>> >>> >>> >>> Error message: >>> >>> 101 image = np.ascontiguousarray(image) 102 assert image.min() >>> >= 0--> 103 assert image.max() < levels 104 image = >>> image.astype(np.uint8) 105 distances = >>> np.ascontiguousarray(distances, dtype=np.float64) >>> AssertionError: >>> >>> >>> I would appreciate any help. >>> Thank you in advance >>> >>> Ioannis >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "scikit-image" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to scikit-image...@googlegroups.com. >>> To post to this group, send email to scikit...@googlegroups.com. >>> To view this discussion on the web, visit >>> https://groups.google.com/d/msgid/scikit-image/520f5f2b-4750-4b56-a40b-28b938b750d8%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/scikit-image/520f5f2b-4750-4b56-a40b-28b938b750d8%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscr...@googlegroups.com. To post to this group, send an email to scikit-image@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/scikit-image/978af8fd-0dfa-47ca-9e16-4a4ccccb4bc3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.