Programmcode Funktionalität?
lima-city → Forum → Programmiersprachen → Java
aktuellen pixels
ausgabe
bild
bildausschnitt
buchstabe
code
durchschnittliche abweichung
eingebung
folgende funktion
formel
funktion
http
machen
mathematische formel
pixel
quadratische mittel
sagen
sektor
standardabweichung
url
-
Hallo, ich habe hier einen Ausschnitt eines Bilderkennungsprogramms. Es handelt sich um eine Mathematische Formel, bei der ich den Zweck nicht herausfinden kann. Vielleicht kommt jemandem die Formel bekannt vor und er/sie kann mir sagen was genau hier berechnet wird.
for(int x=0; x<bildBreite; x++){ for(int y=0; y<bildHoehe; y++ ){ pixel = bild.getPixelValue(x, y); pixelSum += pixel; pixelSquare = pixelSum * pixelSum; } } pixelAnzahl = bildBreite *bildHoehe; pixelDurchschnitt= pixelSum / pixelAnzahl; pixelIrgendwas = Math.sqrt(pixelSquare - pixelAnzahl * pixelDurchschnitt * pixelDurchscnitt);
Im Originalprogramm werden Variablen mit nur 2 Buchstaben und ohne Kommentar verwendet. Ich habe versucht nachzuvollziehen was hier passiert, aber kann beim besten Willen nicht sagen, was "pixelIrgendwas" macht.
pixelDurchschnitt scheint die Durchschnittsfarbe pro Pixel im Bildausschnitt zu ermitteln, nur was macht diese Wurzelrechnung?
Beitrag zuletzt geändert: 29.6.2010 8:36:24 von cglabs -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich hätte als erstes mal auf das Quadratische Mittel (oder RMS im Englischen) getippt, aber das scheint nicht ganz zu passen: http://de.wikipedia.org/wiki/Quadratisches_Mittel
Aber vielleicht hilft es dir ja trotzdem weiter. -
koslo schrieb:
Was gibt die folgende Funktion zurück?:
bild.getPixelValue(x, y);
Nach dem, was er oben geschrieben hat wird das der Farbwert des Pixels sein.
LG cookies -
koslo schrieb:
Was gibt die folgende Funktion zurück?:
bild.getPixelValue(x, y);
Da man in Bildverarbeitungsprogrammen oft mit Graustufenbildern arbeitet, denke ich die Funktion gibt die Graustufe des aktuellen Pixels zurück, meist im Beriche 0-255 für ganz schwarz bis ganz weiß. -
Also für mich sieht das nach einer verkorksten Varianz/Standardabweichungs-Berechnung aus.
Das bedeutet, dass man dort versucht herauszubekommen, was die durchschnittliche Abweichung der einzelnen Farbwerte vom Durchschnittsfarbwert ist.
Übrigens kann man ja mal mathematisch umformen und kommt dann auf:
pixelIrgendwas = Math.sqrt(pixelSquare - pixelAnzahl * pixelDurchschnitt * pixelDurchscnitt) = Math.sqrt(pixelSum * pixelSum - pixelAnzahl * pixelSum/pixelAnzahl *pixelSum/pixelAnzahl) = Math.sqrt(pixelSum * pixelSum * ( 1 - 1/pixelAnzahl) = Math.abs(pixelSum) * Math.sqrt(1 - 1/pixelAnzahl) Das kann man dann eventuell noch in eine andere Form bringen aber für mich macht das wenig Sinn: = Math.abs(pixelSum) * Math.sqrt((pixelAnzahl - 1) / pixelAnzahl)
PS: Falls es wirklich um die Standardabweichung geht, dann sollte die Formel so aussehen:
varianz = 0; for(int x=0; x<bildBreite; x++){ for(int y=0; y<bildHoehe; y++ ) { pixel = bild.getPixelValue(x,y); varianz += (pixel - pixelDurchschnitt) * (pixel - pixelDurchschnitt); } standardabweichung = Math.sqrt(varianz);
Dieser Code stünde dann natürlich unterhalb der Zuweisungen an pixelDurchschnitt und co. -
@cookies, kochmarkus
Ja das ist richtig. Es handelt sich um eine ImageJ Funktion, sie liefert einen Grauwert zwischen 0 und 255 zurück.
@sektor
Das könnte tatsächlich diese Varianz Formel sein. Das Programm an sich funktioniert eigentlich tadellos.
Werde mich da etwas in das Thema Varianz einlesen, vielleicht bekomme ich eine Eingebung, warum der Entwickler das so gemacht hat. Werde auch mal die untere Form ausprobieren und die Ausgaben vergleichen.
Vielen Dank, das bringt mich ganz gut weiter :)
Beitrag zuletzt geändert: 29.6.2010 20:52:32 von cglabs -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage