Blatt10

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Blatt10
Hallo,
ich habe eine Frage zur Aufgabe b). Ich versteh nicht wie ich da herangehen soll. Ich soll ja geeignete startHeight und starWidth werte finden. Aber wo sollen die sich in meinem Bild befinden. Und was bedeutet geeignet?
Hat jemand einen Tipp fuer mich?


Ich wuerde auch gerne wissen, wie das an der Stelle sein soll, wo man das Bild einfuegen muss.
Der Punkt, der mit start,height als Einfuegepunkt gilt…Ist der die linkere obere Ecke vom einzufuegenden Bild oder die linke untere ecke?


a) Bildgröße
Angenommen image beinhaltet mehr pixel als das in das einzufügende Bild.

  1. Soll in diesem Fall letzteres vergrößert werden?
  2. oder entspricht dies einem Fehlerfall?
  3. oder sollen wir dann nur das kopieren, was auch reinpasst?

Edit: ich vermute es soll 1. in der b) umgesetzt werden?


Zur c):
Mir ist gerade nicht so ganz ersichtlich warum m_h als float-Variable angelegt ist. Wir haben doch ein Gitter mit ganzzahligen Koordinatenwerten, d.h. dass der Abstand zum nächsten Nachbarn doch auch stets ein ganzzahliger Wert sein sollte. Andernfalls bleibt einem ja sowieso nichts anderes übrig als zu casten, was in unserem Fall, da m_h mit 1.0f initialisiert ist, ja nichts kaputt macht, aber ja auch nicht ganz Sinn der Sache sein sollte, denke ich.


ich habs als Fehlerfall umgesetzt.

1 b)
zur b) :
einfach Werte ausprobieren bis es klappt? Denn man kann ja nicht vieles rechnen


Wenn man ein zu großes Bild in ein kleines Bild kopieren will sollte das abgefangen werden (assertion) bevor über das Zielbild hinaus geschrieben wird.
Die Hauptsache ist, dass keine Pixel zugegriffen werden, die es nicht gibt. Das Vergrößern des Zielbildes ist nicht Teil der Aufgabenstellung.

1 Like

Also ich habe alles fertig und 1a) -c) muessten auch (s. Bilder) stimmen.
Bei der 1d) macht er mir bei der Berechnung iwie nur schwarze Pixel anscheinend, aber ich weiss nicht, warum…
Gehe laplacianimage entlang, uebergebe den methoden punkte aus resultPoisson, also eig richtig?!
http://s14.directupload.net/images/130702/raccd65h.jpg


Hast du den Vergleich mit dem Maskenwert in solve() angepasst?


1 d) ich kriege da auch nur schwarze pixel aber schon an der richtigen Stelle , und ja ich habe die Mask-If-Abfrage geändert , sonst würde ja nichts passieren
EDT: es scheint an calculateSorPixel zu liegen , wenn ich für recent einfach center zb nehme kommt mir schon etwas aus . bis jetzt habe ich SorPixel als lineare interpolation von laplace und den andren punkten genommen , scheint aber falsch zu sein…


Same…


schau dir doch nochmal Folie 14 von Iterative Verfahren 2: Iteratives Lösen Linearer Gleichungen an.

x_{k}^{i+1} ist hier der Pixel der im aktuellen Iterationsdurchlauf berechnet wird. Der wird zusammengesetzt aus einer linearen Interpolation mit omega zwischen (dem vorherigen Wert (earlier) an der aktuellen Stelle) und (dem Laplace Wert - (die Pixel in der Nachbarschaft * ihrem Koeffizienten)) / (dem Koeffizienten des aktuellen Pixels)


Was genau ist denn mit Koeffizienten gemeint?

Sieht die Formel für recent dann so aus?
recent = (laplace - ((left + right + up + down) * coeff_neigh)) / coeff_cent

Zur c) hätte ich auch noch eine Frage:
Im Moment habe zwar schon ein ähnlich ausschauendes Bild, allerdings ist es leicht heller als das Referenzbild:

$ diff resultLaplacian.ppm ../data/result1c.ppm | tail -n 42
104263,104273c104263,104273
< 0 0 75 
< 100 100 25 
< 25 25 25 
< 0 0 25 
< 75 75 25 
< 25 25 0 
< 25 25 50 
< 25 25 0 
< 0 0 50 
< 50 25 0 
< 0 0 25 
---
> 0 0 65 
> 87 87 22 
> 22 22 22 
> 0 0 22 
> 65 65 22 
> 22 22 0 
> 22 22 43 
> 22 22 0 
> 0 0 43 
> 43 22 0 
> 0 0 22 
104276,104283c104276,104283
< 75 75 75 
< 25 50 0 
< 75 25 75 
< 50 50 0 
< 0 0 100 
< 50 50 50 
< 50 50 0 
< 0 0 25 
---
> 65 65 65 
> 22 43 0 
> 65 22 65 
> 43 43 0 
> 0 0 87 
> 43 43 43 
> 43 43 0 
> 0 0 22 

Meine Funktion berechnet die Werte wie folgt: (dabei ist f(x, y) Color an der Stelle x, y), (h und h² sind durch 1 ersetzbar)
laplacian = (f(x+h, y) + f(x-h, y) - f(x, y) - f(x, y)) / h² + (f(x, y+h) + f(x, y-h) - f(x, y) - f(x, y)) / h²

Erkennt jemand einen Fehler?

1 Like

Weis irgendjemand was man machen muss wenn mit dem Aufruf .A10 --default trotzdem keine Bilder angezeigt werden ? make A10 und make debugMain zeigen keinerlei Fehler.


Ich formuliere deine Frage mal um:
Weiß irgendjemand was man machen muss, wenn das Programm nicht läuft? Kompilieren bringt keinerlei Fehler.

Ein bisschen mehr Information wäre schon vorteilhaft für eine Diagnose…


(dem Laplace Wert - (die Pixel in der Nachbarschaft * ihrem Koeffizienten

kommen da nicht negative Werte raus, da der Laplace Wert haeufig fast schwarz ist?


Ja, aber überleg dir nochmal, welches Vorzeichen der Nenner (Koeffizient des aktuellen Pixels) hat :wink:


Hast du die debugMain mal angepasst und getestet ob die Einzelaufgaben (Bild einfügen, Laplace berechnen) funktionieren?