Astronomija

„Python“ sąsaja, skirta DMK 23U274 USB kamerai astrofotografijai

„Python“ sąsaja, skirta DMK 23U274 USB kamerai astrofotografijai


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Aš turiu prieigą prie nespalvotos USB kameros (DMK 23U274, Vaizdo šaltinis) ir norėčiau įrašyti židinio plokštumos vaizdus iš mažo teleskopo su pitono scenarijumi, kuris jį valdytų nustatydamas ekspozicijos laiką ir suaktyvindamas vaizdo fiksavimą.

Idealiu atveju norėčiau, kad galėčiau tai atlikti naudodamas „Windows“ ar „MacOS“ nešiojamąjį kompiuterį arba „Raspberry Pi“, kuriame veikia „Raspbian Linux“, bet nežinau, ar tam viduryje reikės trijų skirtingų specialios programinės įrangos rinkinių (dll ar bet kokių kitų).

Ar yra platformos agnostikos būdų, kaip tai padaryti per USB? Jei ne, ar yra mėgėjų astronomų „Python“ sprendimų, galinčių veikti bent vienoje ar dviejose iš šių platformų?


Vienintelis dalykas, kurį radau, yra tai, bet jis būdingas tik „Windows“ ir atrodo, kad tai yra nebaigtas „Python“ paketas su neišspręstomis atminties nutekėjimo problemomis:

atnaujinimas: Aš taip pat radau šį „Python wrapper for IC Imaging Control SDK from the Imaging Source (TIS)“, kuris „veikia tik„ Windows “dėl DLL apvyniojimo“, todėl viltis gauti platformos-agnostinį „Python“ paketą blėsta.


„Python“ sąsaja, skirta DMK 23U274 USB kamerai astrofotografijai - Astronomija

„JetCam“ yra lengvai naudojama „Python“ kameros sąsaja, skirta „NVIDIA Jetson“.

Veikia su įvairiomis USB ir CSI kameromis, naudojant „Jetson“ pagreitintus „GStreamer“ papildinius

Lengvai skaitykite vaizdus kaip daugybę masyvų naudodami „image = camera.read“ ()

Nustatykite, kad fotoaparatas veiktų = Tiesa, jei norite pritraukti atgalinius skambučius į naujus kadrus

„JetCam“ leidžia lengvai prototipuoti AI projektus „Python“, ypač „JetCard“ įdiegtoje „Jupyter Lab“ programavimo aplinkoje.

Jei radote problemą, praneškite mums!

„JetCam“ yra testuojamas pagal sistemą, sukonfigūruotą naudojant „JetCard“ sąranką. Skirtingoms sistemos konfigūracijoms gali prireikti papildomų veiksmų.

Žemiau pateikiame keletą naudojimo pavyzdžių. Daugiau galite rasti sąsiuviniuose.

Skambinkite „CSICamera“, jei norite naudoti suderinamą CSI kamerą. „capture_width“, „capture_height“ ir „capture_fps“ valdys fiksavimo formą ir greitį, kuriuo vaizdai įsigyjami. plotis ir aukštis kontroliuoja galutinę vaizdo išvesties formą, kurią grąžina skaitymo funkcija.

Skambinkite „USBCamera“, jei norite naudoti suderinamą USB kamerą. Taikomi tie patys parametrai, kaip ir „CSICamera“, kartu su parametru „capture_device“, kuris nurodo įrenginio rodyklę. Įrenginio rodyklę galite patikrinti paskambinę ls / dev / video *.

Skambinkite read (), norėdami perskaityti naujausią vaizdą kaip numpy.ndarray duomenų tipo np.uint8 ir formos (224, 224, 3). Spalvų formatas yra BGR8.

Skaitymo funkcija taip pat atnaujina fotoaparato vidinės vertės atributą.

Taip pat galite nustatyti, kad fotoaparatas veiktų = True, kuris pagimdys giją, įgaunančią vaizdus iš fotoaparato. Tai automatiškai atnaujins fotoaparato vertės atributą. Naudodami „Traitlets“ biblioteką, prie vertės galite pridėti atgalinį skambutį. Tai iškvies atgalinį ryšį su nauja fotoaparato verte ir senąja fotoaparato verte

Šios kameros veikia su „CSICamera“ klase. Išbandykite juos vadovaudamiesi užrašų knygelės pavyzdžiu.

Modelis Infraraudonųjų spindulių FOV Rezoliucija Kaina
„Raspberry Pi“ fotoaparatas V2 62.2 3280x2464 $25
„Raspberry Pi“ kamera V2 (NOIR) x 62.2 3280x2464 $31
„Arducam IMX219 CS“ objektyvo laikiklis 3280x2464 $65
„Arducam IMX219 M12“ objektyvo laikiklis 3280x2464 $60
LI-IMX219-MIPI-FF-NANO 3280x2464 $29
„WaveShare“ IMX219-77 77 3280x2464 $19
„WaveShare“ IMX219-77IR x 77 3280x2464 $21
„WaveShare“ IMX219-120 120 3280x2464 $20
„WaveShare“ IMX219-160 160 3280x2464 $23
„WaveShare“ IMX219-160IR x 160 3280x2464 $25
„WaveShare“ IMX219-200 200 3280x2464 $27

Šios kameros veikia su „USBCamera“ klase. Išbandykite juos vadovaudamiesi užrašų knygelės pavyzdžiu.

Modelis Infraraudonųjų spindulių FOV Rezoliucija Kaina
„Logitech C270“ 60 1280x720 $18

„JetBot“ - mokomasis AI robotas, pagrįstas „NVIDIA Jetson Nano“

„JetRacer“ - mokomasis AI lenktyninis automobilis, naudojant „NVIDIA Jetson Nano“

„JetCard“ - SD kortelės vaizdas žiniatinklio programavimo dirbtiniams projektams su „NVIDIA Jetson Nano“


„Python“ sąsaja, skirta DMK 23U274 USB kamerai astrofotografijai - Astronomija

„Python“ sriegiuotų kamerų palaikymo tvarkaraščių rinkinys

  • USB ir vidinės kameros
  • RTSP srautai
  • MIPI CSI kameros („Raspberry Pi“, „Jetson Nano“)
  • „FLIR blackfly“ (USB)

Įprastai sąsajai su fotoaparatu pirmiausia naudojami „OpenCV“ arba „PySpin“. Pagrindinis šių procedūrų tikslas yra paleisti vaizdą fone ir rasti geriausius maksimalaus kadrų dažnio ir minimalaus delsos metodus.
Šis darbas pagrįstas Marko Omo ir Craigo Posto pastangomis.

[*] RTSP reikia integruoti „gstreamer“. CV2 reikės pritaikyti ant langų, kad būtų galima palaikyti „gstreamer“. Peržiūrėkite mano „Windows“ diegimo scenarijus „Github“.

blackflyCapture

Supaprastinami „Blackfly“ kamerai reikalingi nustatymai.
Palaiko paleidimą kadro ekspozicijos metu ir paleidimą kadro paleidimui.
Optimizuoti nustatymai, kad būtų pasiektas viso kadro dažnis naudojant „S BFS-U3-04S2M“.

„nanoCapture“

„Jetson Nano“ naudoja „gstreamer“ vamzdyną.
„Nvidia“ konversijos ir „nvarguscamera“ fiksavimo vamzdynas.
Nustatymai optimizuoti „Sony IMX219 Raspi v2“ moduliui.

Naudoja „cv2 capture“ architektūrą.
Vaizdo posistemis pasirenkamas atsižvelgiant į operacinę sistemą.

rtspCapture

„gstreamer“ pagrįstas „rtsp“ tinklo srautų fiksavimas visoms platformoms.
„gstreamer“ iškviečiamas per „OpenCV“.
Pagal numatytuosius nustatymus „OpenCV“ palaiko „ffmpeg“, o ne „gstreamer“. „Jetson Nano“ nepalaiko „ffmpeg“, tačiau tos platformos „opencv“ yra iš anksto sukonstruotas su „gstreamer“.

„Picamera“ modulio sąsaja. Depresija, nes „cav2Capture“ yra efektyvesnė „Raspberry Pi“.

Ekranas: Paprastai ekranas turėtų būti rodomas pagrindinėje programoje. Norint atnaujinti ekraną, „OpenCV“ reikalingas paleidimo raktas. Waikey trunka daug ilgiau nei 1 ms, todėl duomenų perdavimas tarp gijų žymiai sulėtėja pagrindinėje gijoje, jei to reikalaujama.

Eilė: Duomenų perdavimas tarp gijų arba tarp pagrindinės programos ir gijos veikia geriau naudojant „Queue“ nei nustatant naujus duomenų klastotes ir pasiekiant jas per bendrą atmintį. Eilė gali būti užprogramuota kaip blokuojanti arba neužblokuojanti, o jei eilės dydis yra pakankamai ilgas, duomenys neprarandami, jei pagrindinė gija negali trumpą laiką neatsilikti nuo fiksavimo gijos.

test_blackfly.py išbando „blackfly“ fiksavimo modulį ir praneša apie kadravimą.

test_blackfly_display.py išbando „blackfly“ fiksavimo modulį, rodo vaizdus * ir praneša kadrų dažnį.

test_blackfly_savehdf5.py tas pats, kas nurodyta aukščiau, be ekrano, bet išsaugoma diske.

test_camera.py vienijantis fotoaparato fiksavimą visoms fiksavimo platformoms, išskyrus „blackfly“.

test_rtsp.py tikrinti rtsp tinklo srautus.

test_display.py „opencv“ ekrano kadrų bandymas

test_savehd5.py disko pralaidumo testavimas naudojant hdf5

test_sum.py išbandyti skirtingus metodus, norint apskaičiuoti vaizdo realųjį / ryškumą

test_arraycopy.py testavimas, kuriam laikui reikia naudoti ašį

„Sony IMX287 FLIR Blackfly S BFS-U3-04S2M“

  • auto_exposure 0: automatinis, 1: rankinis
  • ekspozicija mikrosekundėmis
  • Maksimali skiriamoji geba 2592x1944
  • YU12, (YUYV, RGB3, JPEG, H264, YVYU, VYUY, UYVY, NV12, BGR3, YV12, NV21, BGR4)
  • 320x240 90 kadrų per sekundę
  • 640x480 90 kadrų per sekundę
  • 1280x720 60 kadrų per sekundę
  • 1920x1080 6.4fps
  • 2592x1944 6,4 kadrų per sekundę
  • auto_exposure 0: automatinis, 1: rankinis
  • ekspozicija mikrosekundėmis
  • Maksimali skiriamoji geba 3280x2464
  • YU12, (YUYV, RGB3, JPEG, H264, YVYU, VYUY, UYVY, NV12, BGR4)
  • 320x240 90 kadrų per sekundę
  • 640x480 90 kadrų per sekundę
  • 1280x720 60 kadrų per sekundę
  • 1920x1080 4.4fps
  • 3280x2464 2,8 kadrų per sekundę
  • 320x240, 30 kadrų per sekundę
  • YUY2
  • automatinis išlaikymas? 0,25, 0,74 -1. 0
  • WB_TEMP 4600
  • 1280 x 720, 30 kadrų per sekundę
  • 620x480, 30 kadrų per sekundę
  • 960x540, 30 kadrų per sekundę

„Python“ sąsaja, skirta DMK 23U274 USB kamerai astrofotografijai - Astronomija

Jei naudojate „Python Photo App“ ir pamatote kamerą Pasirinkite vaizdo įrenginį dialogo langas, rodomas paleidus programą, fotoaparatas turėtų būti prieinamas bet kurioje programoje, kurioje naudojama tiesioginė paroda.

Turiu „Logitech C270“ fotoaparatą, prijungtą prie „Windows 10“ sistemos.

Kai aš vykdau jūsų kodą ir pasirenku kamerą, paspauskite Gerai, akimirką matau vaizdą, tada programa tiesiog išeina, klaidos kodas nematomas.

Taip atsitinka, nesvarbu, ar kodą vykdau tuščiosios eigos redaktoriuje, ar tiesiogiai iš komandų eilutės.

Norėdami išsiaiškinti, apsvarstykite šį pavyzdį: 2 kameros pradžioje yra prijungtos prie kompiuterio. Paleidus programą, įrenginių sąrašas gaunamas iš get_input_devices () ir rodomas, kad vartotojas galėtų pasirinkti kamerą. Pasirinkus fotoaparatą fiziškai atjungiama ir dar kartą (programiškai) iškviečiama funkcija get_input_devices (), ar dabar ji grąžintų 1 kamerą taip, kaip turėtų, arba 2, kaip tai buvo pradžioje?

Ačiū už atsakymą. Taip, kiti pavyzdžiai veikia mano kompiuteryje. Tiesą sakant, turiu išvardyti UVC savybes ir pakeisti baltos pusiausvyros vertę naudodamas „dhsow“, užuot keisdamas dialogo langą, turiu pakeisti analizuodamas argumentus. Prašau padėti man keletą pavyzdžių ar idėjos, ačiū iš anksto.

Turite naujienų šia problema?
Bandydama paleisti main.py, gaunu panašią klaidą
„Amcap“ veikia gerai ir kiti pavyzdiniai kodai

ar yra koks nors būdas padidinti skiriamąją gebą? atrodo, kad viskas veikia tik 640x480

o kai programa atidaroma ir aš pasirenku „cammera“, nustatau „peoperties“ ir pasirinkite „taikyti“ ir „gerai“, programa visiškai uždaroma!

Niekada neskelbkite savo el. Pašto adreso jokiame forume, nebent jums labai patinka šlamštas! Jei kas nors jums atsakys, gausite el. Laišką, kuriame jums bus pranešta.

Neprašykite persiųsti, jei jūsų klausimas pasirodo ne iš karto: jie buvo nuosaikūs ir reikalavo, kad žmogus juos peržiūrėtų, kad juos paskelbtų. Norint išvengti to, kad jūs neišmestumėte iš šlamšto siuntėjo, abu turėjo būti priimti, o tada aš turiu išvalyti atsargines dalis. Prašau šiek tiek kantrybės!
Ištryniau kitą versiją.

Sveiki, gal galėtumėte patikslinti, ką turite omenyje veikdami „OpenCV“? Taip pat nurodykite, ką bandote padaryti.

Ačiū už atsakymą. Programuoju vaizdo atpažinimo scenarijų „Python“ ir „OpenCV“. Idėja yra užfiksuoti kadrą iš „Nintendo Switch“ ir paslėpti kai kuriuos „Pokemon“ mūšio elementus. Problema ta, kad kai kurios HDMI fiksavimo kortelės visų pirma neatpažįsta „OpenCV“ „Avermedia LGP“. „Avermedia“ svetainėje perskaičiau, kad joje naudojamas „Directshow“, kad patekčiau čia.

Problema: kai kuriose „Avermedia Capture“ kortelėse naudojamas „Directshow“ ir aš negaliu iš jų gauti rėmelių naudodamas „OpenCV“.

Mano scenarijus tai daro:
Padaro rėmelį: cv2.VideoCapture () ir capture.read ()
Pakeičia jo dydį, neryškina, apkarpo: cv2.resize () ir Masyvai
Spalvokite ją ir užklijuokite pasirinktinius vaizdus rėmelyje: cv2.bitwise_and (), cv2.bitwise_not (), cv2.add ()

Ką noriu padaryti: paimkite „Directshow“ rėmelį (iš „Avermedia Capture“ kortelių), tada pritaikykite tas funkcijas rėmui.

Čia yra mano scenarijus, jei norite pasižiūrėti: PokemonHideInfo.py - „Google“ diskas [^]

Dėkojame už išsamų atsakymą

„OpenCV“ tvarko vaizdo duomenis naudodamas „numpy“ masyvą, taigi, jei vaizdo duomenys yra „numpy“ masyvo pavidalu, „OpenCV“ galėtų juos rodyti / apdoroti. Iš kur gausite numerių masyvą, nesvarbu, kol jie turi galiojančią formą ir duomenų tipą. Taip pat galite tai patikrinti patys, sukurdami tam tikros formos „numpy“ nulių masyvą, pvz. (300,300,3) ir perduokite jį cv2.imshow (), ir jis parodys juodą vaizdą.

Grįžtant prie jūsų problemos, pakeičiau 3 pavyzdžio kodą, kad jis geriau atitiktų jūsų poreikius:

Funkcija xyz gauna rėmelį, kad galėtumėte atlikti visą jums patinkantį šios funkcijos apdorojimą. Atminkite, kad aukščiau pateiktame kode nėra kodo laikmatiui sustabdyti ir saugiai išeiti iš programos, todėl jums teks dirbti su šia dalimi.

Bendrosios naujienos Pasiūlymo klausimas Klaida Atsakymas Anekdotas Pagyrimas Rant Administratorius

Jei norite perjungti pranešimus, naudokite „Ctrl“ + „Kairė / Dešinė“, „Ctrl“ + „Aukštyn / Žemyn“, jei norite perjungti gijas, „Ctrl“ + „Shift“ + „Kairė / Dešinė“, jei norite perjungti puslapius.


Astrofotografija gali sukurti daug duomenų - kad ir kur būtų Saulės sistemos vaizdavimas, sukuriant kelis didelius AVI ar SER failus arba pasisekus vaizdus naudojant DS CMOS kameras trumpomis ekspozicijomis, sukuriant daug didelių FITS failų. Apdorojimo laikas gali tapti didele problema. Leidžia atlikti įvairių apdorojimo užduočių palyginimą.

Jupiterio vaizdavimo sezonas įsibėgėjęs, o Mėnulis taip pat niekur nedings. Yra mažiau žinomų būdų fotografuoti tuos objektus, kuriuos noriu čia patyrinėti.


38 mintys apie & ldquo biudžeto astrofotografiją su aviečių pi & rdquo

Panašu, kad atsimenu, kad akies obuolio formos internetinėje kameroje, pasirodžiusioje viduryje, yra įžemintas kaištis, kuris suteiktų jai nustatymą & # 8220bulb & # 8221, tai yra & # 8220 užraktas atidarytas iki & # 8230 & # 8221. Puikiai tinka fotografuoti astrologijoje. Crappy res, ir tikriausiai ne geresnis nei tai, kas yra „Samsung“ telefono kameros filmavimo vaizdo įraše.

Ak, senoji „BW Quickcam“. Tai buvo tikri CCD prietaisai su spausdintuvo prievado jungtimi (be USB) ir be lusto spalvų filtro. Pomėgiai astronomai darė ilgą ekspoziciją su jais Peltier aušinamuose apdirbtuose korpusuose. Mažos rezoliucijos ir triukšmingas, jei ne atvėsinamas iki -20 C, tačiau kai kurie vaikinai susiuvo nuostabius spalvų kompozitus (su rankiniais filtrais) ir daugybę planetų bei ūkų ekspozicijų.

Ilgesnio išlaikymo tikrai nereikia. Tiesiog atlikite daug trumpesnių išlaikymų ir sukraukite juos į programinę įrangą. Tai turi papildomą pranašumą, kai kompensuojamas mažiau tikslus stebėjimas.

Ne. Kiekvieną kartą, kai pridedate išlaikymą, kiekvienoje ekspozicijoje taip pat pridedate skaitymo triukšmą. Blyškios detalės bus pamestos. Kaip manote, kodėl astrofotografai išleidžia 1000 USD savo tvirtinimui, kad gautų vis ilgesnę ekspoziciją?

Tik neseniai pasirodė CCD kameros (ASI1600), kurios skaito triukšmą pakankamai mažai, todėl daugelio trumpesnių ekspozicijų kaupimas tampa perspektyvus. Trumpiau tariant, aš vis tiek turiu galvoje maždaug 1min, bet tai labai priklauso nuo tikslo / taikymo srities / ir pan.

Redaguoti: Aš turėjau omenyje tik neseniai pasirodžiusias CMOS kameras & # 8230

Kraunant iš tikrųjų padidėja SN santykis, tai yra labai dažnai naudojama astrofotografijos praktika, siekiant sumažinti triukšmą ir padidinti detalumą, kurį matote savo vaizduose, net mano naudojamose teleskopų / fotoaparatų sistemose, kurių vertė siekia 75 tūkst. USD. „Google Registax“ programinei įrangai tai padaryti ir paaiškinimas, kodėl ji veikia.

Kraunant iš tikrųjų padidėja SN santykis, tai yra labai dažnai naudojama astrofotografijos praktika, siekiant sumažinti triukšmą ir padidinti detalumą, kurį matote savo vaizduose, net mano naudojamose teleskopų / fotoaparatų sistemose, kurių vertė siekia 75 tūkst. USD. „Google Registax“ programinei įrangai tai padaryti ir paaiškinimas, kodėl ji veikia.

& # 8220Kai ne namuose, [boulingas] nustatė savo Pi, kad jis veiktų kaip belaidis prieigos taškas, tai leidžia Pi išsiųsti peržiūrą į savo telefoną ar planšetinį kompiuterį, kad būtų galima koreguoti prieš fotografuojant. & # 8221

Tikimės, kad DI bus visiškai apsaugotas.

o ne, jie pavogė mano dangaus paveikslą!

DI (teleskopų internetas)

Ar tas komentaras buvo būtinas?

Skaitydamas jo projekto detales ir matydamas, ką jis padarė kurdamas šį projektą, manau, kad jis puikiai žino saugumo ir dalykų prijungimo prie interneto problemas.

Tai nėra prisijungęs prie interneto, nors aš ir galvojau, kad kai kurie pagalvojo :-) Veikdamas kaip AP, tiesiog lengva prisijungti, jei aš jį išvedu į tamsią vietą, kad nereikėtų rankiniu būdu. nustatykite tinklo parametrus įrenginyje, iš kurio jungiatės.

Tai gerai. Esu įsitikinęs, kad yra keletas įdomių dalykų, kuriuos galima padaryti, kai vienas tinklas teleskopus sujungia kartu. Jau nekalbant apie pasidalijimą linksmybėmis su tais, kurie negali sau leisti teleskopo.

Nuostabūs ir # 8211 tokie projektai kaip šis ir # 8211 maksimaliai išnaudoja tai, ką jūs gulėjote

Panašu, kad tai vis dar naudojama senoji 5MP kamera. Naujas (V2) 8MP fotoaparatas būtų malonus atnaujinimas ne tik dėl didesnės skiriamosios gebos, bet ir dėl geresnės vaizdo kokybės.

Turite žinoti tikslias jutiklio specifikacijas, kad nustatytumėte, jog jei jūsų silicio plokštė yra ketvirčio ploto, akivaizdu, kad jūs sugausite tik ketvirtadalį fotonų, kuriuos padarėte su senuoju. Ne problema dėl ryškių vaizdų, problema dėl blankių.

Taip, kadangi abu jutikliai yra vienodo dydžio, 8MP jutiklis bus mažesnis. Skirtumas yra 1,25 um ^ 2 verus 1,96 um ^ 2, kuris suteikia jums

50% didesni 5MP jutiklio pikseliai. Tačiau 5 MP jutiklis („Omnivision OV5647“) yra gana senas dizainas, o 8MP versijoje naudojamas palyginti naujas „Sony IMX219“ jutiklis, kuris turėtų būti pranašesnis daugeliu aspektų. Deja, iš duomenų lapų nėra per daug & # 8220hard duomenų & # 8221, kuriuos būtų galima tiesiogiai palyginti tarp abiejų jutiklių, tačiau daugelis žmonių, išbandžiusių abu jutiklius, praneša apie geresnes prasto apšvietimo sąlygas ir geresnį naujojo signalo ir triukšmo santykį fotoaparato modulis.

Ribojamas 6 sekundžių išlaikymas

Turi būti kažkoks būdas apimti tą ribotą, kas nors? & # 8230

Tai nėra filmas, todėl vienas ilgas išlaikymas nėra naudingas fotoaparato vaizdo jutikliui.
Filme kaupiasi fotonai, kurie ilgainiui pateikia daugiau detalių.
Bet nemaniau, kad vaizdo jutiklis veikė taip.
Maniau, kad tai tik darė vaizdus ir juos apibendrino.
Iš esmės sujungiami keli vaizdai.
Taigi galite padidinti savo & # 8220paveikslėlį & # 8221 tiesiog nufotografuodami daugiau vaizdų ir juos apdorodami, kad gautumėte vieną perdengtą kompozitą. Suteikti jums ekspoziciją tol, kol norite.

Tai skamba geriau nei aš įsivaizdavau. Manau, kad atliksiu keletą tyrimų, kaip tiksliai užfiksuoti CCD, nebent kas nors paskelbtų nuorodą iki to laiko, kai aš pabusiu & # 8230

Ar tai rado: https://sites.google.com/site/meteotuxpi/home
Iš esmės tai, ką sakėte, sujungdami kelias trumpąsias ekspozicijas į vieną.

Su idealiu jutikliu be triukšmo, taip. Tačiau visada bus tam tikros triukšmo grindys, žemiau kurių negalėsite atkurti bet kokio tinkamo naudoti signalo. Kadangi dauguma kosmoso objektų yra gana blankūs (išskyrus planetas / mėnulį), jūs neužfiksuojate daug fotonų. Turite įsitikinti, kad jūsų individuali ekspozicija yra pakankamai ilga, kad silpniausia norima atvaizduoti dalis būtų aukščiau triukšmo grindų. Tada, kaip sakėte, galite sujungti arba & # 8216krauti & # 8217 kelias ekspozicijas kartu, kad padidintumėte signalo ir triukšmo santykį ir išryškintumėte tas nuostabias galaktikas ir ūką, kurių kitaip niekada nematytumėte!

Tai geriausias kol kas matomo krovimo paaiškinimas. Dėkoju!

Tikros astrofotografijos kameros yra atšaldomos iki maždaug -30 ° C, kad sumažėtų triukšmas (http://diffractionlimited.com/product/stt-8300/). Taip pat imate tamsių rėmelių, kad kompensuotumėte pikselius, kurie yra triukšmingesni nei kiti, ir plokščius rėmelius, kad kompensuotumėte netolygų vaizdo apšvietimą visame jutiklyje. Jūs sukraunate kelias valandas ekspozicijų, naudodami gana puikią programinę įrangą, kuri gali automatiškai perklijuoti vaizdus po to, kai neišvengiamai paveiks vaizdas jutiklyje dėl teleskopo laikiklio ir # 8217s poliarinio išlyginimo trūkumų ir nukreipia variklio greitį. Tuomet valandų valandas apdoroji vaizdą, bandydamas pritraukti silpnus signalus iš foninio triukšmo piliakalnių.

Tai tikrai gana įtrauktas procesas, kurį aš dariau iki tol, kol pamiegodamas pastebėjau, kad gyvenu geriau.

Tai tik dalis istorijos ir supaprastinimas kai kuriais atvejais gali būti klaidinantis ir iš tikrųjų sukelti žemesnės kokybės matavimus.
Jūs neturite atkurti signalo iš žemiau triukšmo grindų & # 8221, tai visada yra tik signalo į triukšmą klausimas. Paprastai:
Signalas = Isignal * texp * Nexp,
Triukšmas = sqrt („Idark“ * texp * „Nexp“ + „qread“ * „Nexp“)
Taigi turite SNR = Isignal * texp * Nexp / sqrt („Idark“ * texp * Nexp + qread * Nexp)

Kitaip tariant, jūsų detektoriui nerūpi, ar integruojate tamsią srovę, ar signalą, ar integruojate 1x 100s ar 100x 1s & # 8211, integruotas signalas yra „Isignal x 100s“ ir integruotas triukšmo krūvis yra „Idark x 100s“ elektronai abiem atvejais.
Nors skiriasi skaitymo triukšmas: ne sferiniame karvės vakuume detektoriuje kiekvieną kartą perskaitydami patiriate papildomų triukšmo elektronų, todėl mūsų pavyzdyje abiem atvejais turėsite tą patį signalą, bet triukšmas sqrt („Idark x 100s + qread“) vienu atveju, sqrt („Idark x 100s + 100x qread“) kitu atveju.

* Štai kodėl paprastai apsimoka eksponuoti ilgiau, o ne dažniau.

Tačiau viskas yra sudėtinga, pvz. tai, kad detektoriai negali palaikyti savavališkai didelio signalo, todėl jūs negalite savavališkai ilgai integruotis. Yra atvejų, kai tai taip riboja, kad detektorius labai greitai prisisotins nuo tamsios srovės, todėl norėsite skaityti dažnai, neilgai! Kita vertus, jūs galite dažnai atvėsinti detektorius iki lygio, kai tamsi srovė tampa nereikšminga (kelios ar net žemesnės nei viena e-ekspozicija), ir žaisti gudrybes su rodmenimis (pvz., Lavinos stiprinimo pakopos ar stalo teniso rodmenys) iki lygio skaitymo triukšmas tampa nereikšmingas. Abiem atvejais padidėja jų sudėtingumas ir jų pačių įspėjimų rinkiniai, kurie riboja našumą kai kuriose srityse.

Taigi, nors internetinių kamerų vaizdų kaupimas mėgėjų astrofotografijos nustatymuose nėra toks geras, kaip ilgos ekspozicijos su atvėsusiu CCD, galų gale geriausias matavimas - kaip visada - priklauso nuo tikslios matavimo problemos ir nustatymo & # 8230

Tai neteisinga.
Ilgesnė ekspozicija naudinga tiek filmui, tiek elektronikai. Jutikliai ir # 8217 fotosistemos sukuria tiesinį atsaką (kiekvieno pikselio vaizdo intensyvumas bus proporcingas juos pataikiusių elektronų skaičiui). Esminis skirtumas su plėvele yra tas, kad emulsijos grūdeliai (natūraliai) reaguoja logaritmiškai, išskyrus atvejus, kai vaizdas yra per mažai arba per daug eksponuojamas.


Įvairius „xiAPI“ parametrus galima nustatyti arba nuskaityti naudojant „XIMEA Python“ funkcijas, kurios generuojamos iš pastovių „xiAPI“ parametrų eilutės apibrėžimų.

Surašytojo parametrai ir para

Priešdėliai gauti_ ir rinkinys_ prie pastovios eilutės apibrėžimo pridedami tokiu būdu:
XI_PRM_ACQ_TIMING_MODE parametrui acq_timing_mode yra pastovi eilutė, todėl Python XIMEA API yra funkcijos get_acq_timing_mode () ir set_acq_timing_mode ():

Grąžinta vertė yra eilutė, todėl patikrinus išlaikytą vertę galima palyginti su kita eilute:

Ne loginiai parametrai ir para

Priešdėliai gauti_ ir rinkinys_ pridedami taip pat, kaip ir surašytojo parametrai:
Pvz. XI_PRM_EXPOSURE parametrui, "poveikis" yra pastovi eilutė, todėl Python XIMEA API yra funkcijos get_exposure () ir set_exposure ():

Nustatant XI_PRM_FRAMERATE parametrą į 10, komandos bus:

Atkreipkite dėmesį, kad vertė XI_ACQ_TIMING_MODE_FRAME_RATE veikia tik su MQ ir MD kameromis. Daugiau informacijos apie fiksuoto kadro nustatymą galite rasti „xiAPI Manual“ ir mūsų žinių bazės straipsnyje „Frame Rate Control“.

Būlo parametrai ir para

Ta pati logika naudojama loginiams parametrams, kur yra priešdėliai yra_, įgalinti_ ir išjungti_ yra naudojami tokiu būdu:
XI_PRM_HORIZONTAL_FLIP parametrui "horizontal_flip" yra pastovi eilutė, todėl Python XIMEA API yra funkcijos is_horizontal_flip (), enable_horizontal_flip () ir disable_horizontal_flip ():

Bendra sąsaja ir para

Parametrams nustatyti ar gauti galima naudoti get_param (arg) ir set_param (arg) funkcijos, kur kaip arg yra naudojama pastovi konkretaus parametro eilutė tokiu būdu:

Abu požiūriai galioja.


Yra API funkcijų rinkinys, leidžiantis pasiekti „ArduCAM“ USB kameros aparatinę įrangą.

4.1. Duomenų struktūros

Yra svarbios duomenų struktūros, kurias SDK biblioteka naudoja kameros konfigūracijai.

4.1.1 „ArduCamCfg“ duomenų struktūros nariai

u32CameraTypenepasirašytas ilgas, skirtas naudoti ateityje
u32Aukštisnepasirašytas ilgas, vaizdo srauto aukštis
u32Plotisnepasirašytas ilgas, vaizdo srauto plotis
„u8PixelBytes“nepasirašyta simbolis, vieno pikselio baitų skaičius
„u8PixelBits“nepasirašyta simbolis, taškų gylis
„emI2cMode“enum tipo i2c_mode, jutiklio I2C protokolas
u32I2cAddrnepasirašytas ilgas jutiklio I2C vergo adresas
u16Vidnepasirašytas trumpas, kameros pardavėjo kodas
usbTypenepasirašyta simbolis, USB kameros versija
„emImageFmtMode“enum type format_mode, Vaizdo formatas
u32Dydisnepasirašytas ilgas, gaunamų duomenų dydis, daugiausia naudojamas JPG duomenims

SDK biblioteka palaiko 4 skirtingus I2C režimus. Pavyzdžiui, I2C_MODE_8_8 yra 8 bitų registro ir 8 bitų registro vertė, I2C_MODE_8_16 - 8 bitų registro ir 16 bitų registro vertė.

SDK biblioteka palaiko 7 skirtingus vaizdo formato režimus.

4.2 Funkcija

4.2.1 Bendroji funkcija

4.2.1.1 Py_ArduCam_autoopen (plg.)

Ši funkcija naudojama automatiškai atidarant palaikomas kameras, kai USB magistralėje randama pirmoji kamera, kuri atitiko „ArduCamCfg“ struktūros kameros pardavėjo kodą.

1 parametras: „ArduCamCfg“ struktūros egzempliorius „Return vale“: klaidos kodas, rankena, cfg

4.2.1.2 Py_ArduCam_scan ()

Nuskaitykite, kiek palaikomų kamerų yra USB magistralėje, ir grąžinkite kameros rodyklę bei fotoaparato serijos numerį.

Grįžimo vožtuvas: palaikomų kamerų, rodyklių, serialų skaičius

4.2.1.3 Py_ArduCam_open (cfg, rodyklė)

Paprastai jis naudojamas su nuskaitymo metodu ir atidarykite kamerą su fotoaparato rodykle. 1 parametras: „ArduCamCfg“ struktūros egzempliorius

2 parametras: fotoaparato rodyklė, rankena, CFG Grąžinimo vožtuvas: klaidos kodas

4.2.1.4 Py_ArduCam_close (rankena)

Uždarykite dabartinę kamerą už fotoaparato rankenos. 1 parametras: USB kameros egzemplioriaus rankena. „Return vale“: klaidos kodas

4.2.1.5 Py_ArduCam_getSensorCfg (rankena)

Gaukite USB kameros egzemplioriaus konfigūracijos parametrą. Param1: valdykite USB kameros egzempliorių

Grąžinimo vertė: klaidos kodas, cfg

4.2.1.6 Rekomenduoti darbo tvarką

4.2.2 Vaizdo fiksavimo funkcija

4.2.2.1 Py_ArduCam_beginCaptureImage (rankena)

Sukurkite ir paruoškite vaizdų fiksavimo užduočių sąrašą. 1 parametras: USB kameros egzemplioriaus rankena. Grąžinimo vertė: klaidos kodas

4.2.2.2 Py_ArduCam_captureImage (rankena)

Paleiskite vaizdo fiksavimo užduotį.

1 parametras: USB kameros egzemplioriaus rankena. Grąžinimo vertė: klaidos kodas

4.2.2.3 Py_ArduCam_endCaptureImage (rankena)

Sunaikinkite vaizdo fiksavimo užduočių sąrašą.

1 parametras: USB kameros egzemplioriaus rankena. Grąžinimo vertė: klaidos kodas

4.2.2.4 Rekomenduoti darbo tvarką

4.2.3 Vaizdo skaitymo funkcija

4.2.3.1 Py_ArduCam_availableImage (rankena)

Patikrinkite, ar vaizdą galima skaityti FIFO paveikslėlyje. 1 parametras: valdykite USB kameros egzempliorių

Grąžinimo vertė: galimų vaizdų skaičius

4.2.3.2 Py_ArduCam_readImage (rankena)

Perskaitykite vieno vaizdo duomenis iš paveikslėlio FIFO. 1 parametras: USB kameros egzemplioriaus rankena. Grąžinimo vertė: klaidos kodas, duomenys, cfg

4.2.3.3 Py_ArduCam_del (rankena)

Ištrinkite vaizdo duomenis iš paveikslėlio FIFO. Param1: valdykite USB kameros egzempliorių. Grąžinimo vertė: klaidos kodas

4.2.3.4 Py_ArduCam_flush („ArduCamHandle useHandle“)

Išvalykite visus vaizdo duomenis iš paveikslėlio FIFO. Param1: valdykite USB kameros egzempliorių. Grąžinimo vertė: klaidos kodas

4.2.3.5 Rekomenduoti darbo tvarką

4.2.4 Prieigos prie jutiklių registro funkcija

4.2.4.1 Py_ArduCam_writeSensorReg (rankena, regAddr, val)

Parašykite jutiklių registrą.

1 parametras: rankena į USB kameros egzempliorių Param 2: užrašomas registro adresas 3 parametras: reikšmė, kurią reikia užrašyti

4.2.4.2 Py_ArduCam_readSensorReg (rankena, regAddr)

1 parametras: rankena į USB kameros egzempliorių 2 parametras: registro adresas, kurį reikia perskaityti. Grąžinimo vertė: klaidos kodas, regValue

4.2.5 Vartotojo duomenų prieigos funkcija

Yra 1024 baitų „flash“ atmintis, skirta saugoti vartotojo nustatytus duomenis.

4.2.5.1 Py_ArduCam_writeUserData (rankena, u16Addr, u8Len, duomenys)

Rašykite duomenis į vartotojo regioną.

1 parametras: valdykite USB kameros egzempliorių

2 parametras: vartotojo regiono adresas, kurį reikia užrašyti, svyruoja nuo 0

3 parametras: duomenų ilgis, kurį reikia rašyti (ilgis ≤32 , adresas + ilgis ≤1024) 4 parametras: duomenys, kuriuos reikia rašyti

4.2.5.2 Py_ArduCam_readUserData (rankena, u16Addr, u8Len)

Rašykite duomenis iš vartotojo regiono.

1 parametras: valdykite USB kameros egzempliorių

2 parametras: skaitytinas vartotojo regiono adresas yra nuo 0

3 parametras: duomenų ilgis, kurį reikia perskaityti (ilgis ≤32 , adresas + ilgis ≤1024) Grąžinimo vertė: klaidos kodas, duomenys

4.2.6 Kameros plokštės konfigūracija

Plokštės konfigūravimo funkcija naudojama norint nustatyti teisingas registro ar programinės aparatinės įrangos reikšmes aparatinei įrangai skirtingam darbo režimui. Išsamiau žr. 5 skyrių.

4.2.6.1 Py_ArduCam_setboardConfig (rankena, u8Command, u16Value, u16Index, u32BufSize, duomenys)

Parašykite plokštės konfigūracijos duomenis.

1 parametras: valdykite USB kameros egzempliorių. 2 parametras: pardavėjo komandos kodas

3 parametras: pardavėjo komandos vertė 4 parametras: pardavėjo komandos indeksas 5 parametras: duomenų buferio dydis

4.2.7 Išorinis paleidiklis

Išorinio paleidimo režimui reikalinga naujausia aparatinės ir programinės aparatinės įrangos parama. Jei programinės aparatinės įrangos versija nepalaiko išorinio suaktyvinimo, grįš ši funkcija: USB_BOARD_FW_VERSION_NOT_SUPPORT_ERROR

4.2.7.1 Py_ArduCam_setMode (rankena, režimas)

Ši funkcija naudojama norint nustatyti darbo režimą tarp išorinio paleidimo režimo ir nepertraukiamo režimo.

1 parametras: valdykite USB kameros egzempliorių

2 parametras: režimas EXTERNAL_TRIGGER_MODE arba CONTINUOUS_MODE

4.2.7.2 Py_ArduCam_isFrameReady (rankena)

Ši funkcija patikrina, ar yra pasirengęs skaityti rėmelis. 1 parametras: valdykite USB kameros egzempliorių

Grąžinimo vertė: 1 paruoštas arba 0 neparengtas

4.2.7.3 Py_ArduCam_softTrigger (rankena)

Ši funkcija naudojama kamerai suaktyvinti vaizdą naudojant programinę įrangą, o ne iš išorinio paleidiklio įvesties.

1 parametras: USB kameros egzemplioriaus rankena. Grąžinimo vertė: klaidos kodas

4.2.7.4 Py_ArduCam_getSingleFrame (rankena, time_out = 1500)

Šis metodas gali būti naudojamas norint nuskaityti vieną kadrą su programine įranga arba išorinio paleidimo režimu. 1 parametras: valdykite USB kameros egzempliorių

2 parametras: numatytasis skirtasis laikas milisekundėmis yra 1500 ms. Grąžinimo vertė: klaidos kodas

4.2.7.5 Rekomenduoti darbo tvarką


Vaizdų apdorojimas naudojant „Raspberry Pi“ ir „Python“

„Raspberry Pi“ turi specialų fotoaparato įvesties prievadą, kuris leidžia vartotojams įrašyti HD vaizdo įrašus ir didelės raiškos nuotraukas. Naudodamiesi „Python“ ir specialiomis „Pi“ parašytomis bibliotekomis, vartotojai gali sukurti įrankius, kurie fotografuoja ir vaizduoja vaizdo įrašus, juos realiuoju laiku analizuoja arba išsaugo vėlesniam apdorojimui. Šioje pamokoje naudosiu „5MP picamera v1.3“ nuotraukoms fotografuoti ir analizuoti jas naudojant „Python“ ir „Pi Zero W“. Tai sukuria savarankišką sistemą, kuri galėtų veikti kaip elemento identifikavimo įrankis, apsaugos sistema ar kitas vaizdo apdorojimo būdas. taikymas. Tikslas yra nustatyti vaizdo įrašų ir vaizdų įrašymo į Pi pagrindus, taip pat naudojant „Python“ ir statistiką tiems vaizdams analizuoti.

Dalių sąrašas ir „Picamera“ laidai

Šiai pamokai reikalingos tik dvi esminės dalys: „Raspberry Pi“ ir „picamera“. Yra dvi picameros, tačiau aš naudosiu senesnę ir pigesnę versiją V1.3, kuri yra 5MP kamera, galinti įrašyti HD vaizdo įrašus. Lygiai taip pat turėtų veikti ir kita fotoaparatas - V2, kuris gali pasigirti 8MP, bet ta pačia vaizdo kokybe. Neįsivaizduoju, kad tarp jų yra taikymo skirtumų, todėl tęsiu prielaidą, kad abiejų pakanka.

„Raspberry Pi Zero W“ su kabeliais - 22,80 USD [„Amazon“ “

„Picamera“ prijungimas prie „RPi“ yra gana paprastas - tiek „picamera“, tiek „Pi“ turi juostelės įvestis, kur įvedamas storas juostos kabelis. „RPi Zero“ juostos kabelis siaurėja iki plonesnio profilio, kur reikia prijungti Pi. Sidabriniai takeliai visada turi liestis su takeliais, prie kurių jis yra prijungtas - būkite atsargūs, nes to nesuklysite, nes juostos takeliai gali būti pažeisti, jei juosta bus neteisingai įkišta į „Pi“ arba „picamera“ angas. Jei laidai vis dar neaiškūs, žiūrėkite žemiau esantį vaizdą. Pritraukdami juostelę prie angos, atkreipkite dėmesį į juodą juostą, nukreiptą į viršų. Tiek „Picamera“, tiek „Pi Zero“ lizdams reikia laikyti juodą juostelę toje pačioje pusėje kaip ir baltas korpusas.

Tinkamas „Picamera“ laidų prijungimas prie „RPi Zero W“

„Picamera“ ir „Python“ „Picamera“ įrankių dėžutės testavimas

Yra daugybė „pradžios naudojant„ picamera ““ vadovėlių, todėl aš tik paminėsiu keletą rekomenduojamų vadovėlių ir trumpai paaiškinsiu, kaip paruošti „picamera“ naudoti su „Pi“ ir „Python“. Geriausios „pradžios“ pamokos pateikiamos žemiau:

Pradinis taškas norint, kad „picamera“ veiktų, yra užtikrinti, kad jis būtų įjungtas „Raspberry Pi“ konfigūracijoje. You can do this (most simply) by going to ‘Preferences->Raspberry Pi Configuration’ and selecting the ‘interfaces’ tab, and finally clicking ‘enable’ next to the camera option. Then click OK. The Pi may need to restart after this process. The visual steps are shown below for reference.

Once the camera module is enabled, it’s time to verify that the version of Python being used has the picamera library installed. The easiest way to do this is to open up IDLE (I’m using Python 3.5.3), and import the picamera module as shown below:

If an error results after the import, then follow the instructions outlined in the picamera Python installation page (link here). If there was no error, we can proceed and verify that Python is communicating properly with the picamera and the camera is functioning as expected.

The code below outputs a 5 second full screen preview, takes a static image, and saves it as a .jpg file. Upon verification of the saved image, we can conclude that the picamera and Python picamera library are working together, and the image processing portion of this tutorial can begin.

For analysis reasons, objects of red, green, and blue were chosen to match the sub-pixel receptors of the camera (red, blue, green - RGB). I selected three breadboards, one of each color, as my test objects. The full-scale image (2560x1920 pixels) is shown below and was taken using the method given in the code above.

Raw Output (cropped) From The Raspberry Pi Camera

The quality of the photo is quite poor and this is due to the relatively low resolution of the camera (only 5MP) and the lack of processing routines available in most modern cameras. The poor quality is not important for our analysis, as much of what will be explored will involve general shapes and colors in images - something that doesn’t require sharpness or visually pleasure color palettes.

Using Python to Plot Raw Image Data

Numpy and matplotlib will be used to analyze and plot images taken by the picamera. To start, the simplest method for plotting the images is using matplotlib’s ‘imshow’ function, which plots all three RGB colors in a traditional format seen by the human eye. The code for showing an image using this method is shown below:

The plot should look something like the figure below, where the image’s origin is the top left corner of the plot. We will be using this as the general layout for analyzing the images taken by the picamera.

Next, we can decompose the image into its three color components: red, green, and blue. The code to do this is shown below, with an example plot showing the true color image with its three color components.

Differentiating RGB with Python

As a simple introduction into image processing, it is valid to begin by analyzing color content in an image. This can be done using a multitude of statistical tools, the easiest being normally distributed mean and standard deviation. With the image above, we can take each RGB component and calculate the average and standard deviation to arrive at a characterization of color content in the photo. This will allow us to determine what colors are contained in the image and to what frequency they occur. Since we have three identical red, blue, and green objects - we would expect each object to produce a unique color signature when introduced into the frame of the camera.

First, we need consistency from the picamera, which means we need to ensure that the picamera is not changing its shutter speed or white balance. I have done this in the code below. Next, we need to establish the background information contained in the frame of the image. I do this by taking an image of the white background (no colors) and using the data as the background ‘noise’ in the image frame. This will help us identify unique changes in color introduced into the frames by the RGB breadboards. The code for all of this, plus the mean and standard deviation of the frame is given below. Using the code below, we can identify whether a red, blue, or green breadboard has been introduced into the frame.

The code should print out the mean and standard deviation of each color component, and also predict the color of the object inserted into the frame. A sample printout is shown below:

The user may notice that complications arise when multiple colors are present in the image. This is because the background information has drastically changed with the introduction of multiple colors. This results in uneven statistical relevance in the reading of each color when compared to the background noise. Therefore, for multiple object color recognition, more complex spatial tools are needed to identify regions of colors. This is a complication that will be reserved for the next entry into the image processing series.

A video demonstration of this is given below:

Conclusion and Continuation

In the first entry into the Image Processing Using Raspberry Pi and Python, the picamera and its Python library were introduced as basic tools for real-time analysis. Additionally, simple tools for plotting an image and its components were explored, along with more complex tools involving statistical distributions of colors. The combination of picamera and Python is a powerful tool with applications where differentiating colors may be of importance. One application comes to mind involving industrial quality control, where color consistency may be of utmost importance. Moreover, the ability to analyze images in real-time is a tool that exists in many technologies ranging from smartphone facial recognition, to security systems, and even autonomous vehicle navigation. For the next entry in the Image Processing tutorial series, spatial identification tools will be explored with applications in object detection and color classification.


Python interface for DMK 23U274 USB camera for astrophotography - Astronomy

Employ both supervised and unsupervised machine learning, to make predictions or to understand data.

Learn how to use Python with Pandas, Matplotlib, and other modules to gather insights from and about your data.

Learn the basics and concepts of working with quantum computers and qubits through practical applications and the Qiskit package.

Create your own games with Python's PyGame library, or check out the multi-platform Kivy.

Learn the basic and intermediate Python fundamentals.

Not a problem, learn the basics of programming with Python 3 here!

How to develop websites with either the Flask or Django frameworks for Python.

Creating various software bots, like bots in games, in chats, and to interact with the web. Not to be confused with robotics!

Control hardware with Python programming and the Raspberry Pi.

Create software with a user interface using Tkinter, PyQt, or Kivy.

Go is a programming language aimed at being simple, easy to work with, and capable of high performance.