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
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
Man braucht mehr als 2 Pixel pro Periodenlänge, damit das Abtasttheorem eingehalten wird
// 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);
}
}
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
Downsampling horizontal
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
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);
}
}
}
// 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);
}
}
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.