Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo , ich bins nochmal
Ich habe in der Uni folgende Aufgabe :
"Ihre Aufgaben besteht nun darin, zunächst eine Lösungsstrategie und dann eine Java-
Implementierung zur automatischen Erzeugung eines Gesamtbilds aus einer Serie von
versch. Einzelbildern zu entwickeln und zu dokumentieren. Es ist also ausdrücklich KEINE
Interaktion mit dem Benutzer bei der Gesamtbilderstellung vorgesehen. Sowohl die Ausgangsbilder
als auch das Zielbild sollen als Farbbilder verarbeitet werden.
[...]
Als Format zur Speicherung der Einzelbilder soll das PNG-Format verwendet werden. Die
Bilder sollen darüber hinaus folgendermaßen benannt sein: obenL.png, obenR.png,
untenR.png und untenL.png. Generell sollte Ihr Algorithmus in der Lage sein, unter
ähnlichen Rahmenbedingungen aufgenommene Bildserien ohne weitere Anpassungen
verarbeiten zu können.
Die Nahtstellen zwischen zwei zusammengefügten Einzelbildern lassen sich im Gesamtbild
erkennen. Beschreiben Sie eine Strategie, wie dieser unerwünschte Effekt vermieden
werden könnte und versuchen Sie, diese Strategie in Ihre Implementierung zu
integrieren. "
Die Grundsätzliche Dokumentation kriege ich wohl hin, da ich weiß was gemacht werden soll (theoretisch) aber praktisch beim Programmieren nicht weiter komme ...
Wir benutzen:
princeton.stdlib.Picture;
java.awt.Color;
Weiß nicht wie ich da die RGB Werte miteinander vergleichen kann um die sich überschneidenden Ränder der Bilder zu überlappen.
Wie wärs mit == ? So führt man Vergleiche durch. Du kannst auch
Code:
color1.equals(color2)
machen, das tut das selbe.
Für deinen Anwendungsfall wäre wohl eher ein Ähnlichkeitsabgleich ratsam, bei dem dann geschaut wird, ob sicht die einzelnen Farbkomponenten nur um ein gewissen Betrag unterscheiden. Color bietet dazu Methoden an um die einzelnen Farbcomponenten aus einem RGB Wert rauszulesen, dann must du dich nicht Bitmanipulation rumschlagen, sondern nur mit normalen Rechenoperationen.
Als generellen Ansatz für den Algorithmus (falls das gemeint war): Verschachtelte Schleifen, vielleicht in Kombination mit Rekursion. Aber da kenn ich mich nicht wirklich gut aus, Mustererkennung ist nicht umsonst ein eigener Bereich im Informatik-Studium.
Auch wenn man die 'Picture'-Klasse in mancher Hinsicht in Frage stellen könnte: Auf Data Types finden sich viele, viele Beispiele zu Bildverarbeitung (d.h. um bestimmte Dinge zu lernen mag die Klasse OK sein). Eine etwas konkretere Fragestellung wäre darum nicht schlecht. (BTW: Die Vergleiche müssen mit c0.equals(c1) gemacht werden. Um die Grenzen nicht so deutlich werden zu lassen, könnte man überblenden)