Está en la página 1de 4

clc

clear all
close all
I=imread('dron.jpg');

%PREGUNTA 1
Ig=rgb2gray(I); %Convirtiendo a escala de grises
%Convertimos a blanco y negro
BW=im2bw(I, 0.88); %Haciendo regla de 3 simples 226/255=0.88

figure(1)
subplot(2,2,[1,2]), imshow(Ig), title("Imagen en escala de grises");
subplot(2,2,3), imhist(I), title("Histograma");
subplot(2,2,4), imshow(BW), title("Imagen binarizada");

%PREGUNTA 2
Irfx1=false(400,400); %Imagen negra de 400x400 binaria
Irfx2=uint8(zeros(400,400)); %Imagen negra de 400x400 a escala de grises
Ir=imresize(BW,0.2); %0.2 seria 20%

figure(2)
subplot(2,2,1), imshow(Irfx1), title("Imagen negra de 400x400 binaria");
subplot(2,2,2), imshow(Irfx2), title("Imagen negra de 400x400 a escala de grises");
subplot(2,2,3), imshow(BW), title("Dron imagen binarizado");
subplot(2,2,4), imshow(Ir), title("Dron imagen reescalado a 20%");

%PREGUNTA 3
[N,M]=size(Ig);
Y=zeros(N,M);
imwrite(Ig, "dron_gris.jpg","jpg")
[X,mp]=imread('dron_gris.jpg');
i0=-100; %Traslacion de 100 en y
j0=-50; %Traslacion de 50 en x

for i=1:N
for j=1:M
ip=fix(i+i0);
jp=fix(j+j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
Y(i,j)=Ig(ip,jp);
end
end
end
figure (3)
imshow(Y,mp), axis on;

%PREGUNTA 4
a=1;
for tx=10:10:100 %bucle para incrementar de 10 en 10 hasta 100

YA=zeros(N,M);
i0=0; %Traslacion en y
j0=-tx; %Traslacion en x
for i=1:N
for j=1:M
ip=fix(i+i0);
jp=fix(j+j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
YA(i,j)=Ig(ip,jp);
end
end
end

figure(4)
subplot(2,5,a), imshow(YA,mp), title(["Traslacion de ",tx]);
axis on;
a=a+1;
end

%PREGUNTA 5
YB=zeros(N,M);
th=45*pi/180; %Rotamos 45 grados aqui se convierten a radianes
i0=-100; %Traslacion de 100 en y
j0=-50; %Traslacion de 50 en x
for i=1:N
for j=1:M
m=[cos(th) sin(th); -sin(th) cos(th)]*[i-i0 j-j0]'+[i0 j0]';
ip=fix(m(1)+i0);
jp=fix(m(2)+j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
YB(i,j)=X(ip,jp);
end
end
end
figure(5)
imshow(YB,mp)
axis on
title("Rotacion en 45°, y desplazamiento de 50 en X y 100 en Y")

%PREGUNTA 6
a=1;
for ang=5:5:360 %bucle para incrementar de 10 en 10 hasta 100

YC=zeros(N,M);
th=ang*pi/180; %Rotamos 45 grados aqui se convierten a radianes
i0=0; %Traslacion en y
j0=0; %Traslacion en x
for i=1:N
for j=1:M
m=[cos(th) sin(th); -sin(th) cos(th)]*[i-i0 j-j0]'+[i0 j0]';
ip=fix(m(1)+i0);
jp=fix(m(2)+j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
YC(i,j)=X(ip,jp);
end
end
end

figure(6)
subplot(6,12,a), imshow(YC,mp), title(["Rotacion de ",ang]);
axis on;
a=a+1;
end

%PREGUNTA 7

%CODIGO PARA LA REFLEXION


for a=3:1:4
[N,M]=size(Ig);
Irfx=uint8(zeros(N,M));
for cx=1:188
for cy=1:342
if a==3
M=[1 0; 0 -1];
T= [0; 343];
else
M=[-1 0; 0 1];
T= [189; 0];
end
cp= M*[cx;cy]+T;
cxp=cp(1); cyp=cp(2);
Irfx(cxp,cyp)=Ig(cx,cy);
end
end

%IMAGEN DE TRASLACION
[N,M]=size(Irfx);
imwrite(Irfx, "dron_7.jpg","jpg")
[X,mp]=imread("dron_7.jpg");
Y=zeros(N,M);
i0=-80; %Traslacion de 80 en y
j0=-80; %Traslacion de 80 en x
for i=1:N
for j=1:M
ip=fix(i+i0);
jp=fix(j+j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
Y(i,j)=X(ip,jp);
end
end
end

figure(7)
subplot (2,2,a), imshow(Y,mp);
if a==3
title("Reflexión en Y y desplazamiento de 80 en X y 80 en Y");
else
title("Reflexión en X y desplazamiento de 80 en X y 80 en Y");
end
axis on
end
subplot (2,2,[1,2]), imshow(Ig), title("Imagen a escala de grises");

%PREGUNTA 8
[X,mp]=imread("dron_gris.jpg");
[N,M]=size(X);
%Transformacion de escalado
sx = 2;
sy = 3;
Y=zeros(N,M);
for i = 1:N
for j = 1:M
m = [sy 0; 0 sx]*[i j]';
ip = fix(m(1));
jp = fix(m(2));
if (jp >= 1) & (jp <= M) & (ip >= 1) & (ip <= N)
Y(i,j) = X(ip,jp);
end
end
end
figure(8)
subplot (1,2,1), imshow(Ig), title("Imagen a escala de grises");
subplot (1,2,2), imshow(Y,mp), title("Escalado con sx = 2, sy = 3");

%PREGUNTA 9
[X,mp]=imread("dron_gris.jpg");
[N,M]=size(X);
%Transformacion de cizalladura
cz = [0.5 2 5]; %Creamos matriz con los valores que usaremos
for c = 1:3
Y = zeros(N,M);
for i = 1:N
for j = 1:M
m= [1 0; -cz(c) 1]*[i j]'; % se realiza la operación respecto a Y
ip = fix(m(1));
jp = fix(m(2));
if (jp >= 1) & (jp <= M) & (ip >= 1) & (ip <= N)
Y(i,j) = X(ip,jp);
end
end
end
figure(9)
subplot(1,3,c), imshow(Y,mp), title(["Cizalladura con cz =",cz(c)])
axis on
end

%PREGUNTA 10
[X,mp]=imread("dron_gris.jpg");
[N,M]=size(X);
%trans. de similitud entre geometrica y afines
%trasn. de traslacion y rotación
th=45*pi/180; %Rotacion (angulo en radianes)
i0=50; %Traslacion en x
j0=100; %Traslacion en y
%Transformacion de escalado
s=[0.5 1 2];
for a=1:3
Y=zeros(N,M);
for i=1:N
for j=1:M
m=[s(a)*cos(th) s(a)*sin(th);s(a)*(-sin(th)) s(a)*cos(th)]*[i-i0 j-
j0]'+[i0 j0]'; %funcion de similitud
ip=fix(m(1)-i0);
jp=fix(m(2)-j0);
if(jp>=1)& (jp<=M)& (ip>=1) & (ip<=N)
Y(i,j)=X(ip,jp);
end
end
end
b=a+1;
figure(10)
subplot(4,1,b), imshow(Y,mp), title(["Transformación de similitud con rotacion de
45, traslacion de 50 en X y 100 en Y y escalamiento de",s(a)]);
axis on;
end
subplot(4,1,1), imshow(Ig), title('Imagen a escala de grises original')

También podría gustarte