Sitemap
Kontakt
Links
+++ erd.trabant +++

+++ erd.trabant +++

blablabla

blablabla

bilder vergleichen anhand... farbe, ... formen, ...

memo:


30.10.009
wie vergleicht man bilder anhand ihrer farbaufteilungen etc...?

ziel ist es eine bild db zu coden die mir bilder ausliest, exif daten und iptc in eine db schmeisst, vorschauen erstellt, gesichter markiert und diese ausschnitte zeigt etc.
das alles geht einfach mit php+gd+postgresql und opencv und ein paar commandlinetools zum konvertieren etc.

wie aber bekommt man bilder anhand ihres motives geordnet? oder anhand der farben?

hierzu hab ich im web nihct viel gefunden. entweder war es c oder reine theorethische ansaetze.

hier mein ansatz:

bilder anhand farbaufteilung, farbkomposition etc indizieren und vergleichen:

bilder auswerten:
alle bilder sollten die gleiche groesse haben, hierzu strecke und stauche ich hoch oder querformatige bilder auf ein quadrat von XxY pixeln.
zbsp 160x160 pixel
dieses unproportionale vorschauicon ergibt das ausgangsbild welches indiziert wird.
um spaeter evtl. die anordnungen aufzuteilen kann man den ration x/y des originalbildes speichern.

das vorschaubild wird nun N-1 mal geteilt, und es entstehen NxN Felder=N². N nenne ich mal die SampleRate, ein Feld ist ein Quadrant.
Die Quadranten werden ueberlappend angeordnet.
Jeder Quadrant ist X/N pixel Breit und Hoch. Der Quadrant wird um X/N + (100/N)% Pixel erweitert.
jedes der N² (+ Ueberlappung) kaestchen wird nun anhand der pixel ausgewertet.
dazu wird jedes p-te pixel durchwandert, p nenne ich die Frequenz oder das Intervall.
Aus jedem Pixel werden nun die RGB Werte ermittelt und gespeichert.
Aus den entstandenen werten wird nun fuer R, G und B ein mittelwert fuer den Quadranten ermittelt.
Es entstehen somit N² *3 werte fuern ein Bild.
Diese werte werden nun als Wertepaare in der DB abgelegt.

such man nun ein Bild, kann man anhand der mittelwerte fuer rgb eine farbe definieren und diese in der DB suchen...

in der db werden nun fuer die rgba werte, ja alpha auch! jeweils arraus bzw wertemengen gespeichert.
zusatezlich werden jeweils N²-(N-1)² Quadranten zusammengefasst (bis N=0), und die entsorechenden mittelwerte gespeichert.
pro bild entstehen also eine menge daten.
zusaetzlich wird ein rgba gesamt mittelwert aus allen pixeln erstellt....

in der vorschau wird nun  ein kleines icon angezeigt das diese farbwerte repraesentiert.

dbstruktur:

die suche:

wie sucht man nun , und vergleicht die bilder, bzw findet aehnliche?

hier verzichte ich komplett auf rotation, da ich nur unbearbeitete bilder verarbeite, arbeitskopien zaehlen nicht....

zum suchen waehlt man nun einen rgb farbwert aus und dieser wird anhand der mittelwerte verglichen.
die suche kann man verfeinern indem man zbsp N-1 unterteilungen macht und  fuer jedes der N² felder einen farbwert waehlt.

nun stellt man, pro feld oder gesamt, eien aehnlichkeitsfaktor ein, similarity ... s in %
die farbwerte der bilder aus der db werden nun mit den gegebenen werten verglichen. werden diese werte gefunden oder abweichungen innerhalb s%, so ist es ein treffer.

ist ein bild gegeben und man will aehnliche haben, werden diese werte aus dem gegebenen bild ermittelt bzw direkt aus der db gelesen.

knackpunkte: bilder unterschiedlicher samplerate

/index_images.jpg


01.11.009

ich glaub heute das der ansatz der mittelwerte von r g und b bloedsinn sind.
ich hab mir heute nacht mal einaltes matheubch reingezogen und bin auf die vektiren gestossen.
damals ein absolutes lieblingsthema von mir und ich hab das mit links gekonnt, nu aber alles vergessen, is ja auch 20 jahre her.
also leite ich mir es mal erneut her....

ein neuer ansatz waere die rgb werte als vektor zu betrachten. bzw eien punkt im raum, gegeben durch r,g,b analog zu x,y,z, und einem alphawert, ...is das die laenge? reziprok? laenge =1/alpha? somit ist 1 ohne alpha. und jeder vektor maximal 1 lang, hmmmmmm, bzw 255?

aus den punkten ermittelt man dann den vektor, und dessen laenge ist die un-aehnlichkeit der zwei punkte, je kuerzer desto aehnlicher, naeher beieinander liegen die rgb werte, hmmm

wie errechnet man nun im quadranten die quersumme? vektoren bilden? und den mittelpunkt des polys suchen? ne.
irgendwie muss der mittelwer her.


sooo oder soo aehnlich.


ende der memo



links:
SOM Toolbox: Intro to SOM by Teuvo Kohonen
generation5 - Self Organizing Map AI for Pictures
How to create the histogram of an image using PHP - Programming/PHP
phpOCR (ocr, phpOCR, des) - PHP Classes
Face detection in pure PHP (without OpenCV) - Maurice Bloggue
Face Detection Using PHP « Federico Cargnelutti
» Automatic Face Detection in Photos with PHP » Corpocrat Blog
PHP Facedetect Extension - xarg open source
Face detection with PHP - xarg open source
Derin Deli Mavi: Yüz Tanıma 2
PHP :: Identify Url Written In Text Area And Display It Hyperlinked.
How to create the histogram of an image using PHP - Programming/PHP
Suche Bilder-Vergleichs-Algorithmus - gulli:board
Evaluierung von Bildsegmentierungsalgorithmen
binary universe : Steganografie - Seite 13
binary universe : Steganografie - Seite 15
first stab at an algorithm to get 3D objects from two images « klog
Sketch2Photo
Zentrum für Mensch-Maschine-Kommunikation » Imagesorter
Dusan Writer’s Metaverse » Papervision

http://www.poynton.com/PDFs/ColorFAQ.pdf

PHP: GD and Image Functions - Manual
How to check if an image is grayscale in PHP - Programming/PHP
How to convert an image to grayscale using PHP - Programming/PHP
Color Conversion Algorithms

>>PopUP / Drucken / Print<<
blablabla