Uebung 4


Aufgabe 1a

Beim Auge wird die Helligkeitsinformation mit der Farbinformation, durch Rezeptorenarten, wie Stäbchen und Zäpfchen, auch getrennt bzw haben verschiedene Empfindlichkeiten. Die Stäbchen sind zuständig für die Helligkeitsinformation und können bei niedrigen Lichtstärken alleine Arbeiten.

Aufgabe 1b

        
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); 							
		 pix = new PixelColor(0, 0, pix.b); 
		bmp.image.setRgbPixel(x, y, pix);
				
	}
}



Aufgabe 1c

        
// erzeugt Y-bild
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); 										
		double luminanz = (0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);
		pix.r= (int) luminanz;
		pix.g=(int) luminanz;
		pix.b=(int) luminanz;
		PixelColor pixLumi  = new PixelColor(pix.r, pix.g, pix.b);
		bmp.image.setRgbPixel(x, y, pixLumi);
        }       
}       
            

Y-Bild

 
// erzeugt Cb-Bild
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 cbr = (int) (-0.169 * pix.r +128);
		int cbg = (int) (-0.331 * pix.g +128);
		int cbb = (int) (0.5 * pix.b +128);			
		PixelColor pixCb = new PixelColor(cbr, cbg, cbb);
		bmp.image.setRgbPixel(x, y, pixCb);
	}
}
            

Cb-Bild

 
// erzeugt Cr-Bild
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 crr = (int) (0.5* pix.r +128);
		int crg = (int) (-0.491 * pix.g +128);
		int crb = (int) (-0.081 * pix.b +128);
			
		PixelColor pixCr = new PixelColor(crr, crg, crb);
		bmp.image.setRgbPixel(x, y, pixCr);
	}
}

            

Cr-Bild

 
//rekonstruktion
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); 										
		double luminanz = (0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);
		double cb = (int)((-0.169 * pix.r -0.331 * pix.g + 0.5 * pix.b) + 128);
		double cr = (int)((0.5 * pix.r + -0.491 * pix.g + 0.081 * pix.b)+ 128);
				
		pix.r= (int) (luminanz + 1.403 * (cr - 128));
		pix.g=(int) (luminanz - 0.344 * (cb -128) +- 0.714 * (cr - 128));
		pix.b=(int) (luminanz + 1.773 * (cb - 128));		
		pix = new PixelColor (pix.r, pix.g, pix.b);
		bmp.image.setRgbPixel(x, y, pix);
	}
}
            

links: Original und rechts: rekonstruktion



Aufgabe 2

 
//Histogramm Datei erstellen
int [] histogramm = new int[256];
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); 	
		double luminanz = (0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);				
		pix.b=(int) luminanz;
		int yBild = pix.b;				
		histogramm[yBild]++;
				
	}
}				
		
File file01 = new File("/Uni/medientechnologie/histogrammNew.txt");
FileWriter fw = new FileWriter(file01);
PrintWriter pw = new PrintWriter(fw);
for(int i = 0; i < histogramm.length; i++) {
pw.println(histogramm[i]);					
}				
pw.close();
            

Histogramm Datei



Aufgabe 3a

 
//aufgabe 3a) Mittelwert berechnen	
int value = 0;		
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); 	
		double luminaz = (0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);
		pix.b=(int) luminaz;
		int yBild = pix.b;
		value += yBild;
	}
}
int mittelwert = value/(bmp.image.getHeight()* bmp.image.getWidth());
System.out.println("der Mittelwert ist " + mittelwert);

//stardardabweichung berechnen		
int value02 = 0;		
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); 	
		double luminanz = (0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);
		pix.b=(int) luminaz;
		int yBild = pix.b;
		value02 += Math.pow(yBild-mittelwert,2) ;

	}
}		
int standardabweichung = value02/(bmp.image.getHeight()* bmp.image.getWidth());
double sd = Math.sqrt(standardabweichung);
System.out.println("Die Standardabweichung ist " + sd );
            

Der Mittelwert beträgt 119 und die Standardabweichung beträgt 55.910642993977454

Aufgabe 3b

 
int h =80;
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 luminaz = (int)(0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b + h);
		// nicht groesser als 8-bit
		if(luminaz >= 255) {
		luminaz=255;		
		}
		if(luminaz < 0) {					
		luminaz=0;
		}

		ix = new PixelColor(luminaz, luminaz, luminaz);
		bmp.image.setRgbPixel(x, y, pix);
	}
}
		
            

links:20 mitte:40 rechts:80

links:-20 mitte:-40 rechts:-80

blau= Helligkeit -80 grün= Helligkeit 80

Histogramm_Helligkeit_80 Datei

Histogramm_Helligkeit_-80 Datei

Aufgabe 3c

 
double k = 5.0;
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 luminaz = (int)(0.299 * pix.r + 0.587 * pix.g + 0.114 * pix.b);
        int newlu = (int) (k * (luminaz - 128) + 128);
        // nicht groesser als 8-bit
        if(newlu >= 255) {
                newlu=255;
        }
        if(newlu < 0) {
                newlu=0;
        }
        pix = new PixelColor(newlu, newlu, newlu);
        bmp.image.setRgbPixel(x, y, pix);
        }
 }
            


Helligkeit: links:0.2; mitte:0.4; rechts:0.8; links unten:1.0



Kontrast: links:1.5; mitte:2.5; rechts:5.0; links unten:10.0



links: -10.0 und rechts: - 2.0

blau= Kontrast 0.2 orange= Kontrast 10.0

Histogramm_Kontrast_0.2 Datei

Histogramm_Kontrast_10.0 Datei

Beim Kontrast erkennt man zwei Extrempunkte, die vor allem am Anfang und am Ende sind, welches auf einen hohen Kontrast aufweist (k = 10.0). Und bei einem niedrigen Kontrast (k=0.2) befindet sich der Extrempunkt mittig. Bei der Helligkeit verschieben sich die Werte, je nach Helligkeitsintensität, im Diagramm. Wenn der Extrempunkt am Ende ist, ist die Helligkeitsintensität hoch (h=80) Und wenn der Extrempunkt am Anfang ist, dann ist die Helligkeitsintensität niedrig (h= - 80), also das Bild ist dunkel. Im Vergleich zum Histogramm aus Aufgabe 2, sind keine Extrempunkte, weder am Anfang noch am Ende. Die Werte sind weiter verteilt im Diagramm und sammeln sich nicht an den Extremspunkten.