Surface Depth Hallucination
Miércoles, 3 de septiembre de 2008 por jorgeLo mejor de todo es el nombre pero lo bueno es que es una técnica que permite obtener un relieve aproximado con una foto con iluminación difusa. Aunque lo presentan como una técnia para obtener el 3d usando una foto sin flash y otra con flash la foto con flash permite mejorar el resultado pero no es necesario. Primero lo ví en slashdot. No os perdais el video aquí. Para mas información todo viene explicado en este artículo o en la pagina web original
incluyo tambien un poco de código (sin comentar sorry y solo la versión sin flash)
im= imread('piedras.jpg');
gris = rgb2gray(im);
for i=1:4 ,
PSF = fspecial('gaussian',3^i,(3^i)/2);
%Create a simulated blur in the image and add noise.
Blurred(i,:,:) = imfilter(gris,PSF,'conv');
end
for i=1:3,
laplacian(i,:,:)=double(0.5*(double(Blurred(i,:,:))./double(Blurred(i+1,:,:))));
end
s=size(laplacian);
depth= zeros([s(2),s(3)]);
for k=1:s(3),
k
for j=1:s(2),
for i=1:s(1),
if laplacian(i,j,k)>0.5
d= 3^i*sqrt(1/laplacian(i,j,k));
else
d= -3^i*2*(1-laplacian(i,j,k));
end
depth(j,k)=depth(j,k)+d;
end
end
end
maxim=max(max(depth));
minim=min(min(depth));
depth=(depth-minim)/(maxim-minim);
figure,imshow(gris);
figure,imshow(depth);
imwrite(depth,'depth_piedras.jpg','JPEG');
imwrite(gris,'piedras_gris.jpg','JPEG');




