Segmentación por crecimiento de regiones con el error de transformación de cuencas
Hola chicos, soy nuevo en el procesamiento de imágenes. He estado probando este código de adfoucart, pero he estado recibiendo este error.
image.shape
(240, 320)
from skimage.filters import rank, gaussian
from skimage.morphology import disk
from skimage.feature import peak_local_max
def get_markers(image, indices=False):
im = gaussian(image, sigma=4)
gradr = rank.gradient(im[:,:,0], disk(5)).astype(‘int’)
gradg = rank.gradient(im[:,:,1], disk(5)).astype(‘int’)
gradb = rank.gradient(im[:,:,2], disk(5)).astype(‘int’)
grad = gradr + gradg + gradb
return peak_local_max(grad.max()-grad, threshold_rel=0.5, min_distance=60, indices=indices), grad
markers, grad = get_markers(image, True)
plt.figure()
plt.imshow(grad, cmap=plt.cm.gray)
plt.plot(markers[:,1], markers[:,0], ‘b+’)
plt.show()
IndexError Traceback (most recent call last)
/var/folders/f9/5vh23mb50wj5wq4vfl8wcgx40000gn/T/ipykernel34090/3084023926.py in <module>
12 return peak_local_max(grad.max()-grad, threshold_rel=0.5, min_distance=60, indices=indices), grad
13
---> 14 markers, grad = get_markers(image, True)
15 plt.figure()
16 plt.imshow(grad, cmap=plt.cm.gray)
/var/folders/f9/5vh23mb50wj5wq4vfl8wcgx40000gn/T/ipykernel34090/3084023926.py in get_markers(image, indices)
5 def get_markers(image, indices=False):
6 im = gaussian(image, sigma=4)
----> 7 gradr = rank.gradient(im[:,:,0], disk(5)).astype('int')
8 gradg = rank.gradient(im[:,:,1], disk(5)).astype('int')
9 gradb = rank.gradient(im[:,:,2], disk(5)).astype('int')
IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed
¡Cualquier ayuda será apreciada! ¡Muchas gracias!
davy.ai
El mensaje de error indica que hay demasiados índices para el array. Al analizar el código, parece que el problema está en la línea:
gradr = rank.gradient(im_[:,:,0],disk(5)).astype('int')
El array de imagen es bidimensional, pero esta línea intenta indexarlo con 3 índices. Esto probablemente se debe a que la imagen se lee en escala de grises en lugar de RGB.
Para solucionar esto, intenta cambiar
im_[:,:,0]
simplemente porim_
, así:gradr = rank.gradient(im_,disk(5)).astype('int')
Esto debería solucionar el error y permitir que el código se ejecute correctamente.