Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Brauche Hlfe bei einem Projekt!

veritas-zeen / 21 Antworten / Baumansicht Nickles

Hallo!

Ich habe vor ein Programm zu schreiben das 2 Bilder vergleicht und mir im anschluss die diferenz in prozente angibt.

Nun möchte ich gern wissen in welcher sprache sich dieses vorhaben am einfachsten realesieren lässt. Leider kann ich nur VB, VBS und QB...

Ich wäre über ein paar feedbacks sehr erfreut!

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
Borlander veritas-zeen „Brauche Hlfe bei einem Projekt!“
Optionen

Also mit VB wäre das ganze wohl realisierbar. VBS bringt AFAIR keine Funktionalität zur Bildverarbeitung mit, QBasic hat keine Funktion zum von Bilddateien.

Als größtes Problem sehe ich eher die Definition einer Ähnlichkeitsfunktion. Wann sind zwei Bilder ähnlich? Wenn sie ein ähnliches Motiv zeigen (intuitiv sehr gut, von der Realisierung aber sehr schwierig), oder wenn die einzelnen Pixel ähnliche Farbwerte haben (u.U. sehr einfache implementierung, aber armselige Ergebnisse: z.B. bei einem invertierten Schachbrettmuster)...


Gruß
Borlander

bei Antwort benachrichtigen
veritas-zeen Borlander „Also mit VB wäre das ganze wohl realisierbar. VBS bringt AFAIR keine...“
Optionen

Einfacher gehts doch bestimmt wenn mann die bilder im ascii format vergleicht.Ich weiß jetzt zwar nicht wie ich das erklären soll aber ich versuchs.

Ich habe zwei Bilder
in bild 1 schau ich nach rechts und in bild 2 schau ich nach links
sonst sind beide identisch. Angenommen ich öffne beide bilder mit einem text editor könnte ich anhand des wirrwarrs entscheiden wieviel prozent diferenz beide haben?

So einfach solls sein, ich habe nicht vor eine rendering funktion oder so einzubinden.

gruß
Zeén

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
Borlander veritas-zeen „Einfacher gehts doch bestimmt wenn mann die bilder im ascii format...“
Optionen

Was meinst Du mit dem Vergleich im ASCII-Format? Willst Du ASCII-Art vergleichen, oder Bilder in einem Format das auf ASCII basiert (siehe z.B. http://de.wikipedia.org/wiki/Portable_Bitmap ).

Angenommen ich öffne beide bilder mit einem text editor könnte ich anhand des wirrwarrs entscheiden wieviel prozent diferenz beide haben?
Das hängt von der Definition Deines Abstandsbegriffes (der "Differenz") ab. In den meisten fällen wird die überwiegende Anzahl der Pixel unterschiedliche Werte haben, also die Differenz (bei Betrachtung Pixel für Pixel, identische Abmessungen vorrausgesetzt) liegt nahe 100%.

So einfach solls sein
Ist es aber nicht! Damit wirst Du Dich abfinden müssen. Für den oben angegebenen Anwendungsfall bräuchtest Du schon was in der Richtung Gesichtserkennung (die Software müsste erstmal wissen wo denn überhaupt die Person auf dem Bild ist) und damit wäre es noch lange nicht getan...


Gruß
Broaldner

bei Antwort benachrichtigen
PaoloP veritas-zeen „Brauche Hlfe bei einem Projekt!“
Optionen

Sind die Bilder in einem speziellen Format oder Bitmap?
Prinzipiell taugt nur in deinere Auwahl nur VB dafür weil Win-Api Anbindung da du einige GDI Funktionen brauchen wirst. Genauso gut vielleicht einfacher geht es mit VB und Direct-X. DX7 würde hier völlig reichen. Wenn Du die Bilder in eine DX Surface packst kannst du sie relativ einfach pixelweise auslesen und um mehr gehts ja eigentlich nicht.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Borlander PaoloP „Sind die Bilder in einem speziellen Format oder Bitmap? Prinzipiell taugt nur in...“
Optionen

Also ich denke DX ist für diesen Anwendungsfall ziemlich sicher nicht nötig. VB wird doch wohl von Haus aus Funktionen zur Arbeit mit Bitmaps mitliefern? Über die Low-Level-Funktionen der Win-API scheint mir auch unnötig aufwändig...

bei Antwort benachrichtigen
PaoloP Borlander „Also ich denke DX ist für diesen Anwendungsfall ziemlich sicher nicht nötig....“
Optionen

Nein keine für den Ableich von Bitmaps, mit Sicherheit sogar nicht.
Welche Sprache hat das bitte ?

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Borlander PaoloP „Nein keine für den Ableich von Bitmaps, mit Sicherheit sogar nicht. Welche...“
Optionen

Ich schrieb Arbeit mit Bitmaps, nicht abgleich ;-)
Und eine Funktion um die Farbwerte einzelner Pixel zu ermitteln wird VB wohl ziemlich sicher haben - das ist schließlich eine absolut elementare Funktion wenn man irgendwie mit Bitmaps arbeiten will. Für eine höhere Geschwindigkeit bieten viele Sprachen/Bibliotheken von auch noch Funktionen mit denen man über ein Array auf die Byte-Werte einer ganzen Bildzeile zugreifen kann...

bei Antwort benachrichtigen
PaoloP Borlander „Ich schrieb Arbeit mit Bitmaps, nicht abgleich - Und eine Funktion um die...“
Optionen

Na vielleicht bin ich zu penibel aber das hat VB nicht.
Das über VB ansprechbare Windows Api nun eben schon.
DX hört sich erstmal erschreckend an aber es wären sehr
wenig Codezeilen, das weiss ich aus Erfahrung.
Man entgeht auch dem Problem das Bitmap nicht gleich Bitmap
ist sehr gut.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Borlander PaoloP „Na vielleicht bin ich zu penibel aber das hat VB nicht. Das über VB...“
Optionen

Mit VB konntest Du schon zu Windows 3.1 Zeiten über ein Canvas-Objekt zeichen, Bilder dort hereinladen und auch als Datei exportieren. Ohne direkte Nutzung der Win-API und der damit verbundenen manuellem Ressourcenverwaltung...

Gruß
Borlander

bei Antwort benachrichtigen
PaoloP Borlander „Mit VB konntest Du schon zu Windows 3.1 Zeiten über ein Canvas-Objekt zeichen,...“
Optionen

Ich hab gerade meine VB Doku gewälzt und nichts gefunden.
Ich hake da mal in der VB Newsgroup nach.
Ich wäre doch sehr überrascht ...

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
PaoloP Borlander „Mit VB konntest Du schon zu Windows 3.1 Zeiten über ein Canvas-Objekt zeichen,...“
Optionen

Tja, Pustekuchen.
Gibt aber ein Active-X Control dafür.


Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
benjaminXVI veritas-zeen „Brauche Hlfe bei einem Projekt!“
Optionen

Hi, so wie sich Deine Frage anhört, lass dass mal nicht den schäuble höhren, AsciII, zum BILDVERGLEICH??????

Da müsstest Du erst mal ein paar definierte Sachen wegschnibbeln, den Rest vergleichen bzw. math. Grundfunktionen (primitiv), dann kommen Daten 'raus die ein spezielles Codeprog lesen könnte, hängt da evtl. die prozentzahl, die Du vergessen hast?

"Ein Bild rechts eins links.." dafür gibts schon Programme.

sorry bin nu' mal bei bestimmten Fragen Paranoiker.

bei Antwort benachrichtigen
veritas-zeen benjaminXVI „Hi, so wie sich Deine Frage anhört, lass dass mal nicht den schäuble höhren,...“
Optionen

Oha...Ich glaube ich habe mir etwas vorgenommen das meine grenzen schon bei der plannung übersreittet ^^ !

Wenn ich mein beispiel noch einmal deutlicher erläutern darf:

ich habe zwei bilder von mir auf dem einen schau ich nach links...und auf dem zweitem bild nach rechts.

nun öffne ich beide bilder mit dem text editor....

( #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü )

so sieht das zum beispiel aus...wenn ich das zweite bild öffne (wo ich nach rechts schaue) müsste doch etwas an diesem wirrwarr anders aussehen...
und das möchte ich gerne vergleichen.

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
Borlander veritas-zeen „Oha...Ich glaube ich habe mir etwas vorgenommen das meine grenzen schon bei der...“
Optionen

Ich verstehe nicht so ganz, warum Du da dauern mit einem Text-Editor ran willst. Es ist eher unsinnig Binärdaten wie Bilder als Textdatei zu betrachten oder zu vergleichen. Selbst ein Binärvergleich von Bildateien ist wenig Sinnvoll, da der selbst 100% identische Bilder durchaus unterschiedliche binäre Repräsentationen haben kann.

Der erste Schritt wird i.d.R. also immer daran zu bestehen die Bilddaten einzulegen (also i.d.R. einfach die Bilddatei mit einer geeigneten Funktion zu laden).


Gruß
Borlander

bei Antwort benachrichtigen
veritas-zeen Borlander „Ich verstehe nicht so ganz, warum Du da dauern mit einem Text-Editor ran willst....“
Optionen

Ja du hast recht. Und zum zweiten wusste ich das nicht mit dem editor!
puh...ja nu aber meine erfahrung in vb sind so gering das ich dieses projekt nicht realesieren kann. kennt jemand vieleicht ein programm das sowas macht?

wenn ja wär das super!

liebe grüße
Zeén

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
ChrE veritas-zeen „Brauche Hlfe bei einem Projekt!“
Optionen

Hallo!

Also, mit Python geht das so:

#------------------START------------------------
# -*- coding: utf-8 -*-

from PIL import Image # Python Image Library laden
from PIL import ImageChops

img1 = Image.open(r'f:\temp\py1.jpg')
img2= Image.open(r'f:\temp\py2.jpg')
imgdiff=ImageChops.difference(img1,img2) # Diffenzbild berechnen
print imgdiff[0,0] # erstes Differenz-Pixel ausgeben (R,G,B)
#------------------END---------------------------

Doku siehe hier: http://www.pythonware.com/library/pil/handbook/imagechops.htm

Wie Du nun die prozentualen Unterschiede definierst, bleibt Dir überlassen.
Es wird für jedes Pixel die Diffenz für RG u. B berechnet


Gruss

ChrE


bei Antwort benachrichtigen
veritas-zeen ChrE „Python ist Dein Freund...“
Optionen

super ChrE!!!
besten dank!!!

genau so wie ich es haben wollte!!!

gruss
zeén

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
ChrE veritas-zeen „super ChrE!!! besten dank!!! genau so wie ich es haben wollte!!! gruss zeén“
Optionen

Hallo!

Als Entwicklungsumgebung nutzt man am besten das hier (Windows):

http://www.activestate.com/activepython/


Gruss

ChrE

bei Antwort benachrichtigen
veritas-zeen ChrE „Hallo! Als Entwicklungsumgebung nutzt man am besten das hier Windows :...“
Optionen

BESTEN DANK!!!

der hinweiß ist super aber den hab ich schon...kannst du mir vieleicht sagen wo ich die differenzausgabe hin schreibe?

kann ich den weiter ausbauen das das prog mir sagt ?

z.B.: bild1.jpg und bild2.jpg haben 18 % differenz

aber ansonsten ist das ein super code!!!

nochmals besten dank

gruß

zeén

Das Leben ist zu KURZ um LANGE über den Sinn zu reden
bei Antwort benachrichtigen
Borlander veritas-zeen „BESTEN DANK!!! der hinweiß ist super aber den hab ich schon...kannst du mir...“
Optionen

Wie nun bereits mehrfach gesagt: Die definition einer Prozentualen Ähnlichkeiten oder Differenz ist das wirkliche Problem. Und dafür kann Dir hier keiner eine Patentlösung liefern...

bei Antwort benachrichtigen
ChrE veritas-zeen „BESTEN DANK!!! der hinweiß ist super aber den hab ich schon...kannst du mir...“
Optionen

Hallo!

Noch ein Versuch:


Syntax stimmt, ich hoffe, es ist keine Logikfehler drinne.

Gruss

ChrE
bei Antwort benachrichtigen