Matlab - Error Index exceeds matrix dimensions

 
Vista:
sin imagen de perfil

Error Index exceeds matrix dimensions

Publicado por Javi (4 intervenciones) el 03/10/2014 13:10:39
Hola. Estoy realizando un programa para reconocimiento de iris y me sale el error ese.
No entiendo porque me sale ese error en el bucle for. Mi objetivo es recorrer la imagen para
detectar cambios de intensidad de grises en la imagen y localizar donde está la pupila.
El numero de filas que me sale es de 234 y el de columnas 353.

Gracias.

%//Adquisicion imagen//

rgb = imread('Blue-Iris.jpg');
rgbdim = imresize(rgb,0.2);
figure;
imshow(rgbdim);

%//Pasamos a escala de grises//

ImgGray = rgb2gray(rgbdim);


x=10;

[filas,columnas,e]=size(ImgGray)

for i=1:filas
resta = filas(i,x:columnas)-filas(i,1:columnas-x);

end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Error Index exceeds matrix dimensions

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/10/2014 18:04:18
Podrias subir la imagen para poder ejecutarlo tu código y ver el error.
1
resta = ImgGray(i,x:columnas)-ImgGray(i,1:columnas-x+1);



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error Index exceeds matrix dimensions

Publicado por Javi (4 intervenciones) el 04/10/2014 11:49:47
Hola, gracias por responder.

Me podrias explicar porque pones un +1 al final de ImgGray(i,1:columnas-x+1)?

Gracias.

Blue-Iris
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Error Index exceeds matrix dimensions

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 11/10/2014 15:36:23
Por lo general trata de poner código completos de tus avances de lo que preguntas y además seguir preguntando en la misma pregunta original de esa manera lo que desean ayudarte te puedan ayudar de forma acertada leyendo el historial de tus avances.

Como vez resta solo tiene 291 elementos y la variable columnas tiene 300 elementos entonces va a ver error en la parte de
1
2
3
4
for j=1:columnas
='editor_code'> if resta(j) > 20
...
...
end end
porque cuando j tome el valor de 292 va a ver un error.

y también este parte de código no guarda relación con el bucle for

1
2
3
4
im2bw(ImgGray,1);
 else
 im2bw(ImgGray,0);
 end

, el bucle for no tiene incidencia en esta parte del código.


1
2
3
4
5
6
7
8
9
10
>> whos resta
  Name       Size             Bytes  Class    Attributes
 
  resta      1x291              291  uint8
 
>> columnas
 
columnas =
 
     300


Mi recomendación es que lleves un curso básico de Matlab donde te enseñen el manejo de vectores y matrices y además llevar cursos de matlab intermedio donde te enseñan el funcionamiento de bucle for.
y fuera posible un curso básico de procesamientos de imágenes. Ya con esa informacion ya puedes hacer el proyecto que estas haciendo. O en su defecto descargar manuales básico de matlab y estudiarlo por tu cuenta y análogamente el uso de los bucles for y while. Tampoco en tu pregunta dices en términos generales que es lo quieres hacer. Entonces no hay forma de ayudarte o darte sugerencias sobre el tema que estas trabajando.



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error Index exceeds matrix dimensions

Publicado por Javi (4 intervenciones) el 13/10/2014 13:28:14
Gracias Jose.

Mi objetivo es separar el iris del resto del ojo (pupila,pestañas,parpados) para después poder normalizar el iris y proceder a su identificación. Estoy intentando recorrer la imagen para detectar los cambios de niveles de gris y así poder aislar el iris del resto. Lo que yo llamo 'resta' es para detectar cuando hay cambios de niveles de gris y hacerlo mediante flancos de subida y bajada. Con esto quiero decir que por ejemplo cuando 'resta' sea mayor que un numero (el que yo elija para aislar el iris en función de los valores que me da 'resta'), binarizar la imagen ImgGray y los pixeles que están en el flanco de subida sean negros y en el de bajada blancos. La parte del 'if' es eso lo que quiero hacer pero no se como.

Si teneis alguna otra idea para para separar el iris del resto lo agradecería. La transformada de Hough no me interesa pues es con esto que quiero comparar mi método.

El código completo es este:

rgb = imread('Blue-Iris.jpg');
rgbdim = imresize(rgb,0.2);

ImgGray = rgb2gray(rgbdim);

x=5;

[filas,columnas]=size(ImgGray);


for i=1:filas
resta = ImgGray(i,x:columnas)-ImgGray(i,1:columnas-x+1);

for j=1:columnas

if resta(j) > 30
im2bw(ImgGray,1);

else
im2bw(ImgGray,0);
end

end

end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar