Jugando con perfiles e histogramas en imágenes de Matlab

Entregar reporte de resultados, DE ESTA ENTRADA, antes del 19  de septiembre  2012

Las imágenes de prueba están en C:\MATLAB\toolbox\images\imdemos
Pruebe las siguientes funciones:
           
imagen bacteria, archivo
en escala de grises
X = imread('bacteria.jpg','JPG');     % probar al menos tres imágenes distintas
image(X);
colormap(map);
colormap(hot); colorbar;
pause
image(X);
liney=X(:,100);     % column profile (vert)
linex=X(60,:);       % row profile (horiz)
hold on; plot(linex);



Resultado de la primera rutina
1. Pruebe otros perfiles sin exceder las dimensiones de la imagen (recordar “size(X)”) e interprete dichos perfiles en función de la imagen

2.  Los valores de gris de los píxeles de una imagen son una población cuya distribución (frecuencia) permite caracterizar ciertas propiedades de la imagen, sin preservar información espacial (aunque depende de dónde se toman las muestras.   Pruebe las funciones de histograma de una señal, pero ahora en una imagen.   Implemente usted su propia función para calcular un histograma y grafiquelo en diferentes escalas.

Sugerencia (ejercicio: corregir índices definiendo por ejemplo H como subvector de otra matriz ):

% X se define como arriba:  una matriz que contiene la imagen.
H=zeros(256,1);    % iniciar vector de histograma a 0
[m,n] = size(X);    % obtener dimensiones
for i=1:m
  for j=1:n
     H(X(i,j)+1) = H(X(i,j)+1)+1;   % usar datos como direcciones para contra frecuencias
  end
end
plot(H);

3.  Calcule ahora su histograma en escala logarítmica, muestreando la imagen de manera uniforme; pruebe la función random.   Observe los detalles del histograma y pruebe otras escalas.  Comente sus observaciones.

4.  Si N es el total de pixeles, y se muestrean M. Calcule histograma de zonas de interés (un rectángulo que contenga las bacterias, por ejemplo).  Compare con histogramas del fondo en distintas áreas.  ¿Cómo se relacionan con el histograma global?   Repita 4. para una zona de interés (no del fondo).  

6. Compara la implementación de arriba con las funciones de histograma predefinidas en Matlab (úselas).

7.  Aumente el intervalo dinámico de los valores de gris (o sea el contraste) usando la información del histograma (recordar lo que se vio en clase), en uno global y en dos locales.  Para esto será necesario modificar los valores de gris de acuerdo al histograma.

8.   ¿Cómo definir y almacenar  su propia paleta de colores?  Diseñe una que vaya de café obscuro a color crema y de crema azul claro, de azul claro a verde.

7 comentarios:

  1. Hola profesor,

    Tengo un problema al intentar probar la función imread, me marca el error:

    ??? Error using ==> imread at 401
    File "rice.jpg" does not exist.

    dice que esta imagen "rice" no existe pero yo la busque en el directorio de MATLAB en imdemos, porque la imagen de bacteria no la tengo.

    Espero pueda ayudarme, SALUDOS.

    ResponderEliminar
  2. Sarahi:

    imread es una función dependiente del directorio. Te recomiendo que tengas tu imagen seleccionada en una carpeta nueva, que Matlab lo direcciones a esa carpeta y que ejecutes el comando imread.

    Si no estas en la carpeta, Matlab no encontrará el archivo.

    Espero que te sirva este consejo. Dime si solucionas el problema.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola, no estoy segura de haber hecho lo que me dices, copie la imagen a la misma carpeta en la que tengo todos mis archivos m-file y creo que Matlab está direccionado a esa carpeta pues dice:
      Current directory: C:\Users\SARAHI\Documents\MATLAB, me sigue marcando el mismo error, incluso cambie de imagen a la de mandrill que utilizamos en clase pero marca el mismo error. saludos.

      Eliminar
    2. Hay que ver en vivo tu código, seguro ahí esta el problema.

      Eliminar
  3. Era la extensión de la imagen jeje la imagen .png y la tenía como jpg en el código.
    saludos, nos vemos mañana :)

    ResponderEliminar
  4. Pues si, hay que tener cuidado en la extensión de los archivos coincida con la invocación. Matlab es muy sensible a ese detalle :)

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...