Seite 1 von 1
Projektvorschlag: Bilddubletten finden
Verfasst: 14.03.2007 01:14
von Kiffi
Hallo,
gerade eben las ich folgenden Thread, in dem es um eine
Programmvorstellung eines Tools geht, welches Bilddubletten findet:
http://www.essential-freebies.de/board/ ... 7534#77534
Anscheinend gibt es in diesem Sektor nicht besonders viele brauchbare
Programme, obwohl das Thema gerade in Zeiten digitaler Fotografie sehr
interessant ist.
Unwillkürlich dachte ich da sofort, dass man sowas auch mit relativ einfach
mit PB verwirklichen könnte (alle benötigten Befehle sind vorhanden. Die
Bilderfassungs- und Vergleichs-Algorithmen sind die eigentlichen Stellen, in
die man ein wenig Gehirnschmalz investieren sollte).
Also Leute,
das wäre doch mal ein Projekt (und nicht andauernd diese
langweiligen Chats, Mediaplayer oder Pong-Spiele

)
In diesem Sinne: Haut rein!
Grüße ... Kiffi
Verfasst: 14.03.2007 04:51
von Kaeru Gaman
hm... mit dubletten meinst du jetzt wirklich bit-by-bit identische?
weil... mit demselben motiv zweimal geknipst... das bräuchte ja fuzzylogic vom feinsten...
Verfasst: 14.03.2007 08:02
von ZeHa
Also in dem von Kiffi geposteten Link geht's tatsächlich um NICHT bit-identische Bilder, sondern Bilder, die sehr ähnlich sind. Das ist natürlich schon cool, aber auch aufwendiger. Es ist aber auch beschrieben wie das Tool vorgeht. Vielleicht gibt's aber auch bessere Lösungen, möglicherweise über neuronale Netze oder sowas.
Verfasst: 14.03.2007 10:04
von Kiffi
Kaeru Gaman hat geschrieben:hm... mit dubletten meinst du jetzt wirklich bit-by-bit identische?
nee, das wäre ja zu popelig
Kaeru Gaman hat geschrieben:weil... mit demselben motiv zweimal geknipst... das bräuchte ja fuzzylogic vom feinsten...
Hierzu ein Zitat aus der Seite, auf die ich oben verlinkt habe:
setiman hat geschrieben:Dazu bedient sich das Tool einer eigentlich recht einfachen Methode:
Zunächst wird ein Raster von acht mal acht Pixel auf die ausgewählten
Bilder gelegt. Für vier der so erzeugten Felder ermittelt die Software dann
die durchschnittlichen RGB-Werte. Zwei Bilder gelten als identisch, wenn
die Abweichungen der RGB-Parameter unterhalb eines vom Anwender
festzulegenden Schwellenwerts sind.
Hört sich erst einmal einfach an. Aber ich habe da nicht wirklich Ahnung
von. Deshalb kann ich nichts dazu sagen, ob das problemlos umzusetzen
ist.
Grüße ... Kiffi
Verfasst: 14.03.2007 11:19
von dllfreak2001
Nur für vier Felder?
Ist aber eine sehr kleine Testfläche....
Vielleicht so ?
Code: Alles auswählen
;***DLL-Freak´s Dublettenroutine***
;***14.03.2007***
#maxdiff = 10 ; maximale Differenz
; Kontrollauflösung
#resw = 32
#resh = 32
filea.s = OpenFileRequester("Bild #1 öffnen","","BMP|*.bmp|JPEG|*.jpg|PNG|*.png",1)
fileb.s = OpenFileRequester("Bild #2 öffnen","","BMP|*.bmp|JPEG|*.jpg|PNG|*.png",1)
If filea <> "" And fileb <> ""
UseJPEGImageDecoder()
UsePNGImageDecoder()
LoadImage(0,filea)
LoadImage(1,fileb)
;-"Mittelwerte" bilden
ResizeImage(0, #resw, #resh ,#PB_Image_Smooth)
ResizeImage(1, #resw, #resh ,#PB_Image_Smooth)
Dim argb.l(#resw-1,#resh-1)
Dim brgb.l(#resw-1,#resh-1)
;-Bildpunkte ins Array einlesen
StartDrawing(ImageOutput(0))
For x= 0 To #resw-1:For y = 0 To #resh-1
argb(x,y) = Point(x,y)
Next:Next
StopDrawing()
StartDrawing(ImageOutput(1))
For x= 0 To #resw-1:For y = 0 To #resh-1
brgb(x,y) = Point(x,y)
Next:Next
StopDrawing()
For x= 0 To #resw-1:For y = 0 To #resh-1
;-Differenz bilden und prüfen
nrd = Abs(Red(argb(x,y))-Red(brgb(x,y))) + Abs(Green(argb(x,y))-Green(brgb(x,y))) + Abs(Blue(argb(x,y))-Blue(brgb(x,y)))
If nrd > #maxdiff
MessageRequester("Keine Doublette!", fileb + " ist keine Dublette von " + filea)
End
EndIf
Next:Next
MessageRequester("Doublette!", fileb + " ist eine Dublette von " + filea)
Else
MessageRequester("Fehler","Eine Pfadangabe ist falsch!")
EndIf
Ist zwar nicht besonders fein, aber so muss es beim dllfreak sein...
Verfasst: 15.03.2007 20:31
von PureLust
Ich hatte mal vor einigen Jahren mal ein Freeware-Tool, welches sowohl gleiche wie auch ähnliche Bilder sehr gut finden konnte - weiss aber leider nicht mehr genau wie es hieß.
Wenn Ihr Euch aber auch mit einer Shareware anfreunden könntet, so schaut Euch mal
PhotoSort an:
Das Programm ist einfach, schnell und kompakt und sortiert doppelte und fast identische Bilder aus.
Egal ob Bildschirmhintergründe, Familienfotos oder andere Bilder, PhotoSort vergleicht die Bilder nach dem Inhalt.
Es ist auch gleichgültig, ob die Bilder unterschiedliche Formate oder Größe haben, Farbe, Kontrast oder Helligkeit etwas anders sind.
PhotoSort geht nur nach dem Dargestellten.
Gruß, PL.
Verfasst: 15.03.2007 20:34
von Kaeru Gaman
@PureLust
dieser Thread ist ein Projektvorschlag, keine suche nach einer software.
also, wenn du den algorithmus präsentieren kannst, mit dem PhotoSort arbeitet, dann passt das hier her.