Está en la página 1de 16

 Al leer una imagen (imread) obtenemos:

Una matriz tridimensional Una matriz bidimensional

siempre escala de grises


color escala de grises

3 canales con 3 canales exactamente


diferentes valores iguales!!
 Hay comandos que funcionan bien con
imágenes tridimensionales (imnoise) y
hay otros comandos que exhiben un
error (imhist)
…to be two-dimensional….

Hay que convertir la imagen a dos dimensiones


 Formas de conversión, dado Im de 3
dimensiones:

1. I1 =Im(:,:,1); % extracción de un canal cualquiera


2. I1 = rgb2gray(Im); %comando de conversion
3. I1 = uint8(mean(Im,3)); %promedio de capas

El resultado de esta operación es double!!!


4. I1 = mean(Im,3)/255; %promedio de capas en
formato [0 1]
 Hay comandos que funcionan con
imágenes en uint8 (imhist), pero hay
otros que precisan una conversión a
double (imadjust)
 Conversión de uint8 a double de una
imagen Im:
› ID = im2double(Im);
 Conversión de double a uint8 de una
imagen Im:
› ID= im2uint8(Im);
 Que diferencia hay entre im2double y
double?
› im2double transforma una imagen a
formato double entre 0 y 1.
› double transforma una matriz a formato
double
 Ejemplo:
› im2double(uint8(136)) Se convierte a un valor
entre 0 y 1
 ans 0.5333
› double(uint8(136)) La diferencia está en la
 ans 136 manera en que se guarda
en memoria. El usuario no lo
nota.
 Se puede utilizar el comando impixel para tomar el
color de un pixel en particular.
 Retorna los colores rojo, verde y azul de los píxeles en
la imagen que se indica. Su sintaxis es la siguiente:
› impixel(I) % retorna el valor de los píxeles en la
imagen I, que puede ser una imagen RGB en escala de
grises o binario. El comando muestra la imagen
especificada y permite seleccionar los píxeles de la
imagen con el mouse. Si se omite la imagen de entrada,
impixel opera sobre la imagen en la figura actual.
› P = impixel(I,c,f) % idem anterior, pero guarda el resultado
en P y ademas permite tomar el color de una fila f y una
columna c.
› [c,r,P] = impixel(…) % idem anterior, pero además retorna
las coordenadas del pixel en cuestion
 Ejemplo:
› P= impixel(I)
P=

224 128 124


233 149 134

Los valores retornados son los colores en


cada canal (porque se trata de una imagen
rgb) en los dos puntos tomados
 Ejemplo:
› [c,f,P]=impixel(I1)
c=
182
290

f=
106
121

P=
148 148 148
200 200 200
 Puede ser que se quiera extraer una
subimagen específica, con lo cual
precisamos saber las coordenadas
desde donde tomar la subimagen. Para
eso uamos el comando ginput de la
siguiente manera:
› [c,f] = ginput(n) % donde n especifica la
cantidad de puntos de los cuales deseamos
averiguar sus coordenadas y retorna en
vectores c y f las coordenadas de las
columnas y filas respectivamente
 Ejemplo:
› imshow(I1) % necesitamos una figura expuesta para este comando
› [y,x] =ginput(2)
y=
153.0000
373.0000

x=
91.0000
316.0000

Esto es, tomamos los pixeles


(91,153) y (316,373)

En este caso no obtenemos los colores, sino las coordenadas de un


pixel
Podemos entonces extraer la subimagen:
 Ejemplo:
› S= I1(x(1):x(2), y(1):y(2))
› imshow(S)

Nota: si x e y son double,


con el comando round,
ceil, floor puede pasarse
a entero
 Cuando se realizan filtros sobre imágenes, o
se aplican ruidos o se intenta quitar ruido,
es bueno saber que tanto nos acercamos
a la imagen original.
 Por supuesto que en la realidad, nuestra
imagen original está ruidosa, pero en el
momento de la experimentación, podemos
partir de la imagen ideal, contaminarla,
filtrarla y luego verificar que tan efectivo
resultó el filtro.
 Para ello, usamos una medida llamada
Error Cuadrático Medio
 El Error Cuadrático Medio (RMSD) representa la
desviación estándar de las diferencias entre los
valores estimados o calculados y los valores
observados. Estas diferencias individuales se
denominan residuos cuando los cálculos se realizan
sobre la muestra de datos que se utilizó para la
estimación, y se denominan errores de predicción
cuando computado fuera de la muestra.
 RMSD es una buena medida de precisión, cuanto
mas pequeño es este valor, indica que la imagen
reconstruida está muy cerca de la imagen original:
 Ejemplo:

>> n = numel(I1)
>> rmsd=sqrt (sum (sum ((I1 - SP) .^ 2)) / n)
rmsd =

7.1178
 Ejemplo:
Quitamos el ruido y volvemos a verificar:
>> SP1=medfilt2(SP);
>> rmsd=sqrt (sum (sum ((I1 – SP1) .^ 2)) / n)
rmsd =

4.4135

También podría gustarte