[algemeen] Afbeeldingen indexeren naar kleur

Pagina: 1
Acties:

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Okay, momenteel ben ik bezig met een project voor een redelijk grote fotograaf. Hij wil een website hebben waarop mensen kunnen zoeken op kleur in een foto. Nu is het technisch wel realiseerbaar, alleen moeten de afbeeldingen geindexeerd gaan worden naar kleur. En het liefst zo weinig mogelijk (bijvoorbeeld 16 kleuren).

Een probleem alleen is dat toekomstige foto's niet al te omslachtig ook geindexeerd moeten worden. Het klinkt nu allemaal een beetje vaag, maar voor degene die bekend zijn met fotostock bureaus moeten maar eens kijken naar www.photos.com, daar kan je bijvoorbeeld zoeken op kleur in de foto.

Heb al gekeken naar Photoshop, die kan wel exporteren naar color table, maar omdat het uiteindelijk in een database moet, werkt dit niet.
Picasa van google kan ook zoeken op kleur, maar hieruit kan je wederom niet kenmerken exporteren.

Hoop dat het duidelijk is, beetje lastig te omschrijven probleem....

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 27-12 19:27
Kun je niet per foto een trefwoord opgeven een daar op laten zoeken/vinden? :)

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Die mogelijkheid is er op het moment al, dus dat foto's geindexeerd worden naar keyword. De keywords worden meegegeven in het CMS (dus zodra er foto's geupload worden dat er gelijk keywords worden meegegeven)

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 27-12 19:27
Wat wil je dan nog meer :)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:33
Zoeken op een mooi huidkleurtje: hoe meer hoe beter :P

OT: als je PHP gebruikt, kijk dan eens naar de GDLib-functies. Hiermee kan je een afbeelding pixel voor pixel bekijken, en aan de hand daarvan iets berekenen, bijvoorbeeld gemiddelde kleurwaarde over een afbeelding. Dit zal je dan moeten afronden op 1 van de 16 'basiskleuren' die je noemt, en die index opnemen.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

sjroorda schreef op dinsdag 22 maart 2005 @ 14:16:
[...]

Zoeken op een mooi huidkleurtje: hoe meer hoe beter :P

OT: als je PHP gebruikt, kijk dan eens naar de GDLib-functies. Hiermee kan je een afbeelding pixel voor pixel bekijken, en aan de hand daarvan iets berekenen, bijvoorbeeld gemiddelde kleurwaarde over een afbeelding. Dit zal je dan moeten afronden op 1 van de 16 'basiskleuren' die je noemt, en die index opnemen.
Mwa, of je laat de gebruiker een van de 16 kleuren kiezen bij het toevoegen van de foto ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
@ BtM909, dat is redelijk gevoelig voor fouten. Daarnaast gaf ik in de TS bijvoorbeeld 16 kleuren mee, maar hoe meer hoe beter, dus stel dat ik die limiet op 256 kleuren zet dan is het voor de beheerder niet meer te doen. En het gaat om een catalogus met 30.000 foto's, dus eigenlijk onbegonnen werk. Daarnaast als de catalogus wordt aangevuld met stel 100 foto's wil je dat niet handmatig doen, maar automatisch.

@ sjroorda:

Het is een combinatie van Flash en PHP (een rich internet application dus), het is dus wel PHP-driven maar zowel de front-end als back-end is in Flash.....

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:33
DoRRoN schreef op dinsdag 22 maart 2005 @ 14:26:
Daarnaast gaf ik in de TS bijvoorbeeld 16 kleuren mee, maar hoe meer hoe beter, dus stel dat ik die limiet op 256 kleuren zet dan is het voor de beheerder niet meer te doen.
Het lijkt me niet verstandig naar zoveel kleuren te laten indexeren: hoe meer waardes je hebt, hoe minder je per waarde vindt. Wil je bijvoorbeeld als je op een bepaalde kleur groen zoekt, alle bomen krijgen, of alleen esdoorns met belichting van zonsopkomst, om maar een geforceerd voorbeeld te noemen?
Als je toch veel waarden neemt, zal je ook in de buurt ervan moeten zoeken, dus dan limiteer je weer. Beetje dubbel werk!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 09-10 21:46

cyspoz

Relaxed, het zijn maar 1 en 0

Ik heb net op de website gekeken die je gaf. Inderdaad lachen.
De enige manier die er is, is volgens mij met een goede lib die dat voor je kan doen. Als je namelijk zelf zo iets gaat schrijven loop je denk ik al snel tegen performance problemen aan. Of je moet er erg handig in zijn.

Verwijderd

Het lijkt mij het beste zelfs om te combineren: een geautomatiseerd proces van kleur-indexering dat het resultaat ter controle aanbiedt aan de uploader. Vaak/soms is de belangrijkste kleur niet de kleur die het meeste voorkomt. Denk bijvoorbeeld aan een zeer donkere (zwarte) foto met hier en daar wat hightlights in geel (bijvoorbeeld verlichting). De automatische indexering zal waarschijnlijk zwart als belangrijkste kleur aangeven, terwijl voor de fotograaf het geel misschien belangrijker is.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 19-12 16:34

sopsop

[v] [;,,;] [v]

Verwijderd schreef op dinsdag 22 maart 2005 @ 15:17:
De automatische indexering zal waarschijnlijk zwart als belangrijkste kleur aangeven, terwijl voor de
fotograaf het geel misschien belangrijker is.
Als je het in percentages uitdrukt, kun je wel degelijk uitvinden dat geel ook een hele belangrijke kleur is. Stel een foto is 75% zwart en 25% geel, dat in combinatie met het feit dat er maar 2 kleuren significant aanwezig zijn... Daar is best een algoritme voor te verzinnen. Sterker nog, dit lijkt me ook wel gewoon in een SQL query toe te passen.

Verwijderd

boppert schreef op dinsdag 22 maart 2005 @ 17:40:
[...]

Als je het in percentages uitdrukt, kun je wel degelijk uitvinden dat geel ook een hele belangrijke kleur is. Stel een foto is 75% zwart en 25% geel, dat in combinatie met het feit dat er maar 2 kleuren significant aanwezig zijn... Daar is best een algoritme voor te verzinnen. Sterker nog, dit lijkt me ook wel gewoon in een SQL query toe te passen.
Een SQL query om images te analyseren?

Het ging mij er ook niet om of er algoritmes zijn te verzinnen voor dit probleem. Dat weet ik ook wel. Ik wilde even benadrukken dat simpelweg kleurtjes tellen niet zal gaan werken...

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Verwijderd schreef op dinsdag 22 maart 2005 @ 19:42:
[...]

Een SQL query om images te analyseren?

Het ging mij er ook niet om of er algoritmes zijn te verzinnen voor dit probleem. Dat weet ik ook wel. Ik wilde even benadrukken dat simpelweg kleurtjes tellen niet zal gaan werken...
Precies, en dat is nou net het hele probleem.....

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Gezien de server load die dit op zal leveren, zou ik sowieso voorstellen om een client applicatie te maken die foto's analyseert en dan uploadt. Je zou bijv. een foto naar 8 kleuren kunnen omzetten, bijv. met een GIF library. Dan hou je dus de 8 meestvoorkomende kleuren op die foto over, je telt hoevaak elke kleur voorkomt en dan gaat er 1 foto (het origineel dus) plus 8 kleuren met percentages naar de server.

En als je het handmatig wilt doen: Photoshop heeft een histogram-functie.

[ Voor 12% gewijzigd door Not Pingu op 22-03-2005 20:05 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
@ GunPoint. Over die serverload hoef ik me nog niet zozeer druk te maken. Desnoods worden er extra servers geplaatst om dit proces (wat maar 1 malig is) in goede banen te leiden.

De photoshop functie heb ik ook al onderzocht, alleen niet het gewenste resultaat.....

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
En als je het plaatje nou mbv imagmagick / gdlib omzet naar 16 kleuren, 16x16 pixels, dan per pixel ( is maar 256 dus te doen ) kijken wat de kleur van elke pixel is. Dan percentage uitrekenen en dit in dbase donderen.

Groter plaatje kan ook. Maar ik denk dat resized dat je dan lekker veel detail verliest zodat je heel simpel hoofdkleuren van een plaatje kunt bepalen. Btw eerst omzetten naar 16 kleuren en daarna pas resizen in dit voorbeeld, anders geeft het een verkeerd resultaat :)

  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

Die oplossing is niet zo netjes he.. :)

Een betere methode zou zijn om de afbeelding te quantizen naar bijv 32 kleuren en daarna het histogram uit te lezen.
Een voorbeeldje mbv ImageMagick heb ik op http://www.inforaction.nl/test/palet.cgi gezet.

Klik hier, hier, hier of hier voor voorbeelden.

Hoe je de zoekfunctie uitwerkt mag je zelf bedenken ;)

[ Voor 6% gewijzigd door bRight op 23-03-2005 08:07 . Reden: trage links.. ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 19-12 16:34

sopsop

[v] [;,,;] [v]

Verwijderd schreef op dinsdag 22 maart 2005 @ 19:42:
[...]

Een SQL query om images te analyseren?

Het ging mij er ook niet om of er algoritmes zijn te verzinnen voor dit probleem. Dat weet ik ook wel. Ik wilde even benadrukken dat simpelweg kleurtjes tellen niet zal gaan werken...
Ik neem aan dat je de images niet iedere keer gaat analiseren, maar dat je dat 1 keer doet, en dan in een database zet.

  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

Dan moet je wel een dataformaat hebben om de kleuren op een simpele manier te kunnen matchen in een query.
Met hue (kleurtoon), saturation (kleurverzadiging) en brightness (helderheid) moet dat wel lukken denk ik:

Afbeeldingslocatie: http://www.inforaction.nl/test/palet_ss.jpg

[ Voor 6% gewijzigd door bRight op 24-03-2005 00:20 ]


  • Hielko
  • Registratie: Januari 2000
  • Nu online
Ik denk dat je ook nog even moet inbouwen dat als je kleur #5BBB8C oid kiest dat je dan ook de plaatjes krijgt die 1 tint verschillten enzo. Kan. je bijv. doen met een simpele range, of een mooie functie maken die afhangt van het kleur verschil en de mate waarin die kleur voorkomt in de foto.

Maar dit alles is iig niet moeilijk, en iig prima te automatiseren met een efficient algoritme :)
Pagina: 1