Toon posts:

[Idee] Een plaatje vergelijken

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik kreeg vandaag ineens een idee. Ik denk niet dat ik het ga uitvoeren maar vroeg me af of het kan. Zou het mogelijk zijn om een programma te maken dat het volgende doet: je geeft het programma 2 plaatjes en het controleert of ze gelijk zijn.

Dus dan zou je iets moeten hebben dat hij bij elke pixel kijkt of hij dezelfde kleurwaarde heeft als de ander enzo.. Later zou je dan kunnen kijken of plaatjes (gedeeltelijk) voorkomen in een ander plaatje enzo..

Ik weet niet of het nuttig is, maar het kwam zo in me op en vroeg me af of dat technisch mogelijk was, en zoja in welke taal.

  • Wokker
  • Registratie: September 2001
  • Laatst online: 06:17

Wokker

De avond wokkel

Op dinsdag 18 december 2001 13:24 schreef YaZe het volgende:
Ik kreeg vandaag ineens een idee. Ik denk niet dat ik het ga uitvoeren maar vroeg me af of het kan. Zou het mogelijk zijn om een programma te maken dat het volgende doet: je geeft het programma 2 plaatjes en het controleert of ze gelijk zijn.
Ik ken wel iemand ie bij een bedrijfje werkt die software aan het ontwikkelen was die mensen kon herkennen. OOk al waren de foto's verschillende maar met de zelfde mensen erop. IK weet niet hoe het met het project is afgelopen. OMdat hij bij dat bedrijf is weggegaan . Maar het was geloof ik in opdracht van de publiek omroep (voor het video archief)
Ik wens je suc6 om het te gaan maken !!

Het oneindige X 0


Verwijderd

Topicstarter
Waarschijnlijk ga ik het dus niet maken, maar het lijkt me wel zeer relaxt als het zou kunnen (en dat voorbeeld van die vriend van je al helemaal!). Ik beheers Delphi (dat is na Java de enige taal waar ik wat vanaf weet) hier zeker niet goed genoeg voor.

Tenzij er ergens een componentje te vinden is dat precies dit doet, dan weet ik nog wel hoe ik die aanspreek :P

  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 17:04

NightBird

DPC-Crew Coding
Op dinsdag 18 december 2001 13:28 schreef Wokker het volgende:

[..]

Ik ken wel iemand ie bij een bedrijfje werkt die software aan het ontwikkelen was die mensen kon herkennen. OOk al waren de foto's verschillende maar met de zelfde mensen erop. IK weet niet hoe het met het project is afgelopen. OMdat hij bij dat bedrijf is weggegaan . Maar het was geloof ik in opdracht van de publiek omroep (voor het video archief)
Ik wens je suc6 om het te gaan maken !!
www.findmydouble.com .. kan je je dubbelganger zoeken (of die ook gevonden wordt is een tweede :))

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

hier is zeker weten software voor, gebruiken bepaalde politiediensten dat ook niet om dezelfde mensen op verschillende foto's/videos te vergelijken ofzo?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Een vriend van mij gebruikt dit soort shit in robots, om foto's van de omgeving te vergelijken. Dit soort dingen wordt zeker gebruikt voor robots enzow, verder lijkt het me weinig nuttig.

Rustacean


Verwijderd

Topicstarter
okay okay.. het wordt dus al wel gebruikt.. maar zou het moeilijk zijn om het zelf te maken?

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

In PHP ofzow... Nee. Met GD kun je elke pixel kleur ophalen enzow, en dan via een dubbele for door alle pixels heen lopen... Of het erg snel wordt? Nee. k Zou het niet gebruiken bij grote plaatjes.

Rustacean


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

*kuch*
Om nou op de vraag of het moeilijk is nee te beantwoorden :?
2 plaatjes vergelijken of ze volledig identiek zijn is idd niet zo heel moeilijk (er vanuit gaande dat je niet te maken hebt met 1 bmp en 1 jpeg plaatje, waarbij de jpeg dus wat kleuren weglaat ed.). Plaatjes van 2 verschillende formaten kijken of ze gelijk zijn is ook nog wel wat op te verzinnen. Maar kijken of bv de persoon op plaatje 1 ook op plaatje 2 staat? Dat zou ik toch niet makkelijk durven noemen hoor. Zeker niet als je er ook rekening mee moet houden dat ie op de 2e foto weleens niet helemaal precies op dezelfde manier erop staat als op plaatje 1...
Ik denk dat je rustig kan stellen dat het 'knap moeilijk' is om zoiets te schrijven...

Exact expert nodig?


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Het gaat toch om controleren of ze gelijk zijn? Dat is niet zo moeilijk.

Rustacean


Verwijderd

Topicstarter
Het ging niet speciaal over foto's maar toch.. Ik wist niet dat je met GD alle pixelkleuren kon opvragen. Dat wil ik nog wel eens proberen. Aan andere bestandsformaten had ik nog niet eens gedacht. Nou goed.. Ik ga eerst maar eens proberen twee plaatjes met hetzelfde formaat te vergelijken (met GD ed).. Dan zou je als output een plaatje kunnen geven waar je met een rode overlay aangeeft welke pixels verschillen ofzo..

edit:
[quote]
Het gaat toch om controleren of ze gelijk zijn? Dat is niet zo moeilijk.
[/quote]

Je was me voor. Dit was in 1e instantie inderdaad het punt. Later zou je het misschien kunnen uitbreiden.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:30

Janoz

Moderator Devschuur®

!litemod

Het id wat jij noemt is absoluut not the way to go..
Stel je draait je foto 1 graad, en scan 'm opnieuw.. Zelfde plaatje, maar je algoritme herkent het niet meer.

Wat hier beter werkt is om de 'hoek tussen 2 beelden' te berekenen. Stel je hebt twee 256x256 beelden, dan heb je eigenlijk een 2562 dimensionale vector van elk beeld. Als je nu de hoek tussen die vectoren uitreken, kun je daar uitspraken over doen:
00 helemaal gelijk beeld
900 helemaal ongelijk beeld
1800 inverse

Maar eigelijk zijn de kleuren niet echt de features om op te controleren. Dit is erg afhankelijk van het licht. Zelfde geldt voor grijswaarden. Gebruik je een ander kleur licht, of komt het licht van een andere kant, dan is het op het niveau van de pixels gelijk een heel ander beeld, terwijl er wel hetzelfde object op staat.

Waar je beter mee kunt werken zijn de vormen in je beeld. Deze kun je er bijvoorbeeld uithalen met edge detectoren (Dan ga je het beeld differentieren) of een skelet filter. Gezichts herkenning werkt vaak door de relatieve positie van gezichts kenmerken op te slaan en vervolgens uit het beeld te vissen (denk hierbij aan puntje neus, ogen, oren)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Wat de topicstarter vraagt is natuurlijk iets heel anders dan software die gebruikt wordt om gezichten e.d. met elkaar te vergelijken.

Het is namelijk niet zo moeilijk om te kijken of 2 afbeeldingen identiek zijn, of om te kijken of de ene afbeelding onderdeel is van de andere afbeelding. Zoiets is namelijk niet eens heel erg moeilijk te realiseren. Er moet wel met een aantal dingen rekening worden gehouden:

1) Verschillende bestandsformaten. Als je een jpg-versie van een bepaalde bmp-afbeelding zou hebben is het al een stuk moeilijker om de afbeeldingen te vergelijken, omdat er sprake is van kwaliteitsverlies, en verwijdering van visueel redundante informatie. Als je zoiets wil maken moet je er dus in elk geval voor zorgen dat de twee te vergelijken afbeeldingen gelijk zijn.

2) Verschillende afmetingen: ook hier geldt weer: vergelijk je een plaatje met een kopie die kleiner is, dan komt er schaling aan te pas en zal je moeten uitkijken dat tijdens het schalen geen verlies optreedt, of pixels enigszins verschuiven door afrondingsfouten.

Je zegt dat pixel voor pixel de kleurwaarden vergelijken een optie zou zijn, dit lijkt mij ook het beste geval. Heel erg snel is het niet, maar wel het eenvoudigst. Ik zou echter wel een fout-tolerantie inbouwen, met hierin een maximum aantal afwijkend pixels (desnoods een percentage) en/of maximale afwijking van de kleurwaarde.

Zo kan je nogal wat omprutsen. Ook kijken of een afbeelding een deel is van een andere afbeelding kan analoog. Je zal dan in de "grotere" afbeelding hetzelfde patroon moeten ontdekken als in de "kleinere", en kijken of dit matcht.

Het testen echter of twee afbeelingen op elkaar lijken is een stuk geavanceerder. Je moet bijvoorbeeld eerst goeie criteria definieren wat je onder "op elkaar lijken" verstaat. Ga je kijken naar vormen, kleuren, luminantie? En in welke mate tellen ze mee? Goed voorbeeld van de moeilijkheidsgraad is dat Altavista een aantal jaren terug bij de image-search een optie had "find images that are similar to this image", welke uiterst treurige resultaten opleverde. Als je dit dus wilt realiseren zou het allemaal een stuk ingewikkelder worden en zal je de meer geavanceerde beeldbewerkingstechnieken moeten gebruiken.

De taal waarin je zoiets doet moet in principe niet heel veel uitmaken, maar ik zou wel Java of C++ adviseren.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

Topicstarter
Op dinsdag 18 december 2001 14:08 schreef Janoz allemaal dingen waar ik niks van snap
Huh? Ik geloof dat ik niet zo into vectoren ben, want hier begrijp ik dus echt niks van :)

Het ging in eerste instanties eigenlijk vooral om computer graphics en geen foto's. Dus dingen als lichtval enzo zijn niet echt een probleem.

Dat met verschillende bestandsformaten weet ik nog niet hoe ik dat ga oplossen. Voor nu ga ik proberen met PHP en GD dus per pixel te controleren en het aantal pixels dat niet klopt geven.

Verschillende afmetingen zijn inderdaad ook een probleem, als je een plaatje gaat vergroten wordt het veel vager enzo. Dat komt dan wel in versie 2 >:)

  • ewasx
  • Registratie: Augustus 2000
  • Laatst online: 16-11-2025
Ik kreeg vandaag ineens een idee. Ik denk niet dat ik het ga uitvoeren maar vroeg me af of het kan. Zou het mogelijk zijn om een programma te maken dat het volgende doet: je geeft het programma 2 plaatjes en het controleert of ze gelijk zijn.

Dus dan zou je iets moeten hebben dat hij bij elke pixel kijkt of hij dezelfde kleurwaarde heeft als de ander enzo.. Later zou je dan kunnen kijken of plaatjes (gedeeltelijk) voorkomen in een ander plaatje enzo..

Ik weet niet of het nuttig is, maar het kwam zo in me op en vroeg me af of dat technisch mogelijk was, en zoja in welke taal.
Wat me verbaast is dat nog niemand hier heeft opgemerkt dat dit precies is wat er gebeurt in MPEG{2,4,7,21}. Het gebeurt dan niet met het hele plaatje, maar met blokjes van bijvoorbeeld 64x64 pixels groot. Er wordt dan vergeleken met het vorige frame, waar dit blokje precies heen verschoven is en wat er eventueel enigszins aan veranderd is. Dan worden de veranderingen en de verplaatsings vector onthouden, en dit is (een deel van) de compressie die er toegepast wordt in de mpeg standaarden.

Verwijderd

Als ze allebei exact hetzelfde zijn kan je dat heel simpel controleren door de 'source' van de plaatjes uit te lezen en die vergelijken. Maar dat kan dus alleen als echt 100% exact hetzelfde zijn.

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op dinsdag 18 december 2001 14:53 schreef Freez0r het volgende:
Als ze allebei exact hetzelfde zijn kan je dat heel simpel controleren door de 'source' van de plaatjes uit te lezen en die vergelijken. Maar dat kan dus alleen als echt 100% exact hetzelfde zijn.
Wat versta je onder de "source" van een plaatje dan?!
Bovendien, in afbeeldingsbestanden staat soms nog wat extra info. Twee identieke afbeeldingen kunnen nog wel verschillen qua bestand (al zal dit niet snel voorkomen).

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

Met de source bedoel ik de code die je ziet als je een plaatje opent in kladblok of iets dergelijks.

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Waar je goed rekening mee moet houden is dat je in dergelijke programma's moet kunnen aangeven in hoeverre plaatje A moet overeenkomen met plaatje B:

- Zijn deze files identiek?
- Is dit de zelfde persoon op beide plaatjes?
- Misschien is een plaatje idd geroteerd
- Kleur en zwart-wit: maakt dat uit? Moet je erop letten?
- Enz.

Als je programma kan herkennen dat op beide plaatjes het zelfde huis afgebeeld is, moet dat dan het stempel 'identiek' krijgen? En hoe ver ga je daarin? Als A een andere lichtinval heeft? Als het huisnummer overeenkomt en vergeleken wordt met een plattegrond?

Om maar eens wat te noemen...

Wel een grappig idee. Toevallig kwam ik deze week op een soortgelijk idee, toen ik een liedje van de radio meefloot - ik zou wel een programma willen hebben dat de juiste MP3 opzoekt bij datgene wat je fluit. Ook een kwestie van vergelijken dus...

Bloed, zweet & koffie


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc


Verwijderd

Topicstarter
Ik heb even wat zitten kloten met PHP en GD en het is verbazend gemakkelijk. Ik werk dan wel met het hele simpele principe van elke pixel controleren en als output geven hoeveel verschillen erin zitten. Geen geavanceerde dingen als lichtval ed dus :)

Op m'n eigen server werkt het prima. Upload ik hem naar de server van mijn provider:
Fatal error: Call to undefined function: imagecreatefrompng() in /home/sites/site14/users/peter/web/imgcompare/index.php on line 23
Ik kan de source wel even posten als er interesse is. Het is nog niet zo dat je zelf plaatjes kunt uploaden, hij pakt nu gewoon twee bestaande PNG bestanden.

Helaas kan GD alleen PNG images aan, dus geen variabel formaat :(

edit:
Leuke URL Scorpion

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Janoz beschreef een vectorvergelijking in een plaatje

* drm vindt dit wel interessant, en legt zijn oor te luister ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op dinsdag 18 december 2001 14:08 schreef Janoz het volgende:
Waar je beter mee kunt werken zijn de vormen in je beeld. Deze kun je er bijvoorbeeld uithalen met edge detectoren (Dan ga je het beeld differentieren) of een skelet filter.
Zou je hier niet eerder connected-set-filters gebruiken (nieuwe verzameling morphologische filters)? Deze verstoren namelijk geen details in een afbeelding, maar behouden, versterken of verwijderen deze, in tegenstelling tot Gaussiaanse filters ;)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Boss
  • Registratie: September 1999
  • Laatst online: 21:44

Boss

+1 Overgewaardeerd

Ik zou ook wel zo'n prog willen hebben. Heb nl een heleboel pr0n op het huisnetwerk staan, en volgens mij zitten er dubbele tussen!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • NEOTEK
  • Registratie: Januari 2001
  • Laatst online: 05-06 21:05

NEOTEK

Neotek

Deze feature zit standaard in ThumbsPlus hoor! :+

Kubuntu


  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 17:04

NightBird

DPC-Crew Coding
Hier is nog veel meer te vinden over het herkennen van gezichten en de theoretische achtergronden : http://www.cs.rug.nl/~peterkr/FACE/face.html

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl

Pagina: 1