Mete Prüfungsvorbereitung

Hallo ihr lieben… Anbei gibt es die Klausurvorbereitung vom Dienstag… Bei Fragen fragen

Fett heißt Frage, bzw Aufgabenstellung


>>Fertig Programmieren, ein Grau Verlauf oben, unten:
public class prüfung
{
int width = 200, height = 100;
int[] pixels = new int[width+height];
for (int i=0; i<width*height ; i++ )
{
pixels[i]= 0xFFFFFF;

<Lösung>

int y = i/width;
int grau = y* (255/height);
pixels[i] = 0xFF+ grau<<16 + grau<<8 + grau;
}
}
</Lösung>

>>Wenn man in Photoshop ein neues Bild anlegt lassen sich
>>die Pixelanzahl in der entprechenden Richtung einstellen.
>>Wie viele dieser Größen können sie unabhängig voneinander
>>wählen

// 2 Wählen, weil sie voneinander Abhängen (Pixel/Länge=Auflösung)!!!

>>Zeichen sie die Graduationskurve eines Operators der eine Binäärisierung
* eines Bildes erzeugt.

Binärisierung die Graduationskurve

>> Ein 800*600 großes Bild:

* Wie groß in:
* CMYK 1875 kB
* Gaustufen 468 kB
* Binär 58 kB

>>Was bewirkt diese Graduationskurve? Schreibe den Code dafür! Siehe angehängtes Bild…
mete2.jpg
int (int Y_in)
{

<Lösung>

int Y_out = 0;
Y_out = 255-Y_in -64;
Y_out = (Y_out < 0 ? 0: Y_out)

</Lösung>
returnY_out;
}

>>Was bewirkt diese Graduationskurve? Schreibe den Code dafür!Siehe angehängtes Bild…

mete.jpg

int (int Y_in)
{

<Lösung>

int Y_out = 0;
Y_out = 255-Y_in -64;
Y_out = (Y_out < 0 ? 0: Y_out)

</Lösung>


returnY_out;
}

>> Was bewirkt folgender Filter
* public int filterA(int c)
* {
* intx = (c & 0xff00)>>8;
* return 0xff000000 | (x << 16) | (x << 8 ) | x;
* }

>Lösung
* Graustufenbild auf Basis der Grünwerte… R und B bekommen den G Wert

>>Was bewirkt folgender Filter
* public int filterA(int c)
* {
* int a = (c & 0xff000000);
* int r = (c & 0xff0000);
* int g = (c & 0xff00);
* int b = (c & 0xff);
* return a| (b << 16) | (g << 8 ) | r;
* }

>Lösung
Vertauscht RGB gegen BGR

>>Was bewirkt folgender Filter
* public int filterA(int c)
* {
* int a = (c & 0xff000000);
* int r = (c & 0xff0000);
* int g = (c & 0xff00);
* int b = (c & 0xff);
* r = r / 2+64;
* g = g / 2+64;
* b = b / 2+64;
* return a| (r << 16) | (g << 8 ) | b;
* }

>Lösung
Kontrasthalbierung

>>3*3 Minimumsfilter anweden
* nimmt sich alle im kernel und nimmt das minimum als neuen Wert
*
* FF FF FF
* FF FF FF
* FF FF 00
* wird 00
*
* nur
* FF FF FF
* FF FF FF
* FF FF FF
* wird FF
*

>>3*3 Medianfilterung anwenden
*
* felder aufschreiben und mittlersten wert übernehmen…
* z.b.
*
* 0 13 64 ..
* 68 67 255 ..
* 90 90 33 ..
* .. .. ..
*
*
* in reihenfolge auflisten:
* 00 13 33 64 67 68 90 90 255
* 1 2 3 4 5 6 7 8 9
*
* nummer 5 = 67
*
* lesen: http://de.wikipedia.org/wiki/Rangordnungsfilter
*
*
*
>>was bewirken die kernel
*
* Kernels:
* .3 0 0
* 0 .3 0
* 0 0 .3

>Lösung
diagonaler weichzeichner

* 0 0 0
* -1 3 -1
* 0 0 0

>Lösung:
horitontale vertikale [update: Team Firenze, 15.04.08, danke Florian] Kanten finden


>> Welche Probleme treten bei der Verkleinerung mit „Nearest Neighbour“
auf? Nenne zwei und die Gründe dafür!

>Lösung
ANTWORT: (immer gültig: Bildinformationen gehen verloren)

1. Bildteile mit hoher Frequenz oder sehr feinen Details werden verfälscht
dargestellt. (Zum Beispiel könnte bei dem Bild nächste Frage bei der
Verkleinerung der linke Teil komplett schwarz werden)

Die Abtastfrequenz sollte immer mindestens doppelt so hoch sein wie die
Bildfrequenz.

2. „Zeilensprünge“ treten auf. Durch Verkleinern können diagonale Linien
plötzliche unschöne Ecken enthalten

>>FRAGE: Wofür steht das Bild? Was wird dabei gemessen / eingestellt? Was ist der Sinn daraus?

>Lösung
ANTWORT:

Das Bild ist ein Testbild für die Gammakorrektur. Man benutzt es zum
Kalibrieren / Einstellen von Darstellungsgeräten (Monitoren). Wenn die
Schwarz-Weiß-Streifen auf der linken Seite den gleichen Grauwert haben wie
die Fläche (RGB 128 128 128) rechts, ist der Monitor richtig eingestellt für
optimale Farben und Grauwerte…

Im nächsten Tutorium wird David besonders was zum Shiften, zu Photoshop und zu Kanten machen.

3 Kommentare

  1. jan sagt:

    * int a = (c & 0xff000000);
    * int r = (c & 0xff0000);
    * int g = (c & 0xff00);
    * int b = (c & 0xff);
    * return a| (b

  2. jan sagt:

    schön, dass man keine zwei spitzen klammern posten kann…
    hier die fortsetzung:
    vertauscht meines erachtens nach nicht r und b sondern erstellt ein graustufenbild anhand der blautöne?!

  3. Florian sagt:

    * 0 0 0
    * -1 3 -1
    * 0 0 0
    >Lösung:
    horitontale Kanten finden

    p.s. Denke dieser Filter findet vertikale Kanten …..