Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Programování - Java - Deformace obrázku

Dobrý den,

potřeboval bych poradit. Mám obrázek zde:

http://img705.imageshack.us/img705/2738/img2fr.png

a ten obrázek bych potřeboval sdeformovat do této podoby:

imgnv.png

a nedaří se mi to udělat. Pokoušel jsem se to dělat skrz kod níže ale výsledek připomíná kus pizzy jako když bych zmáčkl k sobě 2 levé rohy horní a dolní. Mohl by mi prosím někdo poradit jak na to? Děkuji

Kod:

for (int i = 0; i < imageB.getWidth(); i++) {
for (int j = 0; j < imageB.getHeight(); j++) {

int fi = (int)Math.sqrt(i*i + j*j);
int r= (int) (Math.atan2(i, j) / DEG_TO_RAD);

if (r < imageA.getWidth() && fi < imageA.getHeight()) {
// nastaveni pixelu 2. obrazku na pozici (i,j)
// na barvu z 1. obrazku na pozici (r, fi)
// TODO nastaveni barvy na pozici (i, j)

imageB.setRGB(i, j, imageA.getRGB(r, fi));
}
}
}

Předmět Autor Datum
Spíš postupuj opačně. Pro každý pixel výsledného obrázku si vypočítej, jaký bod mu odpovídá v původn…
Wikan 27.03.2013 11:45
Wikan
To me vubec nenapadlo a muzu se jeste zeptat jak by se resil ten tvar? Protoze zatim docilim maximal…
HF 27.03.2013 12:43
HF
Asi ti nerozumím.
Wikan 27.03.2013 12:54
Wikan
Ja bych ve výsledku potřeboval dostat tenhle tvar toho obrazku 1. obrázek imgnv.png ale zatim i kd…
HF 27.03.2013 13:04
HF
Tak to jsi ten opačný převod udělal špatně.
Wikan 27.03.2013 13:38
Wikan
A jak by se to tedy melo udelat? Ale porad nechapu jak udelat abych nemel po transformaci pocatek ve…
HF 27.03.2013 13:45
HF
Tak vytiskni pizzu na hrneček a bude to OK. Jen tak mimo, sice ti moc neporadím, ale dle slov předn…
MašinkaTomáš 27.03.2013 13:52
MašinkaTomáš
To sice name ale nejprve potrebuji prijit na to jak to vubec funguje nebo jak to mam vubec udelat al…
HF 27.03.2013 13:55
HF
Máš recht, já taky nevím jak to napsat a to jsem absolvoval všechny cvičení. Udělám to taky přes 2…
MašinkaTomáš 27.03.2013 14:02
MašinkaTomáš
Pro zjištění kam se má původní bod posunout používáš nějakou funkci. Takže ty teď potřebuješ použít…
Wikan 27.03.2013 14:41
Wikan
Mno pouzivam polarni transformace ktere bych mel pouzit a melo by to podle nich nejak jit udelat jen… poslední
HF 27.03.2013 14:58
HF

Ja bych ve výsledku potřeboval dostat tenhle tvar toho obrazku

1. obrázek
imgnv.png

ale zatim i kdyz jsem to zkousel opacne jak jste mi radil dostavam toto

2.obrázek
img3y.png

používám převod na polární souřadnice ale nevím si rady jak z toho dostat ten 1.obrázek respektive ten tvar nedaří se mi přijít na to jak doplnit ten program aby mi to fungovalo

A jak by se to tedy melo udelat? Ale porad nechapu jak udelat abych nemel po transformaci pocatek ve spice viz obrazek 2 ale mel je jako oblouk viz obrazek 1

Ted to probiha tak ze jak projizdim obrazek B(novy) pixel po pixelu a pak tomu pixelu pridelim barvu z obrazku A(puvodni)

Pro zjištění kam se má původní bod posunout používáš nějakou funkci. Takže ty teď potřebuješ použít inverzní funkci, abys našel původní bod.
Ale správně bys to měl dělat přes násobení matice a vektoru. Pak by stačilo najít inverzní matici.

Zpět do poradny Odpovědět na původní otázku Nahoru