Seite 1 von 2

Verfasst: Montag 17. Dezember 2007, 19:45
von Leonidas
Die RGB-Werte der Pixel in den Zeilen bekommst du etwa so:

Code: Alles auswählen

import Image

def chunkize_lc(l, size):
    iterator = iter(l)
    lazy_values = [[iterator.next] * size for i in range(len(l) / size)]
    return [[inner() for inner in outer] for outer in lazy_values]

img = Image.open('logo.gif')
rgb = img.convert('RGB')
lines = chunkize_lc(rgb.getdata(), rgb.size[0])
Nun ist `lines` eine Lise von Zeilen, diese wiederrum eine Liste von Pixeln, diese wiederrum ein 3-Tupel bestehend aus dem R, G und B-Wert des Pixels.

Naja, das kannst du jetzt verarbeiten wenn du magst - aber frag mich nicht wie.

Verfasst: Montag 17. Dezember 2007, 20:05
von BlackJack
Wenn die Daten sowieso mit `numpy`verarbeitet werden, ist es wahrscheinlich einfacher(?) und schneller das Bild in ein `numpy.array` um zu wandeln und die Spaltendaten dort mittels Slicing heraus zu holen und oder das Array zu transponieren und dann zu slicen.

Re: Unscharfe Bilder erkennen.

Verfasst: Dienstag 18. Dezember 2007, 09:00
von Carraia
CM hat geschrieben:Habe mal was in der Richtung gemacht, aber Du stellst leider keine konkrete Frage.
In der zweiten Zeile des ersten Beitrags.

Verfasst: Dienstag 18. Dezember 2007, 09:49
von BlackJack
Vielleicht solltest Du die Fragen die CM gestellt hat, um besser einschätzen zu können ob und wie er Dir weiterhelfen kann, auch noch beantworten.

Re: Unscharfe Bilder erkennen.

Verfasst: Dienstag 18. Dezember 2007, 10:11
von CM
Hoi,
Carraia hat geschrieben:In der zweiten Zeile des ersten Beitrags.
Da steht:
Carraia hat geschrieben:Ich suche einen Python-Code, der unscharfe bzw. Interlaced Bilder erkennen kann. Möglichst in Verbindung mit der PI-Bibliothek(PIL).
Ich schlußfolgere daraus, daß Du ein Codesnippet brauchst, um zu entscheiden, ob ein Bild unscharf ist. Das ist eine sehr ungewöhnliche Frage, daher habe ich vermutet, daß Du vielleicht etwas Anderes meinen könntest. "Unscharf" ist ein weites Feld, aber ich will eine Antwort versuchen.

Antwort auf diese Frage: Berechne eine Fouriertransformation Deiner Bilder, die Du zuvor in Graustufen umgewandelt hast. Quadriere die transformierten Werte. Ist der Amplitudenabfall assymmetrisch? Dann leidet das Bild unter Astigmatismus. Gibt es "Spikes"? Sehr wahrscheinlich interlaced. Um hierbei Artefakte zu vermeiden hilft es das Bild mit ein paar Pixeln am Rand zu versehen, die den durchschnittlichten Grauwert des Randes haben. Zurück zum Bild: Ränder hervorheben. Sind diese verwischt gegenüber dem Mittel der Randstärke aller Bilder (größerer Variationskoffizient?) Sehr wahrscheinlich ist das Bild unscharf. Einfacher und schneller zu programmieren sind Kreuzkorrelationen der aufeinanderfolgenden Bilder. Wie verhält sich der Korrelationskoeffizient mit der Zeit (bezogen auf den Vorgänger)? (Ggf. einen leichten Bandpassfilter nutzen.)
Mehr fällt mir gerade nicht ein. Vielleicht weiß ja jemand eine cleverere Lösung.

Beantwortet das Deine Frage?

Gruß,
Christian, SCNR

Verfasst: Dienstag 18. Dezember 2007, 14:55
von Carraia
Wow. Ich suche den Code immer noch.

Ach du weißt es nicht. Zeige ich es dir. Code ist soetwas hier:

Code: Alles auswählen

import Image

def chunkize_lc(l, size):
    iterator = iter(l)
    lazy_values = [[iterator.next] * size for i in range(len(l) / size)]
    return [[inner() for inner in outer] for outer in lazy_values]

img = Image.open('logo.gif')
rgb = img.convert('RGB')
lines = chunkize_lc(rgb.getdata(), rgb.size[0])
Freut mich, daß ich dir helfen konnte.

Verfasst: Dienstag 18. Dezember 2007, 15:18
von EyDu
Carraia hat geschrieben:Wow. Ich suche den Code immer noch.
Manchmal bekommt man eben nicht genau das was man will ;-)

Mal im Ernst: Christian hat dir doch einen guten Vorschlag zur Lösung gemacht, das zu implementieren ist jetzt deine Aufgabe. Falls es dort Schwierigkeiten gibt, kannst du ja immer noch nachfragen oder mal in die entsprechenden Dokumentationen schauen. Aber man kann wohl kaum erwarten, dass jemand sich die Zeit nimmt um deine Aufgabe vollständig bearbeitet.

Sebastian

Verfasst: Dienstag 18. Dezember 2007, 15:23
von Leonidas
Carraia hat geschrieben:Wow. Ich suche den Code immer noch.

Ach du weißt es nicht. Zeige ich es dir. Code ist soetwas hier:

Code: Alles auswählen

import Image

def chunkize_lc(l, size):
    iterator = iter(l)
    lazy_values = [[iterator.next] * size for i in range(len(l) / size)]
    return [[inner() for inner in outer] for outer in lazy_values]

img = Image.open('logo.gif')
rgb = img.convert('RGB')
lines = chunkize_lc(rgb.getdata(), rgb.size[0])
Freut mich, daß ich dir helfen konnte.
Vielleicht liegt das daran, dass CM immer noch auf das Geld wartet, welches du ihm für eine Lösung sicherlich überweist...

Und der Code, der ist, hmm, von mir. Andere User mit meinem Code niederzumachen finde ich jetzt nicht so berauschend, auf ein Danke oder sonstiges halbwegs freundliches Feedback warte ich übrigens immer noch.

Verfasst: Dienstag 18. Dezember 2007, 16:22
von BlackJack
@Carraia: Da *Du* derjenige bist, der etwas haben möchte, nein sogar mit ziemlichem Nachdruck *verlangt*, solltest Du vielleicht mal darüber nachdenken ob das der richtige Weg ist nach Hilfe zu fragen. Oder ob Du mit dieser Art nicht einfach nur die Leute massiv vor den Kopf stösst.

Verfasst: Dienstag 18. Dezember 2007, 16:38
von CM
EyDu hat geschrieben:Mal im Ernst: Christian hat dir doch einen guten Vorschlag zur Lösung gemacht ...
Geht so - war nur halb ernst gemeinst, daher mein "SCNR" am Ende. Aber Leonidas' und BJs Kommentaren habe ich nichts hinzuzufügen und damit klinke ich mich aus dem Thread aus.

PS Außerdem frage ich mich wozu ich beitragen würde, wenn ich tatsächlich einen Beitrag zur Lösung - welchen Problems auch immer - leisten würde. Wem das zu kryptisch mag einfach mal Carraias homepage-Link folgen. -- Und nein ich bin nicht prüde ...

Verfasst: Dienstag 18. Dezember 2007, 17:12
von BlackJack
Recht amüsant fand ich "MillionaireMate (Kontaktanzeigen für wohlhabende & gutaussehende Personen)". Wieviele wohlhabende und gutaussehende Personen es wohl gibt, die einen Internetdatingservice brauchen, um andere wohlhabende und gutaussehende Personen zu finden. :-)

Verfasst: Dienstag 18. Dezember 2007, 17:30
von Leonidas
Ups, da habe ich wohl grad das falsche Feld geleert ;)

Verfasst: Dienstag 18. Dezember 2007, 20:22
von nkoehring
Also ich finde CMs Antwort sehr Hilfreich... und werde mich genau *wegen* dieser Antwort bei Gelegenheit (und davon gibt es ueber Weihnachten sicher genug) mal naeher damit befassen.

Danke dafuer CM.

Ja und zum Threadstarter... es scheint eine ferne Verwandschaft zu einem gewissen Großbuchstabenliebhaber hier zu geben :roll:

Verfasst: Donnerstag 20. Dezember 2007, 18:48
von Carraia
Ich will den Code und sonst gar nichts.

Sebastian, dann nimm die Aufgabe an und zeig wie der Code aussieht.

Leonidas, bist du in Geldnot ?

Blackjack, geh mal unter Leute.

Verfasst: Donnerstag 20. Dezember 2007, 18:50
von BlackVivi
0/10.
Hab schon viel bessere Trolle gesehen oO

Verfasst: Donnerstag 20. Dezember 2007, 19:10
von Hyperion
Also ich find den schon geil "Ich WILL!!!" :D
Aber ok, der Thread wird sicherlich bald einschalfen ... schade eigentlich *g*

Verfasst: Donnerstag 20. Dezember 2007, 19:20
von BlackJack
@Carraia: Geh mal selber unter Leute. Ich habe ja schon recht wenig Sozialkompetenz als Nerd, aber selbst *ich* sehe warum Du den Code nicht bekommen wirst. :P

Verfasst: Donnerstag 20. Dezember 2007, 19:21
von EyDu
Ich möchte deiner Bitte natürlich nachkommen und pflichtgemäß Code liefern, welcher das Problem löst. Ich war sogar so großzügig nicht nur ein Programm aufzuschreiben, sonndern alle Programme die dein Problem lösen:

Code: Alles auswählen

A := ASCII
{C | C in A*; C Code; C erkennt alle unschaften Bilder}
Mit A* wären sogar alle deine Probleme (zumindest programmiertechnis) gelöst.

:-)

Verfasst: Donnerstag 20. Dezember 2007, 19:23
von CM
doch noch eine Antwort: plonk

Verfasst: Donnerstag 20. Dezember 2007, 21:00
von Leonidas
Carraia hat geschrieben:Leonidas, bist du in Geldnot ?
Nicht direkt. Bitten kostet nichts. Fordern schon. So ist das im Leben. Ein Arbeitgeber fordert Arbeit und zahlt dafür. Er braucht dann nicht zu bitten.