Unscharfe Bilder erkennen.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 17. Dezember 2007, 19:45

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Beitragvon BlackJack » Montag 17. Dezember 2007, 20:05

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.
Carraia
User
Beiträge: 10
Registriert: Samstag 15. Dezember 2007, 17:35

Re: Unscharfe Bilder erkennen.

Beitragvon Carraia » Dienstag 18. Dezember 2007, 09:00

CM hat geschrieben:Habe mal was in der Richtung gemacht, aber Du stellst leider keine konkrete Frage.
In der zweiten Zeile des ersten Beitrags.
BlackJack

Beitragvon BlackJack » Dienstag 18. Dezember 2007, 09:49

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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Re: Unscharfe Bilder erkennen.

Beitragvon CM » Dienstag 18. Dezember 2007, 10:11

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
Carraia
User
Beiträge: 10
Registriert: Samstag 15. Dezember 2007, 17:35

Beitragvon Carraia » Dienstag 18. Dezember 2007, 14:55

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.
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 18. Dezember 2007, 15:18

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 18. Dezember 2007, 15:23

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Beitragvon BlackJack » Dienstag 18. Dezember 2007, 16:22

@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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Dienstag 18. Dezember 2007, 16:38

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 ...
BlackJack

Beitragvon BlackJack » Dienstag 18. Dezember 2007, 17:12

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. :-)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 18. Dezember 2007, 17:30

Ups, da habe ich wohl grad das falsche Feld geleert ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Dienstag 18. Dezember 2007, 20:22

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:
Carraia
User
Beiträge: 10
Registriert: Samstag 15. Dezember 2007, 17:35

Beitragvon Carraia » Donnerstag 20. Dezember 2007, 18:48

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.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Donnerstag 20. Dezember 2007, 18:50

0/10.
Hab schon viel bessere Trolle gesehen oO

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder