You are on page 1of 4

clc

clear all
close all
X = imread('cab.jpg');
I = rgb2gray(X);
imshow(I); %Muestra la Imagen
title('Imagen Original')
figure(2)
imhist(I)
title('Histograma de la Imagen Original')

%Conversión de dominio - Transformada de


Coseno

I_coseno=dct2(I); %Saca la transformada


coseno 2D. figure(2) Note que los
datos quedan en formato
double.
imshow(I_coseno) %Muestra la Imagen en el
dominio de coseno
title('Imagen dominio de coseno')

%% Imagen recuperada del dominio de coseno

I_Rec=uint8(idct2(I_coseno));
figure(3)
imshow(I_Rec) %Muestra la Imagen recuperada
title('Imagen Original Recuperada')

%PSNR
psnr1=fun_PSNR(I,I_Rec)
1. A la imagen vectorizada en el dominio del coseno, convierta un
porcentaje de valores en cero. Los valores que debe convertir a cero son
los de menor energía, es decir, los más pequeños. Haga el análisis mínimo
con los siguientes porcentajes: 99%,95%,90%,50%,20% y 5%. Por ejemplo: Si
el porcentaje es 50%, quiere decir que el 50% de los valores del vector
los convierte a cero.

%% Guardo la matriz I correspondiente a la imagen

tam1=size(I) %Se guarda el tamaño de la matriz


mat_vec=reshape(I',1,prod(tam1)) %Se vectoriza la matriz
mat_ejem2=reshape(mat_vec',tam1(2),tam1(1))' %Se pasa de vector a matriz

tam1=size(I)
%Se guarda el tamaño de la matriz

mat_vec=reshape(I',1,prod(tam1) %Se vectoriza la matriz

mat_ejem2=reshape(mat_vec',tam1(2),tam1(1))' %Se pasa de vector a matriz


%% Guardo la matriz I correspondiente a la imagen

tr_imcos=size(I_coseno);
ivecos=reshape(I_coseno',1,prod(tr_imcos));
scos=-(ivecos<0)+(ivecos>0);
[img_vec_cos_ord,img_vec_cos_pos]=sort(abs(ivecos),'descend');

% Punto 2 Convertir a ceros

I_vecos_o1=img_vec_cos_ord; % guardo el vector


v=I_vecos_o1;
Datos=length(v);
a= input('Porcentaje_Reducir= ');
reducion=round(Datos*(a/100));
I_vecos_o1((Datos-reducion):end)=0;

%Primero, partiendo de la transformada vectorizada, recuperemos la imagen


%para constatar que la imagen recuperada es igual que la original

imvecos_recup(img_vec_cos_pos)=I_vecos_o1; %Se recupera, pero sin signo


imvecos_recup=imvecos_recup.*scos; %Se recupera, con el signo
im_cos_rec=reshape(imvecos_recup',tr_imcos(2),tr_imcos(1))';
%Se pasa de vector a matriz
I_Rec2=uint8(idct2(im_cos_rec));

figure(4)
imshow(I_Rec2) %Muestra la Imagen recuperada en el dominio de coseno
title('Imagen Recuperada con porcentaje de ceros')
psnr2=fun_PSNR(I,I_Rec2) %Muestra la calidad de la imagen recuperada

Los siguientes porcentajes: 99%,95%,90%,50%,20% y 5%:

Porcentaje_Reducir = 99% Porcentaje_Reducir = 95%


psnr2 = 19.2824 psnr2 = 21.6470
Porcentaje_Reducir = 90% Porcentaje_Reducir = 50%
psnr2 = 23.3808 psnr2 = 34.0968

Porcentaje_Reducir = 20% Porcentaje_Reducir = 5%

psnr2 = 46.5460 psnr2 = 74.4531

You might also like