Seite 1 von 2
Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 09:29
von Okzident
Ich möchte Anaglyphbilder auf meiner Festplatte finden. Gesucht ist also eine Funktion, die True bei einem A.bild und False bei keinem A.bild ausgibt.
Begonnen habe ich mit PIL.
Code: Alles auswählen
#!/usr/bin/env python
import Image, sys, ImageDraw, os, ImagePalette
for infile in os.listdir("C:\Dokumente und Einstellungen\Nutzer\Desktop"):
if '.jpg' in infile:
im = Image.open(infile)
print 'Name: %s, Farben: %s' % (infile, im.getcolors(16777216))
Ich wollte aus der Verteilung der Farben etwas erkennen, aber es scheint hier nichts charakteristisches für Anaglyphen zu geben.
Weitere Ideen?
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 09:39
von BlackJack
Vielleicht geht es ja einigen wie mir die nicht wissen worum's geht:
http://de.wikipedia.org/wiki/Anaglyph
@Okzident: Grundidee wäre vielleicht die beiden Farbfilter der Brille auf das Bild anzuwenden und zu schauen ob man dann zwei Bilder bekommt, die horizontal etwas verschoben sehr ähnlich sind.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 09:48
von Okzident
BlackJack hat geschrieben:Vielleicht geht es ja einigen wie mir die nicht wissen worum's geht:
http://de.wikipedia.org/wiki/Anaglyph
@Okzident: Grundidee wäre vielleicht die beiden Farbfilter der Brille auf das Bild anzuwenden und zu schauen ob man dann zwei Bilder bekommt, die horizontal etwas verschoben sehr ähnlich sind.
Wie sähe das im Code aus?
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 11:03
von Okzident
Wie gesagt, ich komme nicht weiter.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 11:09
von Hyperion
Okzident hat geschrieben:Wie gesagt, ich komme nicht weiter.
Was hast Du denn in Bezug auf BlackJacks Tipps so probiert? Wo hakt es denn? Du könntest uns ja mal Code zeigen!
Ich formuliere mal frei, was ich denke: Das Thema hört sich durchaus schwierig an. Man muss das halt erst einmal algorithmisch verstanden haben. Die Umsetzung in Python ist dann sicherlich auch noch mal eine Schwierigkeit, weil man sich erst einmal in PIL und dessen Funktionalität einarbeiten muss. Solltest Du also weder algorithmisch noch von Deinen Python Kenntnissen angemessen vorgebildet sein, so ist die Aufgabe vielleicht eher ungeeignet für Dich?
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 11:28
von Okzident
Code: Alles auswählen
#!/usr/bin/env python
import Image, sys, ImageDraw, os, ImageOps, ImageChops
for infile in os.listdir("C:\Dokumente und Einstellungen\Nutzer\Desktop"):
if '.jpg' in infile:
im = Image.open(infile)
im = im.resize ((300, 300))
blau = Image.new('RGB', (im.size[0],im.size[1]), (126,240,240))
rot = Image.new('RGB', (im.size[0],im.size[1]), (246,96,97))
teil1 = ImageChops.lighter(im, rot).convert("L")
teil2 = ImageChops.lighter(im, blau).convert("L")
#teil1 = ImageOps.autocontrast(teil1)
#teil2 = ImageOps.autocontrast(teil2)
diff = ImageChops.difference(teil2, teil1)
diff.show()
#print diff.getbbox()
print 'Name: %s, Vergleich: %s, Echte Groesse: %s x %s' % (infile, diff.getbbox(),im.size[0],im.size[1])
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:07
von Hyperion
So, ich habe den Code mal aufgearbeitet, damit er auch bei anderen funktioniert:
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
import sys
import os
import Image
import ImageDraw
import ImageOps
import ImageChops
def filter_anaglyph(filename):
size = (300, 300)
im = Image.open(filename)
im = im.resize(size)
blue = Image.new('RGB', size, (126,240,240))
red = Image.new('RGB', size, (246,96,97))
part_red = ImageChops.lighter(im, red).convert("L")
part_blue = ImageChops.lighter(im, blue).convert("L")
#teil1 = ImageOps.autocontrast(teil1)
#teil2 = ImageOps.autocontrast(teil2)
diff = ImageChops.difference(part_blue, part_red)
diff.show()
#print diff.getbbox()
print 'Name: %s, Vergleich: %s, Echte Groesse: %s x %s' % \
(filename, diff.getbbox(),im.size[0],im.size[1])
def main():
filter_anaglyph(sys.argv[1])
if __name__ == "__main__":
main()
Nun frage ich mich: Wo hakt es denn nun bei Dir? Welchen Schritt im Algorithmus vermisst Du? Was bekommst Du nicht hin? Denn durchlaufen tut der Code ja; also muss es ja nun noch beim Algo hapern.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:10
von Okzident
Hyperion, das Problem ist damit nicht gelöst. Was ich will ist doch ganz einfach. Ich will eine Funktion, die True oder False ergibt. True heißt, es ist ein Anaglyphbild, False heißt, es ist kein Anaglyphbild.
Die Frage, woran es hapert ist deplaziert, weil der Code dieses Ziel nicht erreicht.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:24
von Hyperion
Du stellst Dich irgend wie ungeschickt an - auch wenn Du neu im Forum bist!
Du musst uns doch mal präzise beschreiben, was Dein Script bisher tut und was noch nicht funktioniert. An welcher Stelle, des von BlackJacks vorgeschlagenen Algos hapert es? Welche Teile sind umgesetzt und bei welchen hast Du Probleme, das ganze in Python zu formulieren?
Du klatscht hier einfach Code rein - der nicht mal per se funktionstüchtig ist, da ein fest codierter Pfad enthalten war - ohne Kommentar, der prinzipiell eben durchläuft. Woher soll jemand hier wissen, was denn nun daran das Problem ist? Zudem hättest Du ja auch mal ein Bild als Referenz für Deine Tests angeben können. Ich habe mit dem
oberen Bild aus dem Wiki-Artikel gearbeitet.
Um es mal deutlich zu sagen: Du willst Hilfe - da musst Du Dich auch anstrengen

Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:42
von Okzident
Ich stelle mich sogar sehr geschickt an indem ich dir die Nutzlosigkeit deiner Antwort aufzeige.
Ich muß Dir nichts beschreiben, wenn du nicht weißt, was ein Anaglyph ist dann machst du dich mit dem Link von BlackJack schlau und belästigst mich hier nicht. Was mein Script bisher tut hast du bereits erfahren, indem du schriebst, es läuft durch. Ich werde dir nichts beschreiben, was du vor Augen hast.
Du klatscht hier einfach sinnlos formatierten Code rein - der nicht mal eine funktionelle Änderung enthält. Das Problem wird so nur komplizierter. Zudem kann jeder ein Bild aus dem Wiki-Artikel nutzen.
Um es mal deutlich zu sagen: Du willst Antworten - da mußt Du Dich auch anstrengen - und das nicht nur im Ton sondern insbesondere im Nutzen deiner Antwort.
Ich bin nicht der einzige auf dieser Welt, der Anaglyphen aussortieren will.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:45
von EyDu
Ich geh' dann kurz mal Popcorn machen.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:47
von Okzident
EyDu hat geschrieben:Ich geh' dann kurz mal Popcorn machen.
Bring mir auch eins mit.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:49
von Hyperion
EyDu hat geschrieben:Ich geh' dann kurz mal Popcorn machen.
Wegen mir nicht

Ich bekomme heute Abend im Kino welches

Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 12:50
von BlackJack
@Okzident: Wenn Du nicht beschreibst worum es geht, dann werden viele sich nicht die Mühe machen es selbst heraus zu finden. Die Leute hier werden schliesslich nicht dafür bezahlt, dass sie sich mit Programmierproblemen von anderen Leuten befassen. Also sollte man ihnen das Nachvollziehen von Problemen durch Beschreibungen und lauffähigen Code möglichst einfach machen. Jedenfalls wenn man Antworten haben möchte.
Das Problem wird durch die Programmänderungen von Hyperion nicht komplizierter. Es ist doch immer noch genau das selbe Problem!?
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:05
von Leonidas
Okzident hat geschrieben:Ich stelle mich sogar sehr geschickt an indem ich dir die Nutzlosigkeit deiner Antwort aufzeige.
Ich muß Dir nichts beschreiben, wenn du nicht weißt, was ein Anaglyph ist dann machst du dich mit dem Link von BlackJack schlau und belästigst mich hier nicht. Was mein Script bisher tut hast du bereits erfahren, indem du schriebst, es läuft durch. Ich werde dir nichts beschreiben, was du vor Augen hast.
Du klatscht hier einfach sinnlos formatierten Code rein - der nicht mal eine funktionelle Änderung enthält. Das Problem wird so nur komplizierter. Zudem kann jeder ein Bild aus dem Wiki-Artikel nutzen.
Wow, durch diese Antwort ist mein Anreiz zu helfen auf Null gesunken. Wenn man potentielle Helfer blöd anmacht, darf man nicht auf Hilfe hoffen.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:10
von Okzident
BlackJack hat geschrieben:@Okzident: Wenn Du nicht beschreibst worum es geht
Ich habe beschrieben, worum es geht. Deine Vorschläge sind implementiert. Ich kann schlicht vorlaute Kinder wie Hyperion nicht tolerieren.
Das Problem wird durch die Programmänderungen von Hyperion nicht komplizierter.
Das Problem wird durch die Programmverzierungen von Hyperion komplizierter.
Wow, durch diese Antwort ist mein Anreiz zu helfen
Bei
dir stört mich das nicht.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:15
von Hyperion
Okzident hat geschrieben:
Das Problem wird durch die Programmänderungen von Hyperion nicht komplizierter.
Das Problem wird durch die Programmverzierungen von Hyperion komplizierter.
Na das musst Du uns aber mal erklären! Im Gegensatz zu Deiner Version habe ich lediglich diesen Pfad entschärft "C:\Dokumente und Einstellungen\Nutzer\Desktop", damit es
jeder Benutzer hier im Forum einfach bei sich testen kann. Ok, ich habe einige Namen auf Englisch umgestellt, das ganze von Modulebene in eine Funktion verlagert und die `imports` PEP8 konform organisiert. Was macht das komplizierter? *wunder*
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:37
von Okzident
Hyperion hat geschrieben:Na das musst Du mir aber mal erklären!
Ich muß dir gar nichts erklären.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:44
von BlackJack
@Okzident: Wenn die Vorschläge implementiert sind, wo ist dann das Problem? Dann funktioniert ja jetzt alles.
Das Problem ändert sich durch Programmänderungen nicht. Es kann sein dass man neue Erkenntnisse gewinnt und man dadurch zu dem Schluss kommt, dass das Problem komplizierter oder einfacher lösbar ist als ursprünglich angenommen, aber das Problem selbst ist immer noch genau das selbe.
Wenn Du nur die Implementierung ohne weitere Erklärung zeigst, dann sieht man nur *was* Du gemacht hast, aber man weiss nicht *warum* Du das so gemacht hast. Ich sehe die Vorschläge durch den Quelltext zum Beispiel nicht implementiert. Es wird weder eine Verschiebung berücksichtigt, noch sehe ich wie ich das Ergebnis als Ähnlichkeit deuten sollte.
Du musst hier keinem was erklären — stimmt. Es muss sich aber auch niemand mit Deinen Problemen befassen.
Re: Anaglyphbilder auf der Festplatte finden
Verfasst: Dienstag 31. Mai 2011, 13:48
von Okzident
BlackJack hat geschrieben:@Okzident: Wenn die Vorschläge implementiert sind, wo ist dann das Problem?
Nach diff = ImageChops.difference(teil2, teil1) habe ich in diff ein Bild, das den Unterschied zwischen rot und blau als Graustufenbild darstellt. Ich sehe aber kein deutliches Merkmal, das hilft zu unterscheiden ob es nun ein Anaglyphenbild ist oder nicht.
diff = ImageChops.difference(im, teil1) bringt auch kein deutlicheres Ergebnis.
Wie willst du den Unterschied zwischen zwei Bildern(teil1 & teil2) berechnen und ein Ergebnis haben? Letztlich ist - um die Verschiebung zu erkennen - ein Justierungsalgorithmus wie etwa bei autopano nötig, was meinst du?