PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mathlab Nachhilfe



Hannibal Smith
08-04-2009, 14:32
Hallo

Ich bin einfach zu blöd für das ganze. Ich will ein bild irgendwie verzerren (zur Zeit is ma no egal wie) und dann wieder entzerren das es so ausschaut wie das ursprüngliche Bild.

so schauts zur Zeit aus:



I = imread('Raster.jpg');
udata = [0 1]; vdata = [0 1]; % input coordinate system


u = [ 0 1 1 0]';
v = [ 0 0 1 1]';
x = [-4 -6 -3 6]';
y = [2 -3 -5 3]';

tform = maketform('projective',[u v],[x y]);

[B,xdata,ydata] = imtransform(I,tform,'bicubic','udata',udata,...
'vdata',vdata,...
'size',size(I),...
'fill',128);
tform2 = maketform('projective',[x y],[u v]);
[C,xdata,ydata] = imtransform(B,tform2,'bicubic','udata',udata,...
'vdata',vdata,...
'size',size(B),...
'fill',128);

subplot(1,3,1), imshow(udata,vdata,I), axis on
subplot(1,3,2), imshow(xdata,ydata,B), axis on
subplot(1,3,3), imshow(xdata,ydata,C), axis on
pause;
clear all;


Problem: es passt hinten und vorne nicht nicht zusammen.

Lg Hannibal

tyler_durden
08-04-2009, 14:59
Ich will ein bild irgendwie verzerren (zur Zeit is ma no egal wie) und dann wieder entzerren das es so ausschaut wie das ursprüngliche Bild.



Gleich mal vorweg ich hab mich mit Matlab und Octave jetzt schon lang nimmer gespielt, also bin im Syntax net so fit. Und kenn mich mit so verzerr Sachen auch net aus.
Aber vom Prinzip her muss es schon mal wichitg sein wie du das Original verzerrst damit du von dem neuen Bild wieder zurückrechnen kannst. Denn wenn dieser Vorgang nicht bijektiv ist, sprich die Verzerrung muss eindeutig sein und die Entzerrung, dann kann das schonmal nicht gehen. Zb scheidet dann schon einfaches quadrieren in R oder noch etwas einfacher das Begrenzen von Werten auf gewisse Maxima aus weil es nicht eindeutig umkehrbar ist.

Leider kann ich aus dem Code jetzt nicht herauslesen was diese Funktionen mit den Eingangsdaten machen.



Problem: es passt hinten und vorne nicht nicht zusammen.

Etwas mehr Infos wären interessant um was konkretes sagen zu können, wie gesagt mir sagen die beiden obigen Funktionen nix.

deathhero
08-04-2009, 15:08
vlt. hilft das: (ab seite 8)

http://www-classic.uni-graz.at/bibwww/outgoing/erfahrungsberichte/dhf_weizmann_03.pdf

Hannibal Smith
11-04-2009, 10:17
So ich habs



I = imread('Raster.jpg');
udata = [0 1]; vdata = [0 1]; % input coordinate system

u = [ 0 1 1 0]';
v = [ 0 0 1 1]';
x = [-4 -6 -3 6]';
y = [2 -3 -5 3]';

tform = maketform('projective',[u v],[x y]);

[B,xdata,ydata] = imtransform(I,tform,'bicubic','udata',udata,...
'vdata',vdata,...
'size',size(I),...
'fill',128);

[C,xdata,ydata] = imtransform(B, fliptform(tform),'bicubic','udata',xdata,...
'vdata',ydata,...
'size',size(B),...
'fill',128);


subplot(1,3,1), imshow(udata,vdata,I), axis on
subplot(1,3,2), imshow(xdata,ydata,B), axis on
subplot(1,3,3), imshow(xdata,ydata,C), axis on
pause;
clear all;


http://666kb.com/i/b7zins3oo5teghcbg.gif