I am very new to GLCM.
I have some 1D array I would like to calculate dissimilarity in the
vertical direction, so I am trying to trick scikit-image by converting my
1D array into 2D.
Say I have an 16x5 2D array. I make 5 copies of it to get a 16x5 array. I
want to pass rows 0-4, then rows 5-9 and so on to run greycomatrix, by just
lookign at the vertical direction, append to output, and ultimately
calculate dissimilarity.
Example array:
x =np.array([7, 2, 0, 8, 8, 3, 2, 2, 0, 5, 3, 3, 4, 8, 7, 0])
w=5
s = np.array([x,]*w,dtype=np.uint8).transpose()
array([
[7, 7, 7, 7, 7],
[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[8, 8, 8, 8, 8],
[8, 8, 8, 8, 8],
[3, 3, 3, 3, 3],
[2, 2, 2, 2, 2],
[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[5, 5, 5, 5, 5],
[3, 3, 3, 3, 3],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4],
[8, 8, 8, 8, 8],
[7, 7, 7, 7, 7],
[0, 0, 0, 0, 0]], dtype=uint8)
Below I test rolling:
test = np.roll(s[:, :], -5)
test
array([[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[8, 8, 8, 8, 8],
[8, 8, 8, 8, 8],
[3, 3, 3, 3, 3],
[2, 2, 2, 2, 2],
[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[5, 5, 5, 5, 5],
[3, 3, 3, 3, 3],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4],
[8, 8, 8, 8, 8],
[7, 7, 7, 7, 7],
[0, 0, 0, 0, 0],
[7, 7, 7, 7, 7]], dtype=uint8)
Now I roll and pass top 5 rows to greycomatrix:
levels = 9# this rolls the 2D array up one row at a time, each time
calculating GLCM on the top 5x5 elements
out = []
counter = 0
while counter < np.shape(s)[0]:
s = np.roll(s[:, :], -5)
glcm = greycomatrix(s[:5,:], [1], [np.pi/2], levels = levels, symmetric =
True, normed = True)
out.append(glcm)
counter +=1
But unfortunately output is a 5D array:
print np.shape(out)
(16, 9, 9, 1, 1)
I tried to recast into a 4D array to pass to greycoprops in different ways, but
unsuccessfully.
With:
out1 = np.array(out).reshape((16, 9, 9, 1))
np.shape(out1)
(16, 9, 9, 1)
diss = greycoprops(out1, 'dissimilarity')
I get this error:
---
AssertionError Traceback (most recent call last)
in ()
> 1 diss = greycoprops(out1, 'dissimilarity')
2 diss
/Users/matteoniccoli/anaconda2/lib/python2.7/site-packages/skimage/feature/
texture.pyc in greycoprops(P, prop)
187
188 (num_level, num_level2, num_dist, num_angle) = P.shape
--> 189 assert num_level == num_level2
190 assert num_dist > 0
191 assert num_angle > 0
AssertionError:
It may be that I do not really understand the shape of the output, and the
requirements of greycoprops.
print np.shape(np.array(out))
print np.shape(np.array(out[0][:][:][:][:]))
print np.shape(np.array(out[:][0][:][:][:]))
print np.shape(np.array(out[:][:][0][:][:]))
print np.shape(np.array(out[:][:][:][0][:]))
print np.shape(np.array(out[:][:][:][:][0]))
(16, 9, 9, 1, 1)
(9, 9, 1, 1)
(9, 9, 1, 1)
(9, 9, 1, 1)
(9, 9, 1, 1)
(9, 9, 1, 1)
Can anybody suggest a way to make this work?
Thanks
--
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/cedb722f-3a56-4333-bced-1bc25155693b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.