Thursday, October 6, 2016

Cv2 Moving Average

Ek is nie seker oor die fout, maar kyk na die dokumentasie vir cv. RunningAvg Dit sê bestemming moet 32 ​​of 64-bit floating point wees. Toe het ek 'n klein regstelling in jou kode en dit werk. beeld 'n 32-bit floating point wat ek gemaak het om op te slaan hardloop gemiddelde waardes. daarna 'n ander beeld 8 bit sodat ek kan gemiddelde beeld loop wys: Nou sien die resultaat: Op 'n bepaalde oomblik, ek gered van 'n raam en sy ooreenstemmende hardloop gemiddelde raam. Jy kan die hindernis (my hand) blokke sien die voorwerpe in agter. Nou hardloop gemiddelde raam: Dit amper verwyder my hand en wys voorwerpe in die agtergrond. Dit is hoe dit is 'n goeie hulpmiddel vir agtergrond aftrek. Nog 'n voorbeeld van 'n tipiese verkeer video: Hi, dit gaan 'n baie eenvoudige artikel wees, maar jy sal vind dit baie nuttig. Dit gaan oor Agtergrond Onttrekking van 'n video. Veronderstel jy is gegee video van beeldmateriaal van die verkeer, kan 'n ding soos hierdie wees. Verkeer in Indië. en jy word gevra om 'n geskatte agtergrond vind. Of iets soos dit. Agtergrond onttrekking kom belangrik in voorwerp dop. As jy reeds 'n beeld van die kaal agtergrond, dan is dit eenvoudig. Maar in baie gevalle, jy is nie so 'n beeld en so, sal jy het om een ​​te skep. Dit is waar Running Gemiddeld handig te pas kom. (Ek het gedink oor wanneer 'n man 'n vraag gevra in SOF. Link) Die funksie wat ons hier gebruik om uit te vind Running Gemiddeld is cv2.accumulateWeighted (). Byvoorbeeld, as ons kyk na 'n video, hou ons voed elke raam om hierdie funksie, en die funksie te hou om die gemiddeldes van alle rame gevoer om dit volgens die onderstaande verhouding: src niks beeld ons bron, maar. Dit kan gryskleur of kleur beeld en óf 8-bit of 32-bit floating point wees. dst is die uitset of accumulator beeld met dieselfde kanale soos die beeld bron van, en dit is óf 32-bis of 64-bit floating point. Ook, moet ons dit eers verklaar om 'n waarde wat geneem sal word as aanvanklike waarde. Alpha is die gewig beeld die insette van. Volgens Dokumente, Alpha reguleer die update spoed (hoe vinnig die akkumulator 8220forgets8221 oor vroeër beelde). In eenvoudige woorde, as Alpha is 'n hoër waarde, gemiddelde beeld probeer selfs 'n baie vinnige en kort veranderinge in die data te vang. As dit laer waarde, gemiddelde word traag en dit sal nie oorweeg vinnige veranderinge in die insette beelde. Ek sal dit verduidelik 'n bietjie met die hulp van beelde aan die einde van die artikel. In bostaande kode, het ek twee gemiddeldes, een met 'n hoër alfa waarde en 'n ander met 'n laer alfa waarde, sodat jy uitwerking van alfa verstaan ​​stel. Eers beide is ingestel op raam van die opname parafeer. En in lus hulle ontslae opgedateer. Jy kan 'n paar resultate in die SOF skakel ek reeds sien. (Ek bied hierdie resultate hier, kan jy die kode en alfa waarde daar te gaan): Ek gebruik my webcam en gered oorspronklike raam en hardloop gemiddelde op 'n bepaalde tydstip. Dit is 'n raam van 'n tipiese verkeer video geneem deur 'n stilstaande kamera. Soos jy kan sien, is 'n motor gaan op die pad, en die persoon is besig om die pad op 'n bepaalde tydstip te steek. Maar sien die loop gemiddelde op daardie tydstip. Daar is niemand en motor in hierdie beeld (Eintlik is dit daar, het 'n vinnige blik, dan sal jy dit sien, en die persoon is meer duidelik as die motor omdat die motor beweeg baie vinnig en oor die beeld, dit het nie veel effek op die gemiddelde, maar mens is daar vir 'n lang tyd, want hy is stadig en beweeg oor die pad) Nou moet ons die effek van alfa sien op hierdie images. Smoothing Images Doelwitte Leer om:. Blur imagess met verskeie lae slaag filters Pas op maat filters om beelde (2D konvolusie) 2D konvolusie (Foto Filtering) Soos vir eendimensionele seine, beelde ook kan gefiltreer met verskeie lae-pass filters (LPF), 'n hoë-pass filters (HPF), ens 'n LPF help in die verwydering van geraas, of vervaag die beeld. A HPF filters help met die vind van kante in 'n beeld. OpenCV bied 'n funksie, cv2.filter2D (). 'n kern met 'n beeld oprollen. As 'n voorbeeld, sal ons probeer om 'n gemiddelde filter op 'n beeld. Filtering met die bogenoemde kern resultate in die volgende verrig: 'n 5x5 gemiddelde filter kern kan as volg gedefinieer word vir elke pixel, is 'n 5x5 venster gesentreer op hierdie pixel, is al pixels wat binne hierdie venster opgesom, en die resultaat is dan gedeel deur 25. dit is gelykstaande aan die berekening van die gemiddelde van die pixel waardes binne die venster. Hierdie operasie is uitgevoer vir al die pixels in die beeld uitset gefiltreer beeld te produseer. Probeer hierdie kode en kyk die resultaat: Image vervaging (Foto Smoothing) Image vervaag word bereik deur convolving die beeld met 'n laaglaatfilter kern. Dit is nuttig vir die verwydering van geraas. Dit verwyder eintlik 'n hoë frekwensie inhoud (bv: geraas, kante) van die beeld wat lei tot rande wat vervaag wanneer dit filter toegepas. (Wel, daar is vervaag tegnieke wat nie kante nie vervaag). OpenCV voorsien hoofsaaklik vier tipes vervaag tegnieke. 1. gemiddeld Dit word gedoen deur convolving die beeld met 'n genormaliseerde boks filter. Dit neem net die gemiddeld van al die pixels onder kern gebied en vervang die sentrale element van hierdie gemiddelde. Dit word gedoen deur die funksie cv2.blur () of cv2.boxFilter (). Kyk op die dokumente vir meer besonderhede oor die kern. Ons moet die hoogte en breedte van kern spesifiseer. 'N 3x3 genormaliseer boks filter sal lyk: As jy don8217t wil 'n genormaliseerde boks filter gebruik, gebruik cv2.boxFilter () en slaag die argument normalizeFalse om die funksie. Kyk op die monster demo hieronder met 'n kern van 5x5 grootte: 2. Gaussiese filter In hierdie benadering, in plaas van 'n boks filter bestaande uit gelyke filter koëffisiënte, word 'n Gaussiese kern gebruik. Dit word gedoen met die funksie, cv2.GaussianBlur (). Ons moet die hoogte en breedte van die kern wat positiewe en vreemd moet wees spesifiseer. Ons moet ook die standaardafwyking in die X en Y rigtings, Sigmax en sigmaY onderskeidelik spesifiseer. Indien slegs Sigmax gespesifiseer, is sigmaY geneem as gelykstaande aan Sigmax. As beide word as nulle, word hulle gereken vanaf die kern grootte. Gaussiese filter is hoogs effektief in die verwydering van Gaussiese ruis van die beeld. As jy wil, kan jy 'n Gaussiese kern te skep met die funksie, cv2.getGaussianKernel (). Bogenoemde kode kan verander word vir Gaussiese vervaging: 3. Mediaan Filtering Hier is die funksie cv2.medianBlur () bere die mediaan van al die pixels onder die kern venster en die sentrale pixel vervang met hierdie mediaanwaarde. Dit is hoogs effektief in die verwydering van sout-en-peper geraas. Een interessante ding om daarop te let is dat, in die Gaussiese en boks filters, die gefilterde waarde vir die sentrale element kan 'n waarde wat nie kan bestaan ​​in die oorspronklike beeld te wees. Dit is egter nie die geval in mediaan filter, aangesien die sentrale element altyd vervang deur 'n paar pixel waarde in die beeld. Dit verminder die geraas effektief. Die kern grootte moet 'n positiewe vreemd heelgetal wees. In hierdie demo, voeg ons 'n 50 geraas om ons oorspronklike beeld en gebruik 'n mediaan filter. Gaan die uitslag: 4. Bilaterale Filtering Soos ons opgemerk, die filters ons vroeër aangebied is geneig om kante te laat vervaag. Dit is nie die geval vir die bilaterale filter, cv2.bilateralFilter (). wat gedefinieer word, maar is hoogs effektief teen geraas verwydering terwyl die behoud van kante. Maar die operasie is stadiger in vergelyking met ander filters. Ons het reeds gesien dat 'n Gaussiese filter neem die 'n woonbuurt in die pixel en vind sy Gaussiese geweegde gemiddelde. Dit Gaussiese filter is 'n funksie van die ruimte alleen, dit wil sê in die buurt pixels beskou terwyl filter. Dit maak nie oorweeg of pixels het byna dieselfde intensiteit waarde en nie oorweeg of die pixel lê op 'n voorsprong of nie. Die gevolglike effek is dat Gaussiese filters is geneig om kante te laat vervaag, wat is ongewens. Die bilaterale filter gebruik ook 'n Gaussiese filter in die spasie domein, maar dit maak ook gebruik van 'n meer (multiplikatiewe) Gaussiese filter komponent wat 'n funksie van pixel intensiteit verskille. Die Gaussiese funksie van ruimte maak seker dat slegs pixels is 8216spatial neighbors8217 kom in aanmerking vir die filter, terwyl die Gaussiese komponent toegepas in die intensiteit domein (a Gaussiese funksie van intensiteit verskille) verseker dat net diegene pixels met intensiteite soortgelyk aan dié van die sentrale pixel ( 8216intensity neighbors8217) is ingesluit om die versteurde intensiteit waarde te bereken. As gevolg hiervan, hierdie metode bewaar kante, want vir pixels lê naby kante, naburige pixels geplaas op die ander kant van die rand, en dus uitstal groot intensiteit variasies in vergelyking met die sentrale pixel, sal nie ingesluit word vir vervaag. Die onderstaande voorbeeld demonstreer die gebruik van bilaterale filter (Vir meer inligting oor die argumente, sien die OpenCV dokumente). Let daarop dat die tekstuur van die oppervlak is weg, maar rand steeds preserved. Smoothing Images Die onderstaande verduideliking behoort aan die boek Computer Vision: Algoritmes en aansoeke deur Richard Szeliski en LearningOpenCV Smoothing. ook bekend as vervaag. is 'n eenvoudige en dikwels gebruikte beeldverwerking werking. Daar is baie redes vir glad. In hierdie handleiding word daar gefokus op glad om geraas te verminder (ander gebruike sal gesien word in die volgende tutoriale). Om 'n glad aksie uit te voer sal ons 'n filter van toepassing op ons beeld. Die mees algemene tipe filters is lineêr. waarin 'n uitset pixel8217s waarde (dit wil sê) is bepaal as 'n geweegde som van insette pixel waardes (dit wil sê): Dit help om 'n filter te visualiseer as 'n venster van koëffisiënte gly oor die beeld. Daar is baie soorte filters, hier sal ons praat van die mees gebruikte: genormaliseerde Box Dit filter is die eenvoudigste van alle Elke uitset pixel is die gemiddelde van sy kern bure (almal bydra met gelyke gewigte) Die kern is hieronder: Gauss filter Waarskynlik die mees bruikbare filter (hoewel nie die vinnigste). Gaussiese filter word gedoen deur convolving elke punt in die insette array met 'n Gaussiese kern en dan optel almal aangemoedig om die uitset verskeidenheid produseer. Net om die prentjie duideliker te maak, onthou hoe 'n 1D Gaussiese kern lyk veronderstelling dat 'n beeld is 1D, kan jy sien dat die pixel geleë in die middel van die grootste gewig sou hê. Die gewig van sy bure daal as die ruimtelike afstand tussen hulle en die sentrum pixel toeneem. Onthou dat 'n 2D Gaussiese kan voorgestel word as: Mediaan Filter Die mediaan filter loop deur elke element van die sein (in hierdie geval die beeld) en vervang elke pixel met die mediaan van die naburige pixels (geleë in 'n vierkantige omgewing rondom die geëvalueer pixel ). Bilaterale Filter Tot dusver het ons 'n paar filters wat hoofdoel is om 'n invoer beeld glad verduidelik. Maar soms die filters nie net los die geraas, maar ook weg glad die kante. Om dit te voorkom (op sekere mate ten minste), kan ons 'n bilaterale filter gebruik. In 'n soortgelyke wyse as die Gaussiese filter, die bilaterale filter is ook van mening die naburige pixels met gewigte aan elkeen van hulle. Hierdie gewigte het twee komponente, waarvan die eerste is die dieselfde gewig wat gebruik word deur die Gauss filter. Die tweede komponent in ag neem die verskil in intensiteit tussen die naburige pixels en die geëvalueer een. Vir 'n meer gedetailleerde verduideliking wat jy kan kyk op hierdie skakel Kode Wat beteken hierdie program doen Loads 'n beeld Pas 4 verskillende soorte filters (verduidelik in teorie) en wys die gefiltreer beelde agtermekaar Verduideliking Let8217s die OpenCV funksies wat slegs die smoothing prosedure behels kyk, aangesien die res is reeds bekend teen hierdie tyd. Genormaliseer Blok Filter: OpenCV bied die funksie vervaag uit te voer glad met hierdie filter. Ons spesifiseer 4 argumente (meer besonderhede, kyk die Verwysingsgroep): src. Bron beeld dst. beeld bestemming Grootte (w, h). Definieer die grootte van die kern te gebruik (met wydte w pixels en hoogte h pixels) Punt (-1, -1). Dui aan waar die anker punt (die pixel geëvalueer) is geleë ten opsigte van die omgewing. As daar 'n negatiewe waarde, dan is die middelpunt van die kern is van mening dat die anker punt. Dit word gedoen deur die funksie GaussianBlur: Hier gebruik ons ​​4 argumente (meer besonderhede, kyk die OpenCV verwysing): aanwyser 8220Candle 038 TMA8 open8221 Hi almal, Hier is 'n aanduiding gekodeer vir een van die lesers van my webwerf. Ons koop as. bullish kers (naby GT oop) naby en oop GT driehoekige bewegende gemiddelde 8, toegepas op die laagste van die kers Dit TMA8 oop met ten minste 1 pit onder die TMA8 grootte van die minderwaardige skaduwee GT grootte van die liggaam grootte van die boonste skaduwee Dit 2 pitte geen doji. grootte van die liggaam GT 3 pitte Natuurlik, ons verkoop vir teenoorgestelde toestande. So hier is die code. No inligting op hierdie webtuiste is beleggingsadvies of 'n uitnodiging om 'n finansiële instrument te koop of te verkoop. Vorige prestasie is nie 'n aanduiding van toekomstige resultate. Trading kan blootstel jy risiko van verlies groter as jou deposito en is slegs geskik vir ervare beleggers wat voldoende finansiële middele om sodanige risiko dra. ProRealTime ITF lêers en ander aanhangsels: Nuwe PRC is ook nou op YouTube, inteken op ons kanaal vir eksklusiewe inhoud en tutoriale 58 poste 8226 62 Volgelinge 58 poste 8226 62 volgelinge Hou Gedagte px-Image Hoogte Verwante gebruikers poste Doctrading


No comments:

Post a Comment