Een object op de kaart volgen. Object volgen. De beweging van de tentakels van een zeedier

Om de locatie van een object op de kaart te zien, klikt u met de linkermuisknop op de naam van het object in de lijst. De kaart wordt gecentreerd op het opgegeven object. In dit geval blijft de schaal van de kaart hetzelfde. Beweeg over de kaart en schaal deze naar eigen inzicht. Methoden voor het omgaan met de kaart worden gedetailleerd beschreven in het gedeelte Kaart.

Op de kaart worden alleen de objecten weergegeven die zijn gemarkeerd met vlaggen in de eerste kolom van de tabel. U kunt alle objecten tegelijkertijd markeren door het vakje helemaal bovenaan in de tabelkop aan te vinken. Het uitschakelen van dit selectievakje heeft het tegenovergestelde effect: het uitschakelen van alle objecten in de lijst. Objecten gemarkeerd met vlaggen in de eerste kolom worden op de kaart weergegeven, maar alleen als ze in dat deel van de kaart vallen dat momenteel zichtbaar is op het scherm.

Als de vlag 'Objectpictogrammen langs de randen van de kaart weergeven' echter is ingesteld in de gebruikersinstellingen, wordt het pictogram weergegeven aan de rand van de kaart als een object buiten het zichtbare gebied van de kaart komt. Klik er vervolgens op zodat de kaart gecentreerd is op dit object.

Om de huidige locatie van een object op de kaart niet te verliezen, vinkt u ook het vakje in de kolom ‘Object volgen’ aan. Objecten gemarkeerd met vlaggen in deze kolom zijn altijd zichtbaar op de kaart. Bij binnenkomst van een nieuw bericht van dergelijke objecten wordt de kaart automatisch gecentreerd zodat deze objecten zichtbaar zijn.

Ook in deze rubriek:

-

24 juni 2010 om 16:33 uur

Een object volgen op kleur met behulp van Aforge.NET

  • .NETTO

Hallo. Een veel voorkomende uitdrukking: “mijn eerste bericht” :). Daarin wil ik je vertellen over mijn kleine project om een ​​object te volgen op basis van zijn kleur. Nu heeft dit een vrij breed toepassingsgebied, bijvoorbeeld dezelfde joysticks van Wii en PlayStation 3. De basis voor het werk was de ontwikkeling van Andrei Kirillov Aforge.NET - een vrij krachtig ding voor zelfgemaakte beeldverwerking.
De code pretendeert niet de “ultieme waarheid” te zijn; er is veel vereenvoudigd (op één plek was er in zekere zin zelfs duplicatie - ik heb mijn eigen klasse gemaakt voor snelle toegang tot pixels, hoewel soortgelijke ontwikkelingen ook in Aforge plaatsvonden) . Maar toch werkt de code, volgt het object, geeft informatie over de locatie en stelt u in staat de tint van het object dynamisch te berekenen (voor het geval de verlichting verandert).

Voor geïnteresseerden, zie cat.

Een korte excursie naar AForge.

Het raamwerk is een reeks bibliotheken, die elk zijn ontworpen om een ​​specifiek type probleem op te lossen:
  • AForge.Imaging– bibliotheek met filters en berekeningen voor beeldverwerking;
  • AForge.Visie– machine vision-bibliotheek;
  • AForge.Neuro– bibliotheek voor het werken met neurale netwerken;
  • AForge.Geneti c – bibliotheek voor het werken met genetische algoritmen;
  • AForge.Fuzzy– bibliotheek met vage berekeningen;
  • AForge.MachineLearning– bibliotheek voor machinaal leren;
  • AForge.Robotica– een bibliotheek die ondersteuning biedt voor sommige Robotics-kits;
  • AForge.Video– een reeks bibliotheken voor videoverwerking.
De bibliotheken worden geleverd met een reeks voorbeelden.

Gebruikersinterface

Ik heb mijn project niet helemaal opnieuw geschreven; ik heb het voorbeeld Vision\MotionDetector als basis genomen. Het weet al hoe het verbinding moet maken met een webcamera, een externe webcamera (via JPEG, MJPEG-url) en hoe hij bepaalde videobestanden moet openen (waar ik, ik geef toe, niet mee heb geëxperimenteerd):

Het originele voorbeeld kan beweging in een stream identificeren met behulp van verschillende algoritmen, waarvan de eenvoudigste is om het verschil tussen twee opeenvolgende frames te vinden.
De formuliercode werd met een bestand verwerkt en specifiek op de taak afgestemd. Op het tabblad Beweging moet u een objectzoekalgoritme selecteren:

Selecteer vervolgens het object met behulp van het formulier Kleurtrackingobject definiëren:

Informatie over het object wordt weergegeven in de statusbalk van het hoofdformulier:

Als extra instelling is er een kleurverschildrempel voorzien - de mogelijkheid om niet één enkele kleur te volgen, maar om rekening te houden met de variaties ervan:

Bovendien kan de gebruiker opgeven of hij of zij wil dat de kleur van het object ook wordt gevolgd tijdens de verwerking (dat wil zeggen dat niet alleen het object zelf wordt gevolgd op kleur, maar dat ook de nieuwe kleur van het object wordt berekend tijdens de verwerking):

Het volgende broodje wordt standaard geleverd met Aforge Bewegingsdetector. Een object kan op verschillende manieren in een afbeelding worden gemarkeerd:

Uitvoering

AForge.Vision.Motion. Bewegingsdetector– een interface waarmee u naar verschillen tussen afbeeldingen kunt zoeken. Van hem geërfd Kleurdetectie de klasse die de verwerking uitvoert.
Er is een methode toegevoegd voor interactie met de gebruikersinterface Initialiseren(Afbeelding, Rechthoek rect), waarmee de verwerking van volgende frames wordt geïnitialiseerd. Hier wordt informatie over het doelobject verzameld (gemarkeerd door een rechthoek in de afbeelding). Er wordt informatie verzameld over de dominante kleur in het geselecteerde gebied (deze eigenschap zal verder dienen als basis voor tracking). De positie van het doelobject wordt ook onthouden.

Bewegingsdetector kent de volgende methoden:

  • Procesframe(AForge.Imaging.UnmanagedImage) – geeft het volgende frame dat wordt ontvangen van het beeldopnameapparaat door aan het object. Het volgende frame is een object van het type AForge.Imaging.UnmanagedImage, een klasse waarmee je pixels veel sneller kunt benaderen dan Bitmap.GetPixel(x,y).
  • Opnieuw instellen() – reset de inhoud van de klasse.
Eigenschappen:
  • Bewegingsframe– eigenschap van het type AForge.Imaging. Onbeheerde afbeelding, die verantwoordelijk is voor het markeren van de regio met het object.
  • AForge.Vision.Motion.IMOtionDetector. Bewegingsniveau– “bewegingsniveau” (van 0 tot 1) – een kortstondige waarde. Heb het niet geïmplementeerd.
Om informatie in de statusbalk van de applicatie bij te werken, is Get Properties toegevoegd:
  • Punt Centrum
  • Rechthoek GrenzenBox
  • Kleur Objectkleur
Om niet alleen de doelkleur, maar ook enkele tinten te gebruiken, wordt Set Property gebruikt Verschildrempel.
De hoofdverwerking van het frame vindt plaats in de functie Procesframe. Het algoritme kan worden onderverdeeld in de volgende stappen:
  1. Uitbreiding van de aanwezigheidsregio van de faciliteit. We zoeken niet over het hele scherm naar de nieuwe positie, maar alleen in het gebied grenzend aan de vorige positie. Dit maakt de zoekopdracht nauwkeuriger omdat het doelobject niet zal worden verward met een ander object van dezelfde kleur (in een ander deel van de afbeelding).
  2. Berekening van de grenzen van een object in het hierboven beschreven gebied door het bepalen van de uiterste punten van de kleur die dominant is voor het object (hier wordt ook rekening gehouden met mogelijke kleurafwijkingen - DifferenceThreshold).
  3. Een "masker" maken Bewegingsframe, waardoor de MotionDetector het doelobject in de afbeelding kan markeren.
  4. Vervolgens worden de “gemiddelde kleur” en grootte van het nieuwe object berekend.
  5. Als het object te klein is (bijvoorbeeld bij het volgende frame werd ons doelobject volledig bedekt door een ander object), veranderen we de positie- en kleurinformatie die is overgenomen door de verwerking van het vorige frame niet.
  6. Anders worden de nieuwe positie en grenzen van het object onthouden, en als het algoritme kleurveranderingen bijhoudt, wat wordt ingesteld met behulp van de bool DynamicColorTracking-eigenschap, wordt de nieuwe berekende kleur ook onthouden.
Hiermee is de beeldverwerking voltooid.

Mogelijke verbeteringen

Omdat we het al hebben gehad over controllers voor gameconsoles, is hun kleur meestal contrastrijk anders dan die van andere objecten in het frame. Daarom kunt u een primaire zoekopdracht naar de doelkleur uitvoeren in het hele frame (en niet alleen in het aangrenzende gebied). Hierdoor kunt u uw onderwerp volgen terwijl u sneller beweegt.

Hoofdstuk 15: Werken met begrenzers

Object volgen

Soms moet u de beweging van een object 'beperken' of het dwingen andere objecten in de scène te 'volgen'. In deze tutorial bekijken we een van de limiters die je kunt gebruiken om de camera te dwingen een object te volgen. Deze begrenzer heet " Volg naar"Trackingbegrenzers worden gebruikt in animaties en kunnen veel tijd besparen.

Laten we eens kijken hoe de limiter werkt" Volg naar" als voorbeeld. Voeg een object toe aan de scène die de camera zal volgen. Ga naar de bewerkingsknoppen ( F9). Om verder te werken, moet u de naam van dit object weten. Roep het informatievenster op met de knop " N", verander de objectnaam in Acteur voor het gemak.

Selecteer nu de camera, ga naar de objectknoppen ( F7). Vind het tabblad hier Beperkingen, druk op de knop erin Beperking toevoegen en selecteer uit de lijst met begrenzers " Volg naar". In het optiepaneel Volg naar, zoek het veld Doel-OB: Voer er de naam van ons object in in, dat wil zeggen Acteur. Hierna verschijnt er een stippellijn tussen het object en de camera, wat aangeeft dat de camera het object volgt. Als je nu in de camera kijkt, zul je met één probleem te maken krijgen: de camera ziet het object niet! Om dit probleem op te lossen, klikt u op de knop Aan: -Z, en ook Op: Y in het paneel Beperkingen. Dat is het! Waar u het object ook verplaatst, het zal altijd zichtbaar zijn vanaf de camera. Er is een andere manier om cameratracking van een object te creëren. Selecteer de camera, vervolgens het onderwerp en klik Ctrl T, in het menu dat verschijnt, selecteer het type " Volg tot beperking".

Opties van het paneel Beperkingen:

Naar: X,Y of Z en -X,-Y of -Z- assen waarlangs tracking plaatsvindt. Meestal moet u de -Z-as selecteren

Invloed- Mate van tracking. Hoe lager de waarde van dit veld, hoe zwakker de camera het object volgt.

Doel- naam van het trackingobject

Omhoog- volgrichting wordt meestal gebruikt "Y"

Soms wordt bij animatie gebruik gemaakt van de techniek waarbij de camera het dummy-object volgt. Hierdoor kunt u de scherpstelling van de camera dynamischer regelen. U kunt bijvoorbeeld een object volgen (waarbij de fopspeen zich bevindt) en vervolgens de focus wijzigen (de fopspeen verplaatsen). Experimenteer ook met de parameter Invloed.

het aantal mensen dat om een ​​dienst als het monitoren van een object vroeg, was altijd groot...

Surveillance houdt in dat privédetectives, met behulp van bepaalde vaardigheden en camouflagemethoden, observaties zullen maken van het object van surveillance om eventuele interessante feiten te identificeren: met wie hij of zij communiceert, welke plaatsen hij bezoekt en andere interessante informatie.
Soorten geheime surveillance bij het uitvoeren van dit soort taken kunnen variëren van conventionele externe surveillance, surveillance tot de installatie van miniatuurbewakingscamera's, die dergelijk contra-surveillance vermijden. Het doel dat kan worden nagestreefd door extern toezicht kan zijn om een ​​kring van contacten met het object tot stand te brengen (meestal betekent dit het bespioneren van ontrouwe echtgenoten), of om een ​​object van belang te vinden, of het nu een object, een plaats of een persoon is.

Methoden voor het detecteren van extern toezicht.

Naast diensten rondom het volgen van een object en het vaststellen van de identiteit van de personen met wie hij communiceert, kan een recherchebureau ook zijn cliënt identificeren en vertellen of hij wordt gemonitord en welke vorm van heimelijk toezicht daarvoor wordt ingezet. Het is veel gemakkelijker om extern toezicht te detecteren dan toezicht waarbij gebruik wordt gemaakt van camouflagevaardigheden. Soms is het voor privé-detectives voldoende om het doelwit te volgen om erachter te komen of hij wordt gevolgd of niet. Privédetectives kunnen ook het appartement van het doelwit controleren om verborgen bewakingsapparatuur daarin te detecteren, vaak met behulp van hightech apparaten die nauwkeurig insecten kunnen detecteren en verborgen bewakingscamera's die in de kamer zijn geïnstalleerd.

Contra-toezicht

– dit is in de eerste plaats surveillance, die wordt uitgevoerd met als doel eventuele pogingen tot externe surveillance van een object te identificeren. Meestal wordt het uitgevoerd wanneer de proefpersoon gelooft dat iemand naar hem kijkt. Privédetectives zullen voortdurend informatie ontvangen en analyseren over de mensen om hen heen: wie communiceert en hoe, wie zich hoe gedraagt ​​- dit alles stelt hen in staat degenen die moeten worden geïdentificeerd en aan het licht gebracht te ontmaskeren. Tegensurveillance staat vaak niet toe dat je weerstand kunt bieden aan ervaren mensen die, naast de gebruikelijke externen, ook allerlei vormen van geheime surveillance gebruiken. Het stelt je echter wel in staat om de agenten te identificeren die zijn aangewezen om het object te monitoren als ze niet zo ervaren in de kunst van camouflage.

Principes van camouflage bij het uitvoeren van extern toezicht.

Bij het uitvoeren van surveillance moeten rechercheurs vaak camouflagevaardigheden gebruiken. Vermomming op straat is in de eerste plaats gebaseerd op het feit dat de detective in de menigte moet verdwijnen en er een onmerkbaar onderdeel van moet worden, dat het object van dichtbij en rustig zal observeren. De meest primitieve manier om externe surveillance uit te voeren zonder de aandacht van het object te trekken, is door zich buiten het gezichtsveld te bevinden. Vreemd genoeg zijn andere surveillancemethoden hierop gebaseerd, omdat ze erop gericht zijn de aandacht niet op de privédetective te vestigen. In dergelijke gevallen kan het onjuiste gedrag dat u kan onderscheiden van alle mensen die zich momenteel op straat bevinden, in de steek worden gelaten door een te korte afstand tussen hem en het object of bijvoorbeeld door een te duidelijke opdringerigheid en opdringerigheid. Een professional op dit gebied is in staat het object van surveillance zo dichtbij te benaderen dat hij kan horen hoe hij communiceert, terwijl hij onopgemerkt blijft door zowel het object als de personen die het contra-surveillance uitvoeren.

Soorten geheime surveillance.

Over het algemeen zijn er verschillende soorten geheime surveillance van een object. Deze omvatten extern toezicht, dat wordt uitgevoerd door privédetectives, de installatie van afluisterapparatuur op de telefoon van het doelwit en het uitrusten van woonruimten van het doelwit met verborgen videobewakingscamera's. Al deze observatiemethoden zijn behoorlijk effectief en hebben hun voor- en nadelen, waardoor ze samen volledige en nauwkeurige informatie kunnen verkrijgen over elke stap van het object.

Laten we aannemen dat een object (in ons geval een primitief) langs een voldoende lang gebogen pad beweegt TorusKnoop), waarvan de beweging moet worden vastgelegd door een close-upcamera - dit betekent dat het op een bepaald moment mogelijk is om slechts een afzonderlijk deel van de route te observeren. Daarnaast moet op elk specifiek moment een klein fragment van de route met het object worden verlicht door drie veelkleurige spotlights, die doen denken aan veelkleurige theaterspots. Het blijkt dat het naast de beweging van een object langs een complex traject ook nodig is om het volgen ervan te organiseren door een camera en drie lichtbronnen. Maak een vlak en een object TorusKnoop en pas vervolgens de verlichting aan door een zwak licht in de scène te introduceren Omni-bron voor algemene verlichting van de scène en drie gerichte spots, bijvoorbeeld met stralen van blauwe, rode en groene kleuren en kleine lichtkegels (in dit geval de parameter Hotspot/Straal is gelijk aan 10, en Fall-off/Veld- 20) - afb. 41. Voeg een route toe in de vorm van een willekeurige gebogen spline en verplaats het object naar het begin van de route (Fig. 42).

Animeer de beweging van een object. Maak een dummy-object en organiseer de beweging ervan langs een traject (opdracht Animatie=>Beperkingen=>PadBeperking met ingeschakeld paneel Beweging selectievakje Volgen). Object koppelen TorusKnoop met een dummy-object en lijn het uit met het dummy-object op alle drie de assen. Zorg ervoor dat wanneer de animatie wordt afgespeeld, het object TorusKnoop maakt een geplande beweging langs het traject.

Nu moet u het volgen van lichtbronnen instellen. In ons geval zijn de bronnen gericht ( DoelPlek), dat wil zeggen dat er al een controller voor is opgegeven KijkBij(Kijk eens naar) het beperken van hun rotatie, zodat ze altijd op hun doelen gericht zijn. Daarom lijkt de eenvoudigste oplossing het aangeven als doelwit Dummie-object, waardoor de bronnen automatisch altijd op het bewegende object zijn gericht. Om dit te doen, selecteert u eenvoudig de eerste bron (zonder doel) op het paneel Beweging open de rol KijkBijParameters(Controllerparameters "Kijk naar"), klik op de knop KiesDoel(Specificeer het doel) en geef het object aan in een van de projectievensters Dummie 01 (Afb. 43). Vervolgens moet deze bewerking worden uitgevoerd in relatie tot twee andere bronnen. Hierna zullen de lichtbronnen het bewegende object daadwerkelijk volgen, alleen het effect van veelkleurige theatrale spotlights gaat verloren, omdat alle drie de bronnen hetzelfde deel van de ruimte zullen verlichten, wat betekent dat hun veelkleurige lichtstralen zal volledig samenvloeien (Fig. 44). Het blijkt dat elke bron zijn eigen doelwit moet hebben, maar dat alle drie de doelwitten het object moeten volgen Dummie 01. Maak daarom nog drie dummy-objecten en plaats deze zo dat ze zich in het midden van de beoogde lichtvlekken bevinden (Fig. 45). Selecteer alle drie de extra dummy-objecten en koppel ze aan het object Dummie 01 (Afb. 46). Nu zullen de spotlights niet alleen een bewegend object volgen, maar ook elk van zijn eigen zones verlichten, wat zorgt voor de aanwezigheid van drie veelkleurige lichtvlekken (Fig. 47).

Rijst. 43. Scrollparameters instellen LookAtParameters voor de eerste Plek-bron

Rijst. 46. ​​Weergave van een hiërarchische keten na extra koppeling Dummie-objecten

In het raam Links maak een camera, venster Perspectief vervangen door het cameraprojectievenster (commando Bekeken=>Camera vanuit het projectievenstermenu of de C-toets). Pas de positie en oriëntatie van de camera aan zodat deze op het bewegende object is gericht (Fig. 48). Helaas wordt de oriëntatierichting ten opzichte van het object alleen behouden voor dit specifieke animatieframe. Selecteer dus de camera (zonder doel) in het paneel Beweging open de rol KijkBijParameters, klik op de knop KiesDoel en specificeer een object als cameradoel Dummie 01 (Afb. 49). Speel de animatie af - nu volgt de camera het object getrouw, maar de afstand tussen de camera en het object verandert voortdurend, wat observatie moeilijk maakt (Fig. 50). Koppel dus de camera aan het onderwerp Dummie 01 (Fig. 51) - nu blijft de camera niet alleen het object volgen, maar past hij ook automatisch de positionering aan, wat betekent dat het object vanaf dezelfde afstand wordt waargenomen (Fig. 52). Helaas is dit nog niet alles: bekijk de hele animatie zorgvuldig en je zult zien dat de schijnwerpers die een bewegend object in verschillende stadia van de animatie verlichten niet hetzelfde zijn, hoewel alle drie de lichtvlekken altijd aanwezig zijn. Feit is dat de afstand van de lichtbronnen naar het object verandert. De situatie wordt op precies dezelfde manier gecorrigeerd als hierboven besproken met camerapositionering: associeer gewoon alle drie de bronnen met het object Dummie 01 (Afb. 53) en installeer ze vervolgens op de gewenste afstand van het object. Dit zal tot het gewenste resultaat leiden - individuele frames van de resulterende animatie worden getoond in Fig. 54.

Rijst. 49. Scrollparameters instellen LookAtParameters voor camera

De beweging van de tentakels van een zeedier

Laten we de directe kinematische methode gebruiken om de beweging van de tentakels van een bepaald zeedier te simuleren. Maak eerst drie basisobjecten: één object Lente 01 en twee gewone cilinders, plaats deze op elkaar in de richting van de as Z(dit zal de basis zijn voor de tentakel). Tussen hen zet je er twee aan Dummie-object (Afb. 55). Selecteer een object Cilinder 02, open op het paneel Beweging rol ToewijzenControleur(Toewijzing van controllers), markeer de regel Rotatie en klik op de gelijknamige knop ToewijzenControleur(Afb. 56). Selecteer de optie in het geopende venster Kijk naarConstante(Afb. 57) en klik op Ok. Klik dan op de knop ToevoegenKijk naarDoel en specificeer als het doel waar deze cilinder naar zal kijken het onderste dummy-object, en in het gebied SelecteerKijk naarAs markeer de as Z(Afb. 58). Voer een soortgelijke handeling uit voor het object Lente 01, specificeer alleen een object als doel dat de rotatie ervan beperkt Dummie 02.

Rijst. 56. Knop WijsController toe

Rijst. 57. Controllerselectie Kijk naarConstant

Rijst. 58. Doel Kijk naar-doelen voor het object Cilinder 02

Laten we nu geleidelijk afnemende oscillaties toewijzen aan beide dummy-objecten, wat gedaan kan worden door er controllers aan toe te voegen Lente(Lente). Selecteer een object Dummie 01, open op het paneel Beweging rol ToewijzenControleur, selecteer de lijn Positie, klik op ToewijzenControleur, selecteer regelaar Lente en verhoog de parameter ervan Massa tot ongeveer 500 (Fig. 59). Deze parameter is verantwoordelijk voor de sterkte van trillingen: hoe hoger de waarde, hoe sterker de trillingen. Wijs de controller op precies dezelfde manier toe Lente naar het tweede dummy-object.

Rijst. 59. Doel van de verwerkingsverantwoordelijke Lente voorwerp Dummie 01

Object koppelen Dummie 01 met voorwerp Cilinder 01, en het object Dummie 02 met voorwerp Cilinder 02 (Afb. 60). In de automatische sleutelgeneratiemodus verplaatst u het object in een van de eerste frames (we kozen voor de 10e). Cilinder 01, de ouder, op enige afstand ten opzichte van de assen X En Y(Afb. 61). Speel de animatie af en je ziet de tentakel bewegen (Fig. 62). Verspreid tentakels met behulp van bediening Array(team Hulpmiddelen=>Array) met parameters zoals in Fig. 63. Dit zal onmiddellijk resulteren in een reeks tentakels (Fig. 64), die kunnen worden gebruikt om een ​​fantastisch zeedier te creëren, maar je zult de andere elementen van dit wezen moeten verbinden met het hoofdobject van de scène Cilinder 01. Vanwege het grote aantal objecten in de scène zal dit problematisch zijn. Klik dus eerst op de knop SelecteerdoorNaam, selecteer de objecten die u wilt koppelen. Activeer vervolgens het hulpmiddel SelecteerEnLink en klik nogmaals op de knop SelecteerdoorNaam- er gaat een venster open SelecteerOuder(niet SelecteerVoorwerp); geef het object erin aan Cilinder 01 (Afb. 65) en klik op de knop Link, wat tot de vereiste binding zal leiden. Nu bewegen de tentakels niet langer alleen, maar samen met andere elementen van het zeedier. Het uiterlijk van de resulterende scène in sommige animatieframes kan lijken op Fig. 66.