es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

https://github.com/adfoucart/image-processing-notebooks/blob/main/V31%20-%20Region%20growing%20with%20the%20watershed%20transform.ipynb

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!

Tags:  ,

Answer

  1. Avatar for 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 por im_, así:

    gradr = rank.gradient(im_,disk(5)).astype('int')

    Esto debería solucionar el error y permitir que el código se ejecute correctamente.

Comments are closed.