Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estudiante
Sergio Andrés Murcia Garzón
Daniel Alfredo Castillo
Orlando Rodríguez
Cristian Camilo Henao
Grupo: 208054_1
Tutor
PAOLA ANDREA MATEUS
si (viejo_píxel>umbral)
nuevo_píxel = MAX
sino
nuevo_píxel = MIN
R/Filtro mediano es un filtro que genera una nueva imagen, cuyos pixeles se generan
calculando la mediana del conjunto de los pixeles vecinos de la imagen origen,
logrando homogenizar los pixeles que tengan intensidades diferentes.
En Matlab la función que me permite realizar un filtro de la media será: imfilter (ver
ayuda de Matlab). Esta función tiene la siguiente estructura: B =
imfilter(A,H,option1,option2,...) Esta función filtra el array A con el filtro
multidimensional H, el resultado se almacena en B. Los parámetros option1,
option2,…, son opciones de frontera, de tamaño del array de salida y opciones de
correlación o convolución.
Método del valor umbral: El método del valor umbral (umbralización) consiste
en fijar unos umbrales (límites) de forma que los píxeles que se encuentre entre
cada par de límites formarán un objeto al realizar la segmentación. En el método
del valor umbral hay dos posibles situaciones:Umbral único. Se da cuando
solamente hay dos agrupaciones de píxeles semejantes en una imagen (un
objeto y el fondo), para separarlos se establece un umbral T. Los puntos mayores
al umbral T serán puntos del objeto, y los menores a dicho umbral formarán una
parte del fondo.Umbral multinivel. Dada una imagen con x clase de objetos, para
separarlos todos hacen falta x-1 umbrales de forma que los píxeles que se
encuentran entre cada par de umbrales Ti y Tj representarán a una clase de
objeto.
Segmentación basada en modelos: La hipótesis central de este enfoque es que
las estructuras de interés tienen una forma geometría repetitiva. Por lo tanto, se
puede buscar un modelo probabilístico para explicar la variación de la forma de la
estructura y luego cuando se segmenta una imagen se imponen limitaciones para
tomar la imagen como el modelo elegido a priori. Esta tarea implica:
clc
clear all
close all
Cerebro=imread('Enferma1.jpg');
Cerebro=im2double(Cerebro);
figure;
imshow(Cerebro)
umbral=0.45;
binCerebro=im2bw(Cerebro,umbral);
figure;
imshow(binCerebro)
numpixels=200;
Filtro1=bwareaopen(binCerebro,numpixels);
figure;
imshow(Filtro1)
Linea de códigos al probar varios niveles de umbral y pixeles
clc
clear all
close all
Cerebro=imread('Enferma1.jpg');
Cerebro=im2double(Cerebro);
figure;
imshow(Cerebro)
umbral=0.55;
binCerebro=im2bw(Cerebro,umbral);
figure;
imshow(binCerebro)
numpixels=100;
Filtro1=bwareaopen(binCerebro,numpixels);
figure;
imshow(Filtro1)
Imagen generada
• ¿Qué hacen las funciones clc, clear all, clos all, im2bw y bwreaopen?
Función clc: clc borra todo el texto de la ventana de comandos, dando por
resultado una pantalla clara.
Función clear: elimina todas las variables del espacio de trabajo de modelo
representado por el objeto de Simulink.
Función all: Determinar si los elementos de la matriz están distinto de cero o true.
Función im2bw: Convertir imagen en imagen binaria, basado en el umbral.
Función bwreaopen: quita todos los componentes conectados (objetos) que
tienen menos que P píxeles desde el binario imagen BW, produciendo otra imagen
binaria, BW2. Esta operación se conoce como un área de apertura.
Así que se realizan pruebas para determinar cuál es el valor correcto de umbral y
Numpixel, al probar cada valor obtenemos lo siguiente:
Con los valores 0.6 de umbral y 50 en Numpixel obtenemos el siguiente resultado
Como podemos apreciar la imagen obtenida no es clara asi que vamos a probar los
siguientes valores.
Probaremos con valores de 0.8 y 100
Con estos valores solo podemos observar el contorno del cerebro sin apreciar nada
del tumor por ende queda descartada
Procedemos a probar los valores 0.55 y 100 y el resultado obtenido es el siguiente
Cerebro=imread('Enferma1.jpg');
Cerebro=im2double(Cerebro);
figure;
imshow(Cerebro)
Cerebro=imread('Enferma1.jpg');
Cerebro=rgb2gray(Cerebro);
Cerebro=imnoise(Cerebro,'salt & pepper',0.03);
figure;
imshow(Cerebro)
R/ Cerebro=imnoise(Cerebro,'salt & pepper',0.03);
R/Código a implementar filtro para el ruido “Gaussiano”.
Cerebro=imnoise(Cerebro,'gaussian',0.03);
clc
clear all
close all
Cerebro=imread('Enferma1.jpg');
Cerebro=im2double(Cerebro);
figure;
imshow(Cerebro);
Cerebro=imread('Enferma1.jpg');
Cerebro=rgb2gray(Cerebro);
Cerebro=imnoise(Cerebro,'gaussian',0.03);
figure;
imshow(Cerebro)
2.3 Desarrolle el siguiente código en el Command Window de Matlab.
(Asegúrese de estar trabajando en la carpeta que ya se ha creado). Nota: Si
no está trabajando en la carpeta donde se encuentra la imagen guardada, al
realizar el código le saldrá error.
clc
clar all
close all
Cerebro=imread('Enferma1.jpg');
figure;
imshow(Cerebro)
GrayCerebro=rgb2gray(Cerebro);
figure;
imshow(GRayCerebro)
BordesCanny=edge(GrayCerebro,'Canny');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayCerebro,'Sobel');
figure;
imshow(BordesSobel)
Explique cada línea de comando.
clc “Borra el texto de la ventana de comandos”
clar all “Elimina todas las variables del espacio de trabajo”
close all “Cierra todas las variables del espacio de trabajo”
Cerebro=imread('Enferma1.jpg'); “lee la imagen especificada”
figure; “crea una nueva ventana de figura”
imshow(Cerebro) “muestra la imagen resultante”
GrayCerebro=rgb2gray(Cerebro);”Convierte la imagen RGB a escala de grises”
figure; “crea una nueva ventana de figura”
imshow(GrayCerebro) muestra la imagen resultante
BordesCanny=edge(GrayCerebro,'Canny');”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesCanny)”Muestra la imagen de bordes detectados”
BordesSobel=edge(GrayCerebro,'Sobel'); );”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesSobel) )”Muestra la imagen de bordes detectados”
• ¿Qué hacen las funciones canny y sobel?
R/Función canny: El método Canny encuentra aristas buscando máximos locales del
gradiente de I. La edge función calcula el gradiente utilizando la derivada de un filtro
gaussiano. Este método utiliza dos umbrales para detectar bordes fuertes y débiles,
incluyendo bordes débiles en la salida si están conectados a bordes fuertes. Mediante
el uso de dos umbrales, el método de Canny es menos probable que los otros métodos
sean engañados por el ruido, y más probabilidades de detectar verdaderos bordes
débiles.
Función sobel: Este método encuentra bordes usando la aproximación de Sobel a la
derivada. Devuelve bordes en los puntos donde el gradiente de I es máximo
• Analice cada imagen obtenida en este ejercicio.
BordesCanny: Detecta todos los bordes más débiles de la imagen y los muestra de
una manera más clara lo que nos da una visibilidad completa de la corteza cerebral
Bordes Sobel: Muestra los bordes más fuertes de la imagen mostrándonos el
contorno del cerebro omitiendo los bordes débiles y omitiendo casi toda la estructura
del cerebro, estableciendo una diferencia totalmente marcada al comparar las dos
imágenes.
Cerebro=imread('Enferma1.jpg');
figure;
imshow(Cerebro)
GrayCerebro=rgb2gray(Cerebro);
figure;
imshow(GrayCerebro)
BordesCanny=edge(GrayCerebro,'Canny');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayCerebro,'Sobel');
figure;
imshow(BordesSobel)
se1=strel('line',3,4);
erosion1=imerode(BordesCanny,se1);
figure;
imshow(erosion1)
• Explique cada línea de comando.
Ejercicio A
clc “Borra el texto de la ventana de comandos”
clar all “Elimina todas las variables del espacio de trabajo”
close all “Cierra todas las variables del espacio de trabajo”
Cerebro=imread('Enferma1.jpg'); “lee la imagen especificada”
figure; “crea una nueva ventana de figura”
imshow(Cerebro) “muestra la imagen resultante”
GrayCerebro=rgb2gray(Cerebro);”Convierte la imagen RGB a escala de grises”
figure; “crea una nueva ventana de figura”
imshow(GrayCerebro) muestra la imagen resultante
BordesCanny=edge(GrayCerebro,'Canny');”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesCanny)”Muestra la imagen de bordes detectados”
BordesSobel=edge(GrayCerebro,'Sobel'); );”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesSobel) )”Muestra la imagen de bordes detectados”
se1=strel('line',3,4);”Indica el elemento estructural que podemos definir a partir de
la funcion strel ”
erosion1=imerode(BordesCanny,se1); “muestra la erosión morfológica de datos de pixel
binario, lo que hace que se erosionen los bordes mostrándolos en un elemento lineal de
estructuración morfologica”
figure; “crea una nueva ventana de figura”
imshow(erosion1) “Muestra la imagen erosionada”
Ejercicio A
Ejercicio B
clc “Borra el texto de la ventana de comandos”
clar all “Elimina todas las variables del espacio de trabajo”
close all “Cierra todas las variables del espacio de trabajo”
Cerebro=imread('Enferma1.jpg'); “lee la imagen especificada”
figure; “crea una nueva ventana de figura”
imshow(Cerebro) “muestra la imagen resultante”
GrayCerebro=rgb2gray(Cerebro);”Convierte la imagen RGB a escala de grises”
figure; “crea una nueva ventana de figura”
imshow(GrayCerebro) muestra la imagen resultante
BordesCanny=edge(GrayCerebro,'Canny');”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesCanny)”Muestra la imagen de bordes detectados”
BordesSobel=edge(GrayCerebro,'Sobel'); );”Detecta los bordes Fuertes y debiles de la
imagen”
figure; “crea una nueva ventana de figura”
imshow(BordesSobel) )”Muestra la imagen de bordes detectados”
se2=strel('square',2); “Indica el elemento estructural que podemos definir a partir de
la funcion strel”
erosion2=imerode(BordesCanny,se2); “muestra la erosión morfológica de datos de pixel
binario, lo que hace que se erosionen los bordes mostrándolos en un elemento cuadrado
de estructuración morfológica”
figure; “crea una nueva ventana de figura”
imshow(erosion1) “Muestra la imagen erosionada”
• ¿Qué diferencias encuentra entre el ejercicio a y b?
Cerebro=imread('Enferma1.jpg');
figure;
imshow(Cerebro)
GrayCerebro=rgb2gray(Cerebro);
figure;
imshow(GrayCerebro)
BordesCanny=edge(GrayCerebro,'Canny');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayCerebro,'Sobel');
figure;
imshow(BordesSobel)
se3=strel('square',6);
imdilate=imerode(BordesCanny,se3);
figure;
imshow(imdilate)
2.1 Desarrolle el siguiente código en el Command Window de Matlab. (Asegúrese de estar trabajando en la
carpeta que ya se ha creado). Debe trabajar con una nueva imagen que será enviada por el tutor y el
estudiante deberá solicitarla por correo interno. Esta nueva imagen la debe guardar como “Enferma1”.
Nota: Si no está trabajando en la carpeta donde se encuentra la imagen guardada, al realizar el código le
saldrá error.
Código:
Imagen original:
Resultados:
2 0.6 50
3 0.8 10
4 0.55 100
5 0.28 270
*Clear all: se usa básicamente para borrar / eliminar las variables creadas en
Workspace.
2.2. Cada estudiante debe averiguar cómo implementar el filtro para el ruido
“sal y pimienta” y el filtro para el ruido “Gaussiano”. Posteriormente
implementar el filtro correspondiente para la imagen que del cerebro que le ha
sido asignada.
Nota: El código se debe adjuntar junto con las imágenes resultantes
ruido “Gaussiano”:
Resultados:
Resultados:
Explique cada línea de comando.
a.
Resultados:
b.
Resultados:
¿Qué diferencias encuentra entre el ejercicio a y b?
Hay varios métodos para elegir el umbral adecuado, como los siguientes:
- Algoritmo ISODATA.
- Método de los dos picos.
- Método de Otsu.
Una imagen que contiene ruido de sal y pimienta tendrá píxeles oscuros en
regiones brillantes y píxeles brillantes en regiones oscuras. Este tipo de ruido
puede ser causado por errores de convertidor analógico-digital, errores de bit en
la transmisión, etc.
Dilatación Binaria
Dada una imagen A, y un elemento estructural B, teniendo en cuenta que A y B
deben ser imágenes binarias con fondo blanco, la dilatación de A por B está definida
como:
Nobuyuki Otsu: A threshold selection method from grey level histograms. In: IEEE
Transactions on Systems, Man, and Cybernetics. New York 9.1979, S.62–
66. ISSN 1083-4419
Acharya, T., Ray, A. K. (2005). Image processing: principles and applications. John
Wiley & Sons.
https://es.wikipedia.org/wiki/M%C3%A9todo_del_valor_umbral#M%C3%A9todo_de
_Otsu