GLCM calculation using scikit-learn. Error when using greycomatrix
ioannisgkan259 at gmail.com
ioannisgkan259 at gmail.com
Sat Oct 1 15:33:28 EDT 2016
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... at 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... at 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... at googlegroups.com.
>>> To post to this group, send email to scikit... at 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.
>>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20161001/d56567f2/attachment.html>
More information about the scikit-image
mailing list