You are on page 1of 6

Universidad Nacional de Ingeniería

Facultad de Ingeniería Mecánica


Práctica Calificada N° 2

Alumno:
 Carrión Robles, Luis Gerardo 20134507G
 García Chávez, Gabriel Enrique 20154004K

Curso:
PROCESAMIENTO DIGITAL DE IMÁGENES MT420

Profesor:
Ing. Mesones Málaga, Gustavo
Reto 1:
El reto 1 consiste en cambiar la orientación de la imagen con el fin de poder
visualizarla correctamente, esto se logra gracias a una matriz de transformación
de coordenadas.
El siguiente código en Matlab es el algoritmo para resolver el reto 1:
clc
close all
clear all

%Se lee la imagen original


I = imread('Hoja.jpg');
nrows = size(I,1);
ncols = size(I,2);
fill = 0.3;

% Matriz de transformación de coordenadas, el cual depende de la imagen en cuestión


T = [2 1.17 0.00045;
0.1 1 0.00005;
0 0 1 ];

t_proj = projective2d(T);
I_projective = imwarp(I,t_proj,'FillValues',fill);

%Ploteamos la imagen original y la nueva enfocando con zoom la sección del texto
subplot(1,2,1)
imshow(I)
title('Original')
subplot(1,2,2)
imshow(I_projective)
title('Projective')
Reto 2:
El reto 2 consiste en utilizar algoritmos de lógica difusa para poder mejorar la
calidad de imagen, este algoritmo es principalmente para imágenes de noche o
antiguas.
El siguiente código en Matlab es el algoritmo para resolver el reto 2:

%ejm2fuzz
clc
clear all
close all
ff=imread('final.jpg');
h1=fspecial('average',[2,2]);
ff=imfilter(ff,h1);

udark=@(z)1-sigmamf(z,0.25,0.5);
ugray=@(z)triangmf(z,0.25,0.5,0.75);
ubright=@(z)sigmamf(z,0.5,0.9);

subplot(3,1,1)
fplot(udark,[0 1],20);
hold on
fplot(ugray,[0 1],20);
fplot(ubright,[0 1],20);
udarker=@(z)bellmf(z,0.0,0.1);
umidgray=@(z)bellmf(z,0.4,0.5);
ubrighter=@(z)bellmf(z,0.8,0.9);
rules={udark;ugray;ubright};
outmf={udarker,umidgray,ubrighter};
F=fuzzysysfcn(rules,outmf,[0 1]);
z=linspace(0,1,256);
T=F(z);
gr=intrans(ff,'specified',T);
title('gráfico de función de membresía')
subplot(3,1,2)
imshow(ff);
title('imagen original')
subplot(3,1,3)
imshow(gr);
title('imagen mejorada')
Reto 3:
El reto 3 consiste en utilizar algoritmos de compresión de datos usando la
transformada discreta de cosenos además posteriormente descomprimir la
imagen y comparar la aceptación de la imagen a diferentes ratios de compresión.
El siguiente código en Matlab es el algoritmo para resolver el reto 3:

clc
close all
clear all
AA=imread('lena512.bmp');
subplot(2,2,1)
imshow(AA)
B=dct2(AA);
subplot(2,2,2)
imshow(B)
Bmax=max(max(abs(B)));
Btrig=16;
B(abs(B)<Btrig)=0;
Bs=sparse(round(B/16));
save(['lena512Trig' mat2str(Btrig)],'Bs')
subplot(2,2,3)
imshow(B)
A=idct2(B)/255.0;
subplot(2,2,4)
imshow(A)
El siguiente código muestra como se desarrolla la descompresión de nuestra
antes comprimida, con la cual se compara a diferentes ratios de compresión
(división de memoria ocupada por la imagen comprimida sobre la memoria
ocupada por imagen original).

clc, clear all, close all


AA=imread('lena512.bmp');
figure, imshow(AA)
imax=4;
figure(2)
asd1=dir('lena512.bmp');ori=asd1.bytes;
for i=1:imax
Btrig=[10,20,40,60];
B=load(['lena512Trig' mat2str(Btrig(i))]);
B=16*full(B.Bs);
%figure, imshow(B)
A=idct2(B)/255.0;
subplot(2,2,i)
imshow(A)
disp(['Porcentaje de compresión de la imagen ' mat2str(Btrig(i)) ':'])
asd1=dir(['lena512Trig' mat2str(Btrig(i)) '.mat']);
disp(asd1.bytes/ori*100.0)
title(asd1.bytes/ori*100.0)
end

You might also like