[C++] Objecten in foto herkennen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Ik ben voor een applicatie op zoek naar een stuk code of componenten die het mogelijk maak om een object in een foto te herkennen en dan dit uit het plaatje knipt.

Ik wil dus foto's maken van rijdende auto's, maar de auto moet altijd in het midden van foto komen.
De foto van de auto's zijn op een resolutie van 12,3 MP, de uiteindelijke foto die ik eruit wil hebben hoeft maar 1,3 MP te zijn.

Het probleem is echter dat niet iedere auto even snel rijd.
Hierdoor staat de auto op de eerste foto links op de foto en bij een andere foto weer rechts.
Nu wil ik dus bepaalde punten van de auto op de foto herkennen en dan vanaf dit punt de auto uit de foto knippen.

Dit alles wil ik graag maken in een eigen programma in c met behulp van Visual Studio.NET 2008.

Heeft of weet hier iemand een oplossing voor?
Ik kon zelf niets bruikbaars vinden met google.

Acties:
  • 0 Henk 'm!

  • MaximusTG
  • Registratie: April 2003
  • Niet online
(overleden)
Kun je anders een voorbeeldfoto posten? Voor mijn studie heb ik verschillende vakken gehad over imaging en visualisatie-technieken (Oke, daar ging het vooral over MRI- en CT-beelden), maar het principe is hetzelfde). Wij gebruiken daarvoor het pakket MATLAB, een zeer universeel pakket met support voor scripting en functies, (high-level programmeertaal). MATLAB bevat een Imaging Processing Toolbox. Om te doen wat jij wil moet je op de een of andere manier een verschil vinden tussen de auto en de achtergrond, bv qua kleur of complexiteit. Als je toegang hebt tot MATLAB kan ik je aanraden daar je algoritme in te ontwikkelen, en dan overzetten naar C++ voor snelheid.
Eventueel kan je ook edge-detection toepassen.
Probleem met wat jij wil is dat al je foto's waarschijnlijk weer anders zijn, en het lastig is je programma robuust te laten werken.

Zin in pizza? Probeer 'mijn' pizzarecept eens! Laatste versie pizzarecept Blog:KookKompas


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Automatische patroonherkenning is niet bepaald eenvoudig en de vereisten zijn nogal situatieafhankelijk. Je zou kunnen proberen er een filter overheen te halen die de grenzen van objecten accentueert. Er zijn wel libraries beschikbaar die dat soort filters over gangbare afbeeldingstypen kunnen halen. Het algoritme dat aan de hand van die grenzen bepaald welk object de auto is, zal je zelf moeten schrijven: bij wegrijdende auto's zal het beeld van de auto bijvoorbeeld meer varieren dan bij een langsrijdende auto en zo zijn er nogal wat parameters die je zelf goed zal moeten bepalen.

Geavanceerdere technieken vereisen eigenlijk altijd wiskundige kennis van de onderliggende principes en zal aardig wat tijd kosten om je er in te verdiepen.

[ Voor 5% gewijzigd door Confusion op 05-03-2009 08:51 ]

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 12:19

Exirion

Gadgetfetisjist

Dit soort algoritmen zijn tamelijk complex en je kunt niet verwachten dat je ergens een kant-en-klaar stukje code kunt vinden dat je exact voor deze toepassing kunt gebruiken. Visuele analyse is een vakgebied opzich.

Het eerste wat in me opkomt is OpenCV, een open source project dat grotendeels door Intel gedreven wordt. Ik heb daar zelf wel eens wat dingen icm video camera's mee gedaan.

http://opencv.willowgarage.com/wiki/

[ Voor 4% gewijzigd door Exirion op 05-03-2009 08:51 ]

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
0123456 schreef op donderdag 05 maart 2009 @ 08:41:
Ik ben voor een applicatie op zoek naar een stuk code of componenten die het mogelijk maak om een object in een foto te herkennen en dan dit uit het plaatje knipt.
scriptrequest

We zijn hier in Programming bezig met het zelf programmeren van applicties, en niet een kant en klare code service.

Zoals hierboven al aangedragen zul je naar Image Processing technieken moeten kijken.

[ Voor 24% gewijzigd door Woy op 05-03-2009 08:59 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik open het topic toch nog even, maar wil daarbij wel opmerken dat het niet de bedoeling is om kant-en-klare code te gaan posten. Stukjes code om een Image Processing techniek uit te leggen is natuurlijk geen probleem.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Woy schreef op donderdag 05 maart 2009 @ 08:58:
Ik open het topic toch nog even, maar wil daarbij wel opmerken dat het niet de bedoeling is om kant-en-klare code te gaan posten. Stukjes code om een Image Processing techniek uit te leggen is natuurlijk geen probleem.
Hij zou wellicht kunnen beginnen met het lezen van een boek over Image Processing: http://www.cs.uu.nl/docs/vakken/imgp/reader.htm

Acties:
  • 0 Henk 'm!

  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Ik hoef ook geen kant-en-klare code hier te krijgen.
Is natuurlijk wel handig :+

Maar ik moet even een idee krijgen hoe ik dit probleem kan oplossen.
Ik kan zelf wel code maken en testen of het goed gaat.
Alleen het principe en de beste manier om dit aan te pakken, heb ik nog niet.
Maar de tips hier zijn al een hele grote hulp!! _/-\o_

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
HuHu schreef op donderdag 05 maart 2009 @ 09:09:
[...]

Hij zou wellicht kunnen beginnen met het lezen van een boek over Image Processing: http://www.cs.uu.nl/docs/vakken/imgp/reader.htm
offtopic:
Hee dat vak heb ik ooit nog gehad :P

Maar dat is zeker een aanrader voor de TS, het is in aardig begrijpenlijke taal geschreven. Je krijgt er ieder geval een goede indruk mee hoe Image Processing in zijn werk gaat.

[ Voor 22% gewijzigd door Woy op 05-03-2009 09:24 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • writser
  • Registratie: Mei 2000
  • Laatst online: 26-05 20:06
Of haal het standaardwerk in huis als je er serieus mee bezig wilt gaan: http://www.amazon.com/Dig...8X/ref=dp_cp_ob_b_title_0

Als de auto's een heel andere kleur hebben dan de achtergrond kun je misschien iets doen met erosie/dilatie. Als dat werkt is het iig vrij eenvoudig.

Onvoorstelbaar!


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
writser schreef op donderdag 05 maart 2009 @ 09:38:
Of haal het standaardwerk in huis als je er serieus mee bezig wilt gaan: http://www.amazon.com/Dig...8X/ref=dp_cp_ob_b_title_0

Als de auto's een heel andere kleur hebben dan de achtergrond kun je misschien iets doen met erosie/dilatie. Als dat werkt is het iig vrij eenvoudig.
Als het gewoon een stationaire camera is, en de achtergrond veranderd niet veel, zou je kunnen denken om een "leeg" image te maken, die trek je dan van je image met je auto af, en dan heb je in principe je auto over, en moet het niet zo moeilijk zijn om de locatie te vinden.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 12:19

Exirion

Gadgetfetisjist

Hier moet je toch zeker wat mee kunnen:

http://www.scribd.com/doc/3948415/Counting-Cars-in-Traffic

Gebaseerd op OpenCV dus.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


Acties:
  • 0 Henk 'm!

  • ThomasClay
  • Registratie: Augustus 2008
  • Laatst online: 11:07
Als elke foto vanaf dezelfde plek is genomen met dus een redelijk vaste achtergrond, dan heb ik laatst een paper gelezen waarin ze o.a. precies dit probleem behandelen: Motion-Based Background Subtraction using Adaptive Kernel Density Estimation. Nadeel van dergelijke methoden is wel dat je alles pakt wat beweegt en niet alleen auto's.

[ Voor 12% gewijzigd door ThomasClay op 05-03-2009 11:22 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
ThomasClay schreef op donderdag 05 maart 2009 @ 11:20:
Als elke foto vanaf dezelfde plek is genomen met dus een redelijk vaste achtergrond, dan heb ik laatst een paper gelezen waarin ze o.a. precies dit probleem behandelen: Motion-Based Background Subtraction using Adaptive Kernel Density Estimation. Nadeel van dergelijke methoden is wel dat je alles pakt wat beweegt en niet alleen auto's.
Dat is dus hetzelfde als wat Woy zegt. Maak een foto zonder auto's erop, zodat je de kale achtergrond hebt. Vervolgens deze foto aftrekken van een foto met auto (en eventuele andere objecten). Dan hou je wat losse dingen over. Er van uitgaande dat de auto het grootste object is wat in je afbeelding zit (geen onlogische redenatie volgens mij), kun je dan eenvoudig bepalen wat de auto is. Maar dit gaat alleen op in het geval van een niet veranderende achtergrond.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 27-05 10:27
ThomasClay schreef op donderdag 05 maart 2009 @ 11:20:
Als elke foto vanaf dezelfde plek is genomen met dus een redelijk vaste achtergrond, dan heb ik laatst een paper gelezen waarin ze o.a. precies dit probleem behandelen: Motion-Based Background Subtraction using Adaptive Kernel Density Estimation. Nadeel van dergelijke methoden is wel dat je alles pakt wat beweegt en niet alleen auto's.
Bovenstaande paper laat juist zien dat ze in staat zijn bewegende bomen en een rollende branding te onderscheiden van auto's / mensen.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • ThomasClay
  • Registratie: Augustus 2008
  • Laatst online: 11:07
Hydra schreef op donderdag 05 maart 2009 @ 11:58:
[...]


Bovenstaande paper laat juist zien dat ze in staat zijn bewegende bomen en een rollende branding te onderscheiden van auto's / mensen.
Uh ja dat klopt, dat is het mooie aan hun methode inderdaad. Ik bedoelde dat je niet auto's van mensen/fietsers/andere passerende objecten kunt onderscheiden. Wil je echt alleen passerende auto's en niets anders hebben dan zul je verder moeten kijken dan alleen voorgrond/achtergrond scheiding. Beetje onduidelijk inderdaad :)

[ Voor 13% gewijzigd door ThomasClay op 05-03-2009 12:49 ]


Acties:
  • 0 Henk 'm!

  • Mr_Light
  • Registratie: Maart 2006
  • Niet online

Mr_Light

Zo-i-Zo de gekste.

ThomasClay schreef op donderdag 05 maart 2009 @ 12:47:
[...]


Uh ja dat klopt, dat is het mooie aan hun methode inderdaad. Ik bedoelde dat je niet auto's van mensen/fietsers/andere passerende objecten kunt onderscheiden. Wil je echt alleen passerende auto's en niets anders hebben dan zul je verder moeten kijken dan alleen voorgrond/achtergrond scheiding. Beetje onduidelijk inderdaad :)
Als afstand tot de weg/wegen hety zelfde blijft kan je altijd nog op groote filteren he, fietsen zijn doorgaans kleiner ;)

IceManX schreef: sowieso


Acties:
  • 0 Henk 'm!

  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Bedankt voor alle snelle info en ideeën _/-\o_
Ik ga eens alle info goed doorlezen (boeken duren wat langer).

Het is een buiten applicatie, dus ik weet nog niet of het mogelijk is om een achtergrond foto van de nieuwe foto af te trekken. Aangezien het licht buiten iedere keer anders is en als het regent kan het zijn dat er druppels op het glas van de kast (waar de camera inzit) komt.
Er komt wel een huge flitser bij te staan, maar ik weet nog niet of het buitenlicht dan nog invloed heeft.
Weet nog niet of dit in software eruit te filteren is of problemen geeft. :?

Ik hoef eigenlijk maar één vast punt te herkennen van de auto.
Als ik dat vaste punt heb, kan ik er zelf wel een rechthoek uithalen waar de auto goed in staat.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
0123456 schreef op vrijdag 06 maart 2009 @ 13:19:
Het is een buiten applicatie, dus ik weet nog niet of het mogelijk is om een achtergrond foto van de nieuwe foto af te trekken. Aangezien het licht buiten iedere keer anders is en als het regent kan het zijn dat er druppels op het glas van de kast (waar de camera inzit) komt.
Voor dat licht zou je natuurlijk kunnen corrigeren door de globale luminance van de foto gelijk te trekken met de originele foto.

Je zult natuurlijk altijd wat afwijkingen kunnen hebben, maar kleine objecten kun je natuurlijk gewoon weg-filteren. Het lijkt mij logisch dat je altijd het grootste object wilt hebben in dit geval.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Wanneer het geen stationaire camera betreft en je analyses op basis van een enkele foto moet uitvoeren, zou je een supervised algoritme kunnen maken waarbij je zelf wat trainingssamples maakt.

Je kunt proberen auto's te herkennen aan hun nummerbord. Licht kan een invloed hebben en ik zou proberen er voor te normaliseren.
Pagina: 1