Uebung 2


Aufgabe 1 - 1.1

manmade nature


Aufgabe 1 - 1.2

header

Beide Bilder haben die selben Werte

Dateigröße: Pixelanzahl * Farbtiefe(8 Bits) * Farbkanäle (3 Kanaele )
Bit pro Pixel: Farbkanäle (3 kanäle) * Farbtiefe(8 Bits)
Breite: Gesamt Pixelanzahl horizontal
Höhe: Gesamt Pixelanzahl vertical

Dateigröße berechnen: (Höhe * Breite * 24(Farbtiefe * Farbkanäle) )/8


Aufgabe 2 - 2.1

grating_H grating_V

links Werte von granting_H1 und rechts Werte von granting_V4

Periodenlänge in Pixel granting_H1 : 11
Periodenlänge in Pixel granting_V4 : 0


Aufgabe 2 - 2.2

Man braucht mehr als 2 Pixel pro Periodenlänge, damit das Abtasttheorem eingehalten wird


Aufgabe 2 - 2.3

manmade_grau nature_grau

// erzeuge graustufenbild
for(int y = 0; y < bmp.image.getHeight(); y++) {
for(int x = 0;x < bmp.image.getWidth(); x++) {
PixelColor pix = bmp.image.getRgbPixel(x, y);
int grau = (int) (0.3 * pix.r + 0.6 * pix.g + 0.1 * pix.b);
pix = new PixelColor(grau, grau, grau);
bmp.image.setRgbPixel(x, y, pix); } }


Aufgabe 2 - 2.4

Wenn zBsp. beim Fotografieren eine schnelle Hell-Dunkel Änderung/wechsel entsteht, reicht somit das Abtastrater nicht meh aus und es entsteht Aliasing bzw. ein Moiree Muster


Aufgabe 2 - 2.5

Downsampling horizontal

down_HH down_VH

links:grating_H1_down, man erkennt eine veränderung, die Ränder der Horizonalen Linien haben keinen flüssigen Farbverlauf
rechts: granting_V4_down, keine veränderung erkennbar

for(int y = 0; y < bmp.image.getHeight(); y++) {
PixelColor pix = null;
for(int x = 0; x < bmp.image.getWidth(); x++) {
if(x%3==0) {
pix = bmp.image.getRgbPixel(x, y);
bmp.image.setRgbPixel(x, y, pix);
}
else {
bmp.image.setRgbPixel(x, y, pix);
}
}
}

Downsampling vertical

down_HV down_VV

links:grating_H1_downV, man erkennt keine veränderung,
rechts: granting_V4_downV, Veränderung erkennbar, Vertikale Linien haben keinen flüssigen Farbverlauf

// vertical downsampling
for(int x = 0; x < bmp.image.getWidth(); x++) {
PixelColor pixY = null;
for(int y = 0; y < bmp.image.getHeight(); y++) {
if(y%3==0) {
pixY = bmp.image.getRgbPixel(x, y);
bmp.image.setRgbPixel(x, y, pixY);
}
else {
bmp.image.setRgbPixel(x, y, pixY);
}
}
}

down_nature down_manmade

Aufgabe 3 - 3.1

bitreduce_nature bitreduce_manmade

// bitreduzierung
int reduced_bits = 7;
for(int y = 0; y < bmp.image.getHeight(); y++) {
for (int x = 0; x < bmp.image.getWidth(); x++) {
PixelColor pix = bmp.image.getRgbPixel(x, y);
int r = pix.r;
int g = pix.g;
int b = pix.b;
r /= Math.pow(2, reduced_bits);
g /= Math.pow(2, reduced_bits);
b /= Math.pow(2, reduced_bits);
r *= Math.pow(2, reduced_bits);
g *= Math.pow(2, reduced_bits);
b *= Math.pow(2, reduced_bits);
pix = new PixelColor(r,g,b);
bmp.image.setRgbPixel(x, y, pix);
}
}


Aufgabe 2 - 3.2

Beim Bild Nature beginnt es ab einer Bit Reduzierung von 4 Bits sich zu verändern. Die Qualität verschlechtert sich und es gibt keine flüssigen Farbübergänge, erkennbar vor allem an den Blättern. Man erkennt die jeweiligen Farbpixeln

Beim Bild Manmade beginnt es ab einer Bit Reduzierung von 5 Bits sich zu verändern. Bei einer 7 Bits Reduzierung wird das Bild dunkler und der Kontrast erhoht sich. Zudem gibt es keine eine flüssigen Farbübergänge, so dass alle Pixelfarben hervorgehoben werden und de Qualität verschlechtert sich deutlich.


Aufgabe 2 - 3.3