Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

02 Pixel auslesen (History)

Februar 27, 2012

Wir erlernten, wie es möglich ist ein Bild PImage() mit Hilfe der Funktion loadPixels() auszulesen und so auf die verschiedenen Pixel zuzugreifen um diese zu bearbeiten oder darzustellen. Hier habe ich mich für die History entschieden. Ich stelle im obenstehenden Bild die Helligkeitswerte der einzelnen Pixel dar.

// Aufgabenstellung: Diashow erstellen mit 5 Bildern welche durch drücken der Leertaste wechseln. Anschliessend kann man mit der Maus über das Bild fahren und
// sieht die Pixelwerte des unter dem Cursor liegende Pixels.

PImage [] img;
int[] hist = new int[256];
int welchesBild;

void setup()
{
img = new PImage[5];

img[0] = loadImage("landschaft.jpg");
img[1] = loadImage("landschaft1.jpg");
img[2] = loadImage("landschaft2.jpg");
img[3] = loadImage("landschaft3.jpg");
img[4] = loadImage("landschaft4.jpg");

size(1024,768);
}

void draw()
{

image(img[0],0,0);

switch(key)
{
case'1':
int welchesBild = 0;
image(img[welchesBild],0,0);
bildDurchsuchen();
break;

case'2':
welchesBild = 1;
image(img[welchesBild],0,0);
bildDurchsuchen();
break;

case'3':
welchesBild = 2;
image(img[welchesBild],0,0);
bildDurchsuchen();
break;

case'4':
welchesBild = 3;
image(img[welchesBild],0,0);
bildDurchsuchen();
break;

case'5':
welchesBild = 4;
image(img[welchesBild],0,0);
bildDurchsuchen();
break;
}

}

void bildDurchsuchen()
{
for (int i = 0; i < img[welchesBild].width; i++) { // diese Schleife geht durch die Spalten
for (int j = 0; j < img[welchesBild].height; j++) { // diese Schleife geht die Pixel der Spalte durch
int bright = int(brightness(get(i, j))); // get(i,j) liest die Farbinformation des Pixels mit den Koordinaten i,j aus / brightness() gibt die Helligkeit des Pixels aus
hist[bright]++;     // schreibt den Wert ins Array
}
}

// Find the largest value in the histogram
int histMax = max(hist); // liest den höchsten Wert des Arrays aus

stroke(255); //setzt die Strichfarbe auf Weiss

// Draw half of the histogram (skip every second value)
for (int i = 0; i < img[welchesBild].width; i += 2) { // for-Schleife welche jede 2. Spalte durchläuft

// Map i (from 0..img.width-1) to a location in the histogram (0..255)
int which = int(map(i, 0, img[welchesBild].width, 0, 255)); // Wert wird generiert aus i welcher von 0 bis 255 ist // um die Darstellung auf die ganze Grösse zu machen.
// Convert the histogram value to a location between
// the bottom and the top of the picture
int y = int(map(hist[which], 0, histMax, img[welchesBild].height, 0)); // nimmt den Wert aus dem Array welches dem Wert des Arrays entspricht und mapt diesen.
line(i, img[welchesBild].height, i, y);
}
}