Matlab - Ayuda, Transformación de Perspectiva de una Imagen en Matlab

 
Vista:
Imágen de perfil de Lamt

Ayuda, Transformación de Perspectiva de una Imagen en Matlab

Publicado por Lamt (6 intervenciones) el 10/04/2018 22:58:59
Hola a todos, hoy vengo con este problema, que no se a que se deba espero me puedan ayudar :)

Lo que realmente quiero lograr es un efecto como esto en una Imagen:

perspectiva

Este es mi codigo

Funcion de perspectiva de una imagen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
%%Funcion de perspectiva de una imagen 
%%IMAGEN
%%FACTOR, K PARA GENERAR LA INCLINACION
%%k - perspectiva
%%G salida de la imagen
function [ G ] = perspectiva( I, k )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
 
k=abs(k)
G=0;
tamCol=round(size(I,1)*size(I,2)*k);
 
if(tamCol < 2000) %%tamaño de la imagen maximo permitido columnas
 
    G=zeros(size(I,1), tamCol , size(I,3));
    for i=1:size(I,1)
        for j=1:size(I,2)
            ncol=round(i*j*k);
            G(i,ncol,:)=I(i,j,:)+1;
        end;
    end;
end;
G=uint8(G);
end

El siguiente código, es la corrida de mi función en un nuevo programa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
close All;
clear All;
clc;
 
I=imread('C:\Users\lamt\Documents\Topico_I\Salidas\Delf.jpg');
 
tic; G1=perspectiva(I, 0.1); toc;
tic; G2=perspectiva(I, 1); toc;
tic; G3=perspectiva(I, 1); toc;}
tic; G4=perspectiva(I, 1); toc;
 
figure;
image(I); title('Imagen original');
 
figure;
subplot(2,2,1); image(G1); title('K = 0.00');
subplot(2,2,2); image(G2); title('K = 0.00');
subplot(2,2,3); image(G3); title('K = 0.00');
subplot(2,2,4); image(G4); title('K = 0.00');
 
imwrite(G1, 'C:\Users\lamt\Documents\Topico_I\Salidas\IPerspectiva1.jpg');
imwrite(G2, 'C:\Users\lamt\Documents\Topico_I\Salidas\IPerspectiva2.jpg');
imwrite(G3, 'C:\Users\lamt\Documents\Topico_I\Salidas\IPerspectiva3.jpg');
imwrite(G4, 'C:\Users\lamt\Documents\Topico_I\Salidas\IPerspectiva4.jpg');

Imagen de entrada:

Delf

Cuando lo corro, me sale unicamente esto:


p1


Anexo mi referencia de la fuente que consulté para la elaboración del codigo


P2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda, Transformación de Perspectiva de una Imagen en Matlab

Publicado por Lindsey (119 intervenciones) el 12/04/2018 19:04:43
Hola, bueno primero que nada, no sé si te has fijado pero los valores de k que estás usando (0.1 y 1) hacen que la condición de la línea 14 de tu función (if(tamCol < 2000)) sea falsa, por lo que debes usar un número más pequeño hasta que sí se cumpla la condición. Lo otro que debes corregir es la función round de la línea 19. Utiliza la función ceil en vez de round.

Con este cambio de round a ceil, y con un k=0.01, me dio la siguiente imagen

delfin2

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Lamt

Ayuda, Transformación de Perspectiva de una Imagen en Matlab

Publicado por Lamt (6 intervenciones) el 13/04/2018 00:30:58
Muchisimas gracias por responder, efectivamente no me habia percatado de ese detalle
lo voy a corregir, y la imagen que me muestras es lo que estaba esperando.

Gracias nuevamente, Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar