Está en la página 1de 22

componente práctico del curso Tratamiento de imágenes

PUNTO 1
a. Desarrolle el siguiente código en un Script de Matlab y guárdelo como “procesamiento”.
(Asegúrese de estar trabajando en la carpeta que ya se ha creado). Debe trabajar con la imagen
que fue seleccionada en la Etapa 1. Esta imagen la debe guardar como “imagen1”.

b. Cada estudiante debe usar el código anterior del numeral a y realizar las 3
modificaciones de combinación de las siguientes 2 variables:

Variable Umbral Variable Numpixel


0.1 500
0.7 100
0.62 10000

 Explique cada línea de comando.


% Nombre: Dany Gaviria
% cc: 3133646
% Año: 2023
% Periodo: 1604

clear all % limpia todas las variables en el espacio de trabajo


clc % limpia la venta de comandos
close all % cierra todos los graficos abiertos

placa=imread("Placa1.jpg"); % lee la imagen y la guarda en la variable placa


[placa pos] = imcrop (placa); % abre la herramineta para seleccionar una region de la
imagen
Grayplaca=rgb2gray(placa); % convierte la imagen en escala de grises
figure;
imshow(placa) % muestra la grafica de la imagen original
Grayplaca=im2double(Grayplaca);% la imagen de escala de grises la convierte en datos de
punto flotante
figure;
imhist (Grayplaca) % muestra el histograma de la imagen
placa=im2double(placa); % convierte la imagen original en punto flotante
figure;
imshow (Grayplaca) % muestra la imagen en escala de grises

umbral=0.1; % umbral de binarizacion


binPlaca=im2bw(placa,umbral); % binariza la imagen
binPlaca=~binPlaca; % invierte los colores en la imagen
figure;
imshow(binPlaca) % muestra la imagen binarizada
numpixels=500; % define el numero minimo de pixeles
Filtro1=bwareaopen(binPlaca,numpixels); % filtrado de area para eliminar objetos
figure;
imshow (Filtro1) % muestra la imagen desues del filtro

 Analice cada imagen obtenida en este ejercicio.


Imagen 1

En la imagen 1 con el recorte o la selección del área se visualiza pixelada también se


visualiza los bordes

Imagen 2

En la imagen 2 pierde los colores quedando solo en gris


Imagen 3

En la imagen 3 vemos que solo toma el punto 0.1 el resto de valores en el histograma
aparecen 0

Imagen 4

En la imagen 4 se visualiza totalmente negra esto pasa después de realizar una negación
y el punto que se evidencia lo que podría pasar por el valor del umbral por lo que los
pixeles de la imagen están por encima de este umbral y al seleccionar el número mínimo
de pixeles en 500 solo este punto cumple con este valor
Imagen 5

En esta imagen vemos el histograma del análisis con los valores umbral 0,7 y numpixel
en 100 evidencio que en estos valores toma mas valores como 1

Imagen 6
Se evidencia una imagen con bordes y mucho ruido por lo que los valores seleccionados
como umbral y numpixel no son adecuados para el análisis correcto de la imagen
Imagen 7

Imagen 8
En la imagen binarizada vemos que se evidencia la información de la imagen pero tiene
algo de ruido que identifica unos vacíos
Imagen 9

En la imagen al aplicar numpixel evidenciamos que ningún objeto en la imagen cumple


por lo tal se muestra oscura.

 Encuentre e indique cual es la combinación de umbral global almacenado en la variable


“umbral” y la cantidad de pixeles a filtrar almacenado en la variable “numpixel” que
segmenta por lo menos el 80% de las letras y números de las placas. (ninguna de las
combinaciones proporcionadas en el cuadro del numeral
(a) son adecuadas para el proyecto del curso. Cada estudiante debe buscar cuál
combinación funciona de manera correcta para la placa seleccionada.) Indique cuál es
la mejor combinación y pegue la imagen resultante a continuación:
c. Cada estudiante debe usar el código anterior del numeral a y realizar las 3
modificaciones de combinación de las siguientes 2 variables:

 Explique cada línea de comando.

% Nombre: Dany Gaviria


% cc: 3133646
% Año: 2023
% Periodo: 1604

clear all % limpia todas las variables en el espacio de trabajo


clc % limpia la venta de comandos
close all % cierra todos los graficos abiertos

placa=imread("Placa1.jpg"); % lee la imagen y la guarda en la variable placa


[placa pos] = imcrop (placa); % abre la herramineta para seleccionar una region de la imagen
Grayplaca=rgb2gray(placa); % convierte la imagen en escala de grises
figure
imshow(placa) % muestra la grafica de la imagen original
%%
Grayplaca=im2double(Grayplaca);% la imagen de escala de grises la convierte en datos de punto
flotante
figure
imhist (Grayplaca) % muestra el histograma de la imagen
placa=im2double(placa); % convierte la imagen original en punto flotante
figure;
imshow (Grayplaca) % muestra la imagen en escala de grises

umbral= 0.3; % umbral de binarizacion


binPlaca=im2bw(placa,umbral); % binariza la imagen
binPlaca= ~binPlaca; % invierte los colores en la imagen
figure;
imshow(binPlaca) % muestra la imagen binarizada
numpixels=62; % define el numero minimo de pixeles
Filtro1=bwareaopen(binPlaca,numpixels); % filtrado de area para eliminar objetos
figure;
imshow (Filtro1) % muestra la imagen despues del filtro

 Analice cada imagen obtenida en este ejercicio.


Imagen 10

En la imagen 10 encontramos la imagen que recortamos o seleccionamos de la imagen


donde se puede elegir una región y así minimizar el tamaño de la imagen asignada.

Imagen 11
En la imagen 11 se pasa a grises

Imagen 12

En la imagen 12 tenemos la imagen binarizada donde se evidencia ruido

Imagen 13

En la imagen 13 tenemos el histograma donde podemos visualizar la distribución de los


puntos
Imagen 14

En la imagen 14 podemos evidenciar el resultado de la combinación de

 Encuentre e indique cual es la combinación de umbral global almacenado en la variable


“umbral” y la cantidad de pixeles a filtrar almacenado en la variable “numpixel” que
segmenta por lo menos el 80% de las letras y números de las placas. (ninguna de las
combinaciones proporcionadas en el cuadro del numeral
(a) son adecuadas para el proyecto del curso. Cada estudiante debe buscar cuál
combinación funciona de manera correcta para la placa seleccionada.) Indique cuál es
la mejor combinación y pegue la imagen resultante a continuación:

Combinaciones utilizadas

Umbral 0.3
Numpixel 62
Imagen 15 resultante

PUNTO 2
a. 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 en escala de gris de la imagen que le ha sido asignada.

ruido sal y pimienta

para eliminar el ruido sal y pimienta de una imagen, podemos emplear un filtro de
mediana, esta técnica se aplica a cada pixel y su definición de ventana que abarca un
conjunto de pixeles en un punto, el tamaño de la venta se especifican cuantos pixeles
vecinos se incluyen el proceso de filtrado, dentro la venta se recopilan todos los valores
de intensidad de todos los pixeles incluidos, el filtro selecciona el valor que se encuentra
en el centro de la secuencia ordenada, y se aplica a cada pixel de la imagen lo que
reemplaza por el valor mediano del del lado o de su vecino.

Código
% nombre: Dany Gaviria
% cc: 3133646
% Año: 2023
% Periodo: 1604
clear all
clc
close all

imagen1=imread("Placa1.jpg");
[imagen1 pos] = imcrop (imagen1)
imagen_original=rgb2gray(imagen1);

figure
imshow(imagen_original);
intensidad_sal=0.04;
intensidad_pimienta=0.04;
[filas, columnas]=size(imagen_original);
imagen_con_ruido=imagen_original;
num_pixel_sal=round(filas*columnas*intensidad_sal);
pixel_sal_x=randi([1, columnas],[1, num_pixel_sal]);
pixel_sal_y=randi([1, filas],[1, num_pixel_sal]);

for i = 1:num_pixel_sal
imagen_con_ruido(pixel_sal_y(i),pixel_sal_x(i))=255;
end

num_pixeles_pimienta=round(filas*columnas*intensidad_pimienta);
pixeles_pimienta_x=randi([1, columnas],[1,num_pixeles_pimienta]);
pixeles_pimienta_y=randi([1, filas],[1, num_pixeles_pimienta]);
for i = 1:num_pixeles_pimienta
imagen_con_ruido_(pixeles_pimienta_y(i), pixeles_pimienta_x(i))=0;
end
figure;
imshow(imagen_con_ruido);

imágenes 16 y 17 imágenes resultantes

Ruido Gaussiano
El filtro gaussiano realiza una convolución, el kernel gaussiano se desliza sobre cada
pixel de la imagen y en cada posición, multiplica y suma los valores de intensidad de
acuerdo al kernel esto genera nuevos pixel en la imagen filtrada.

Código ruido gaussiano

% nombre: Dany Gaviria


% cc: 3133646
% Año: 2023
% Periodo: 1604

clear all
clc
close all

imagen1=imread("Placa1.jpg");
[imagen1 pos] = imcrop (imagen1)
imagen_original=rgb2gray(imagen1);

figure;
imshow(imagen_original);
media=0;
desviacion_estandar=10;

[r, c]= size(imagen_original);


ruido_gaussiano= desviacion_estandar*randn(r, c)+media;
imagen_con_ruido=double(imagen_original)+ruido_gaussiano;
imagen_con_ruido(imagen_con_ruido<0)=0;
imagen_con_ruido(imagen_con_ruido>255)=255;
imagen_con_ruido= uint8(imagen_con_ruido);
imwrite(imagen_con_ruido, 'imagen_con_ruido_resultante.png')
figure;
imshow(imagen_con_ruido);
Imágenes 18 y 19 imágenes resultantes

a. Desarrolle el siguiente código seguido del anterior. (Asegúrese de estar trabajando en


la carpeta que ya se ha creado). La variable “Grayplaca”, debe ser la que almacenaron
en el punto 1.

Nota1: Si no está́ trabajando en la carpeta donde se encuentra la imagen guardada, al realizar


el código le saldrá́ error.
Nota2: Para que el código sea válido, debe tener una línea con su nombre, año, periodo
académico y semestre actual que está cursando el estudiante (según plan de estudios).

 Explique cada línea de comando.


 BordesCanny=edge(Grayplaca, 'Canny'); % se utiliza el comando edge para aplicar el
detector de bordes de canny a la imagen,
 figure;
 imshow(BordesCanny)
 BordesSobel=edge (Grayplaca, 'Sobel');% la funcion edge para la aplicacion de bordes
sobel
 figure;
 imshow(BordesSobel)

 ¿Qué hacen las funciones canny y sobel?

R// esta función detecta bordes finos para reducir el ruido


La función sobel es una técnica para la detención de bordes, que utiliza convolución
para resaltar cambios de intensidad en la imagen.

 Analice cada imagen obtenida en este ejercicio.


Imagen 20 bordes de canny

Se visualiza la delineación de todos los puntos donde representa ruido los bordes en blanco muy
definidos

Imagen 21 bordes sobel

en esta imagen se visualiza bordes mas gruesos y su definición es menos definidos.

PUNTO 4

Desarrolle el siguiente código seguido del anterior. (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.
Nota2: Para que el código sea válido, debe tener una línea con su nombre, año,

periodo académico y semestre actual que está cursando el estudiante (según plan de estudios).
a.

b.

 Explique cada línea de comando.

se1=strel('line', 3,2); % aqui se crea un elemento estructural con la funcion strel


erosion1=imerode(BordesCanny, se1); % se almacena de la operacion erosion reduciendo los
objetos blencos en la imagen
figure;
imshow(erosion1)

se2=strel('square',2); % se define un elemento estructural


erosion2=imerode (BordesCanny, se2);% realiza la operacion de erosion en la imagen
bordesCanny
figure;
imshow(erosion2)
 ¿Qué diferencias encuentra entre el ejercicio a y b?
R// la diferencia se encuentra en que el primero define una estructura en línea y en el
segundo define una estructura en forma de cuadrado

 Analice cada imagen obtenida en este ejercicio.

Imagen 22

En la imagen con elemento estructural en forma de línea se visualizan objetos blancos muy
pequeños

Imagen 23

En esta imagen vemos que la información que se tenía se volvió totalmente oscura debido a
que la erosión elimino una mayor cantidad de pixeles que la anterior
PUNTO 5

b. Teniendo en cuenta el resultado obtenido en el punto 3, el estudiante deberá investigar la


función “imfill” y llenar los huecos obtenidos por bordes sobel y bordes canny.

Código relleno huecos de bordes canny


BordesCannyRellenos = imfill(BordesCanny, 'holes');
figure;
imshow(BordesCannyRellenos);
title('Bordes Canny con huecos llenos');

imagen 24 relleno de huecos de bordes canny

código de relleno huecos de bordes sobel


ordesSobelRellenos = imfill(BordesSobel, 'holes');
figure;
imshow(BordesSobelRellenos);
title('Bordes Sobel con huecos llenos');
imagen 25 relleno de huecos con bordes sobel

infografía

https://view.genial.ly/6507db2ab00a050018d31055/interactive-content-timeline-edu-color

También podría gustarte