Uvod U ovom članku želim podijeliti svoje iskustvo razvijanja iOS aplikacije za robotički mikroskop s prepoznavanjem krvnih stanica zasnovanim na AI-u - kako je izgrađen, izazovi koje smo morali riješiti, zamke s kojima smo se susreli i kako se iPhone može koristiti kao laboratorijski alat. Ovo nije još jedna aplikacija za listu zadataka sa autentifikacijom ili aplikacijom za primjenu filtera na selfije - fokus je ovdje na video toku iz očiju mikroskopa, neuronskim mrežama, interakciji hardvera, pokretu slajdova pod kontrolom Bluetooth-a i sve to koje se pokreće direktno na iPhone-u. A Few Words About the Product Čak i sa modernim hematološkim analizatorima, do 15% uzoraka i dalje zahtijeva ručno ispitivanje pod mikroskopom – pogotovo kada se anomalije pronađu u krvi. Automatizovani mikroskopski sustavi postoje, ali koštaju koliko krilo aviona, zbog čega većina laboratorija nastavlja ručno ispitivati krvne mrlje. Mi to radimo drugačije: naše rješenje pretvara standardni laboratorijski mikroskop u digitalni skener sa automatskim slide hranjenjem i snimanjem slika – jednostavno, pristupačno i efikasno. A tim u . @anđeo3 Sljedeći članakCelulit Komplet se povezuje sa standardnim laboratorijskim mikroskopom, pretvarajući ga u digitalni skener. Njegove hardverske komponente uključuju: iPhone – kontrola sistema, analiza ćelija Adapter objektiva – povezivanje pametnog telefona sa očima mikroskopa Robotska faza – omogućuje pokret slajdova, kontrolu fokusiranja i prebacivanje između uzoraka Na softverskoj strani, sistem se sastoji od: Mobilna aplikacija za iPhone Kontrolor na pozornici Web portal / oblak Mobilna aplikacija obavlja sledeće zadatke: obrađuje tok slike iz kamere, detektira, klasificira i broji ćelije šalje ih na web server zajedno s drugim analitičkim artefaktima upravlja pokretom robotičke faze, vršeći skeniranje podmazivanja prema unaprijed definisanom algoritmu i odgovoran je za konfiguraciju i inicijaciju analize, podešavanja parametara kamere, pregledavanje kratkog izveštaja o analizi i druge povezane zadatke Web portal je namijenjen za pregled rezultata, potvrdu liječnika analize, i izveštaj izvoza. Pokaži kako sve funkcioniše zajedno: Videozapis A Bit of Context About Hematological Diagnostics Primarna analiza koju obavljamo je mikroskopija krvarenja krvi. To je sastavni deo kompletnog broja krvi (CBC), jedan od najčešćih i temeljnih medicinskih testova. Mnogi ljudi su ga podvrgnuti i vidjeli su slične tabele u svojim rezultatima ( Posebno : Izvor Prilikom izvođenja CBC, uzorci krvi se obrađuju pomoću hematološkog analizatora. Ako uređaj ukazuje na odstupanje od norme, uzorak se podvrgava mikroskopskom ispitivanju. Ovaj proces izgleda kako slijedi: laboratorijski tehničar stavlja kap krvi na staklenu slajd, mrlja ga metodom Romanovskog (ili sličnim alternativama<)1, popravlja ga, i pregledava pripremljenu mrlju pod mikroskopom vizualno. Upravo u ovoj fazi možete: otkrivanje abnormalne ćelijske morfologije (kao što su nezreli neutrofili, atipični limfociti, stanice eksplozije), procjenu zrelosti, veličine, granularnosti, inkluzija i drugih parametara, i ponekad čak napraviti preliminarnu dijagnozu prije dobijanja PCR2 ili ELISA3 podataka. But manual analysis is painful: Vrlo je subjektivno, zavisi od iskustva tehničara, Ljudi su skloni umoru i greškama, I to se ne skalira dobro. Automatizovani mikroskopski sustavi su odlični, ali su skupi (počevši od 60.000 dolara i više), zbog čega se više od 90% laboratorija i dalje oslanja na ručni način! Postavili smo sebi cilj stvaranja pristupačnog kompleksa za automatizaciju mikroskopa (u roku od nekoliko stotina hiljada rubalja) koji bi mogao biti široko raspoređen u laboratorijama. [1] - Uzorak krvi na diapozitivu tretiran je posebnom mrljom koju je razvio Dmitrij Leonidovich Romanovsky (1861-1921). Ova mrlja čini različite komponente krvnih stanica vidljivijima pod mikroskopom, jer su one obojene u različitim bojama [2] - PCR (Polymerase Chain Reaction) omogućava otkrivanje čak i vrlo malih količina genetskog materijala, kao što su virusi ili bakterije, što je ključno za dijagnosticiranje zaraznih bolesti. [3] - ELISA (Enzyme-Linked Immunosorbent Assay) se koristi kada je važno otkriti prisutnost specifičnih proteina What the iPhone Is Capable Of Kada govorimo o “AI na pametnom telefonu”, većina ljudi zamišlja stvari kao što su filteri kamere, automatsko punjenje teksta ili chatbots.Ali moderni iPhoni su mini-računala sa posvećenim neuronskim modulima koji mogu obavljati ozbiljne zadatke – u našem slučaju, analizu krvnih stanica u realnom vremenu. Graphics Processing Unit (GPU). Koristi se za operacije slike: preprocesiranje, filtriranje, korekcija. Na primer: procjena blur, korekcija boja, uklanjanje artefakata i druge specifične zadatke vezane za grafiku i analizu slike. Neural Processing Unit (NPU / Neural Engine). Apple je integrisao Neural Engine u svoje uređaje počevši od A11 čipa (iPhone 8 / X), a od A12 (iPhone XR i noviji), već je moguće izvršiti preko 5 trilijuna operacija po sekundi na NPU (TOPS). U trenutku pisanja, najnoviji A17 Pro i A18 / A18 Pro čipovi su sposobni za 35 TOPS. Ovo se koristi za zaključavanje modela za detekciju ćelija i klasifikaciju, procjenu pozadine uzorka i sličnih zadataka, oslobađajući CPU / GPU. Odgovoran za ukupnu logiku, kontrolu, obradu konfiguracije, serijaciju/deserializaciju, rad s API-jima i datotečnim sistemom – u suštini sve što ne spada pod prethodne dve komponente. Razgovarat ćemo o tome koristeći iPhone XR (A12 Bionic, 2018) kao neku vrstu bazne linije, iako je već stariji uređaj. obrađuje 50fps video stream iz mikroskopske kamere, istovremeno izvršava CoreML inferenciju (~ 15ms po kadru), istovremeno sačuvajte podatke na disk i sinhronizujte sa oblakom, održavati temperaturu unutar prihvatljivih granica (ako su prskanje i prioritet zadataka pažljivo konfigurisani). Međutim, uređaj bi se mogao primjetno zagrijati i početi usporavati.Na primer, tokom analize malarijskog uboda, kada je potrebno obraditi više od 100 ćelija u jednom okviru, toplinski udar bi počeo čim se drugi ili treći ubod – frekvencija CPU-a bi pala, a pojavili bi se kašnjenja i usporavanja interfejsa. Screenshot ispod pokazuje drugačiju analizu, a ne malariju - ali ono što je važno ovdje je koliko detekcija se pokreće po kadru. Općenito, na iOS-u, moguće je pratiti toplinsko stanje sistema putem U našem proizvodnom okruženju nikada nismo dostigli kritičnu razinu, ali ozbiljna razina se redovno javlja pod vrlo visokim opterećenjem.Za mjerenje performansi koristimo Xcode Profiler, koji vam omogućuje da izmjerite CPU, GPU i opterećenje memorije, kao i Termalno stanje: ProcesInfo.procesInfo.thermalState Informacije A evo i tabele termostatskih vrednosti sa objašnjenjima iz dokumentacije: Thermal State Recommendations System Actions Nominal No corrective action required. — Fair Temperature is slightly elevated. Applications may proactively begin power-saving measures. Photo analysis is paused. Serious System performance is reduced. Applications should decrease usage of the CPU, GPU, and I/O operations. ARKit and FaceTime lower the frame rate (FPS). iCloud backup restoration is paused. Critical Applications should reduce CPU, GPU, and I/O usage and stop using peripheral devices (e.g., the camera). ARKit and FaceTime significantly lower the frame rate (FPS). Nominacija Nema potrebne korektivne akcije. — Pravednost Aplikacije mogu proaktivno pokrenuti mere štednje energije. Analiza fotografija je zaustavljena. ozbiljno Aplikacije bi trebale smanjiti upotrebu CPU, GPU i I/O operacija. ARKit i FaceTime smanjuju brzinu kadra (FPS). iCloud backup obnova je obustavljena. Kritika Aplikacije treba da smanje upotrebu CPU-a, GPU-a i I/O-a i prestanu koristiti periferne uređaje (npr. fotoaparat). ARKit i FaceTime značajno smanjuju brzinu kadra (FPS). Potpuna toplinska i snaga analiza zaslužuje poseban članak - kao što sam spomenuo na početku, ne želim ići previše duboko ovdje. Stoga se može pretpostaviti da je stanje odgovara 80–90 ° C na nivou čipa i oko ~40 ° C na površini. Javno dostupni izvori Serious iPhone radi sa bilo kojom za druge uređaje, postoji zaseban protok, u kojem uređaj mora imati (Made for iPhone) certifikacija, radi preko iAP2 (Apple Accessory Protocol), itd Ukratko – to nije naš slučaj. Bluetooth niska energija MMF Korisno je ovde podsjetiti na osnovne uloge i strukturu protokola: Obično, periferni šalje podatke ili čeka na vezu (primjeri: sat, termometar, monitor otkucaja srca). Centralni - uređaj koji se povezuje sa perifernim uređajem. Inicijira vezu, šalje komande i prima podatke. GATT (Generic Attribute Profile) — struktura kroz koju BLE uređaji razmjenjuju podatke. GATT definira koja su „polja“ dostupna, što se može čitati, napisati ili pretplatiti na obaveštenja. Usluge i karakteristike – podaci unutar BLE veze su strukturirani u usluge (logijske grupe) i karakteristike (specifični parametri). U našem slučaju, iPhone upravlja fazom preko svog ugrađenog BLE modula, koji je prepoznat kao periferni sa prilagođenom GATT uslugom i obavlja dva zadatka: šalje komande za kretanje kontroleru za osi XY i kontrolu fokusiranja duž osi Z primanje podataka od kontrolora (status, pozicija) Govoreći o toplinskom opterećenju, BLE veza ne bi trebala znatno doprinositi. , prenoseći komande ili primajući stanje na frekvenciji od 20 Hz (interval od 50 ms): dokument o BLE potrošnji energije tipična neaktivna potrošnja energije iPhone XR je oko 50-100 mW. Dodatak od manje od 1 mW je gotovo zanemarljiv, pogotovo u poređenju sa neuralnom mrežnom obradom, upotrebom GPU-a i prikazom. radio kanal je aktivan samo oko 2% vremena, spavajući ostatak vremena. Ući ćemo dublje u detalje o radu aplikacije sa BLE modulom i kontrolerom u odjeljku "Rad s motoriziranom fazom". Koristimo primarnu (širokougaonsku stražnju) kameru: snimamo H.264 video sa rezolucijom od 1280×720 i bitnom brzinom od oko 40 Mbps. Što je bitna brzina viša, to je više podataka po jedinici vremena → viši kvalitet slike. 40 Mbps je prilično visoka za rezoluciju od 1280×720 (HD). H.264 je međunarodni standard za kodiranje videa, poznat i kao AVC – Advanced Video Coding ili MPEG-4 Part 10. Eliminiše redundantne podatke (i inter-frame i intra-frame kompresije), smanjujući bitnu brzinu i, posljedično, veličinu datoteke. Dakle, ono što završavamo nije samo mobilni korisnički interfejs klijenta, već punopravni uređaj na rubu - što znači uređaj koji obrađuje podatke lokalno, bez konstantne povezanosti sa serverom. Mobilne aplikacije Sada kada smo pokrili hardverski deo, pogledajmo kako sve to funkcioniše na razini aplikacije. Na ulazu, aplikacija prima tok okvira iz kamere - vidno polje mikroskopa koje se kreće preko mrlja. At the , the application must: output detect leukocytes (and other cells depending on the analysis) display detected objects with bounding boxes (BBoxes) perform cell counting send data in the background to the backend (images of cells, the scan, individual frames) Kao što je prikazano na gornjem diagramu, sve se vrti oko okvira kamere – detekcija, navigacija kroz slajd i određivanje koje artefakte treba poslati u oblak sve ovisi o tome. To uključuje korekciju iskrivljenosti, uklanjanje artefakta, procjenu razine zamagljenosti i korekciju svetlosti i boje. 1) Preprocess the frames Na primer, svaka laboratorija ili mikroskop ima specifične uslove osvetljenja, što može uzrokovati neispravnost neuronske mreže. Takođe smo imali grešku u kojoj su ćelije poslate na portal bez kalibracije boja.To se dogodilo jer je detekcija pokrenuta paralelno prije nego što su primenjena podešavanja kamere. and ćelije bez duplikata 2) Detect, classify, count Na primjer, na slici ispod, neki duplikati su označeni crvenom u jednoj od starijih analiza: tako da se pravilno kreće preko slajdova, prelazi s jednog slajda na drugi i, što je najvažnije, fokusira se na slajd, detektujući kada prelazi granice slajdova ili slijetanje na praznim područjima. 3) Control the microscope serije ćelija u oblak (snapshots, metapodatci) bez blokiranja obrade sljedeće analize. 4) Upload ovaj proces n puta, jer se analize izvode u serijama. 5) Repeat I postići sve ovo bez pregrevanja telefona. 6) Aplikacija se razvila u tipičnom načinu pokretanja: dokazi o konceptu su brzo sagrađeni, a zatim rafinirani u MVP (Minimum Viable Product) pogodan za pilotiranje u laboratorijima i pitching investitorima. Kao rezultat, arhitektura aplikacije završila je hibridnom: neki zasloni su implementirani pomoću UIKit-based MVP (Model-View-Presenter) zaslona, dok su nove značajke i sučelje napisane u Swift sa MVVM (Model-View-ViewModel). We use a service layer to isolate business logic: U pitanju je U pitanju je Sve zavisnosti se ubrizgavaju ili kroz konstruktore ili preko DI kontejnera. U smislu reaktivnosti i asinkronih lanaca sa pretplatama događaja, imali smo „evolucionarni put“: prvo smo usvojili RxSwift, zatim smo počeli da se prebacujemo na Combine, a s dolaskom async/await, deo lanaca se preselio tamo. Rezultat je bio nekakav „Frankenstein“, ali kasnije smo te komponente izolovali u odvojene module tako da bismo u budućnosti mogli jednostavno zamijeniti jednu komponentu za novi tehnološki skup. Cijela aplikacija je međusobno povezana s detaljnim logiranjem, a za složene slučajeve (osobito one povezane s procesiranjem okvira) koristimo NSLogger: omogućava ne samo logiranje teksta CameraService BluetoothController AnalysisService An entire article could be written about testing: from mocking individual parts of the analysis and quickly setting the desired states via (Usput, imam jedan na ovu temu), da simulira pojedinačne korake analize i pokriva sve to sa integracijom i testovima jedinica. ProcessInfo Mala tehnička napomena Ali hajde da se vratimo na obradu okvira i pogledamo malo detaljniji arhitektonski diagram od onog gore navedenog: Analiza kontrolera – centar za donošenje odluka: prima okvire i pokreće obradu u okvirnom cevovodu. Kamera Servis - prima sirovi tok okvira iz kamere, transformira ga i prenosi ga naprijed. Mikroskopski kontroler – upravlja kontrolerom mikroskopa. — a chain consisting of several stages: Frame Pipeline — correction, filtering Preprocessing — object/cell detection Detection — counting unique objects Counting — final filtering and preparation for visualization Postprocessing UI – odgovoran za prikazivanje rezultata korisniku u realnom vremenu (granična polja, statistika, upozorenja). Uploader – sinhronizuje analitičke artefakte (snapshots, ćelije, config) sa backendom. Što se tiče menadžera ovisnosti: u početku smo koristili CocoaPods (koji je ušao u od 2024), ali kasnije uveo SPM (Swift Package Manager). Neke usluge (Computer Vision, Bluetooth, utilities) su premješteni u SPM module. Bilo je i pokušaja da se odvoji ObjC/C++ kod u pojedinačne xcframeworks, ali nije bilo dovoljno vremena da se sve razvrsta, pa smo ostavili taj kod u glavnom projektu. ObjC je bio potreban kao omotač oko C++ kako bi se mogao pozvati iz Swift. To je rezultiralo ObjC++ klasama: njihovi su interfejsi čisto ObjC, omogućujući Swift da interagira s njima, dok su njihove implementacije miješaju ObjC i C++ kod. To je bilo prije . maintenance mode and stopped active development Swift podržava direktne pozive na C++ I should mention that I’m far from being a guru in C++ and Computer Vision algorithms, but my responsibilities included gaining a basic understanding and porting algorithms and heuristics from Python, which was where most of our R&D was conducted. I’ll describe some of those below. zadatke Uklanjanje deformacija Jedan od adaptera je na slici prikazivao optički artefakt iskrivljenosti. Kao rezultat toga, ćelija koja bi trebala izgledati okrugla izgledala bi produžena ili iskrivljena, posebno prema rubovima okvira. kako bi se vratila geometrija okvira: Uslovi korišćenja OpenCV:undistort() We calibrate the camera — capturing images of a chessboard/grid with known geometry. OpenCV computes: the camera matrix K (projection parameters) distortion coefficients D = [k1, k2, p1, p2, k3, …] We apply cv::undistort() or cv::initUndistortRectifyMap() + remap(): this computes where each point “should have landed” in reality the image is “straightened” back to correct geometry Kasnije, adapter je zamijenjen - ovaj korak je uklonjen. Determining Position on the Slide Određivanje pozicije na slajdovima Da biste precizno brojali ćelije, ključno je da znate njihove koordinate što je točnije moguće. here, you can see what happens when the shift determination is incorrect. Videozapis U početku smo pokušali izračunati relativni pomak između dva okvira i sažeti apsolutni pomak. klasični način snimanja slika putem fazne korelacije zasnovan na Fast Fourier Transform. Mi smo to implementirali u OpenCV-u i čak smo koristili Apple Accelerate. metode zasnovane na lokalnim ključnim točkama sa opisnicima: SURF, SIFT, ORB i drugi. Optički tokovi Ugrađena aplikacija Apple Vision TranslationalImageRegistrationRequest S jedne strane, imali smo neke pretpostavke: nije bilo skaliranja ili rotacija optički: čista, neosvetljena smesa, bez praznih površina Unatoč tome, i dalje su postojali problemi zbog promjena u osvetljenju, fokusu, akumulirane pogreške, naglih pomaka, buke ili artefakata u slici. This resulted in a comparison table like the one below: Evo vašeg preciznog prijevoda navedene tabele i teksta: Method Advantages Disadvantages Usage Notes Speed Comment FFT + cross-correlation (OpenCV, Accelerate) Very fast, global shift detection, simple to implement Accumulates error, not robust to abrupt shifts Requires images of identical size, suitable for “pure” shifts Very high Used as the primary method SIFT High accuracy, scale/rotation invariant Slow, used to be non-free Excellent for diverse scenes with texture and complex transformations Slow Experimental option SURF Faster than SIFT, also scale/rotation invariant Proprietary, not always available Slightly better suited for real-time but still “heavy” Medium Experimental option, especially since under patent ORB Fast, free, rotation invariant Sensitive to lighting, not robust to scale changes Works fairly well for image stitching High Before we moved stitching to the cloud, we had versions using this Optical Flow (Lucas-Kanade) Tracks movement of points between frames, good for video Doesn’t handle global transformations, sensitive to lighting Best in videos or sequences with minimal movement Medium We experimented with this for digitization (stitching) of images Optical Flow (Farneback) Dense motion map, applicable to the whole image Slow, sensitive to noise Good for analyzing local motions within a frame Slow We experimented with this for digitization (stitching) of images Apple Vision (VNTranslationalImageRegistrationRequest) Very convenient API, fast, hardware-optimized In our case, accuracy was poor Perfect for simple use cases on iOS/macOS Very high We tried it and abandoned it FFT + cross-correlation (OpenCV, Accelerate) Very fast, global shift detection, simple to implement Akumulira greške, nije robustan za nagle promene Zahtijeva slike identične veličine, pogodne za "čiste" promene Vrlo visoka Koristi se kao primarna metoda SIFT Visoka preciznost, skala / rotacija nepromjenjiva Polako, nekada nije bilo slobodno Odličan za različite scene sa teksturama i kompleksnim transformacijama Polako Eksperimentalna opcija SURF Brži od SIFT, također skala / rotacija invariant Vlasnik, ne uvek dostupan Malo bolje pogodan za realno vrijeme, ali i dalje "teški" srednje Eksperimentalna opcija, posebno pošto je pod patentom ORB Brzo, besplatno, rotacija nepromjenjiva Osetljiv na osvetljenje, ne otporan na promene razmjera Deluje prilično dobro za slikanje Visoka Prije nego što smo se preselili u oblak, imali smo verzije koje koriste ovo Optical Flow (Lucas-Kanade) Pretraga kretanja tačaka između okvira, dobro za video Ne rukuje globalnim transformacijama, osetljiv na osvetljenje Najbolje u video ili sekvence sa minimalnim pokretom srednje Mi smo eksperimentisali sa ovim za digitalizaciju (sticanje) slika Optical Flow (Farneback) Guste mape kretanja, primjenjive na celu sliku Spori, osetljivi na buku Dobar za analizu lokalnih pokreta unutar okvira Polako Mi smo eksperimentisali sa ovim za digitalizaciju (sticanje) slika Apple Vision (VNTranslationalImageRegistrationRequest) Vrlo pogodan API, brz, hardversko optimizovan U našem slučaju, preciznost je bila slaba Savršeno za jednostavne slučajeve korištenja na iOS/macOS-u Vrlo visoka Pokušali smo i napustili Za svaku opciju pokušali smo pronaći optimalnu konfiguraciju u smislu preciznosti i performansi za usporedbu s referentnom promjenom: razlikovali smo rezolucije slike, algoritamske parametre i različite postavke optike kamere i mikroskopa. And here’s what the debugging process looked like for detecting keypoints, which we later intended to use for calculating the shift. Kao rezultat toga, nakon što je robotička faza uvedena u naš sistem, počeli smo koristiti koordinate iz njegovog kontrolera, koje smo zatim rafinirali pomoću CV heuristike. Brojanje ćelija U suštini, zadatak broja ćelija je specifičan slučaj praćenja objekata i deduplikovanja: "da biste identificirali šta je ćelija, izbjegavajte da je brojite dvaput, izbjegavajte prebrojavanje i ne propustite potrebne ćelije - sve u frakcijama sekunde, u realnom vremenu putem kamere i pokretanjem na hardveru telefona." Objekt detekcija. Koristimo neuronske mreže za detekciju objekata u okviru (Bounding Box, BB). Svaki BB ima svoju sigurnosnu ocenu (pouzdanje mreže) i klasu ćelija. Za borbu protiv buke u pozadini i lažnih pozitivnih, primenjujemo brzo filtriranje: na boji: na primjer, po intenzitetu ili rasponu boja. Na primjer, ovdje na lijevoj strani, crveni naglasak označava eritrocite - ali neuronska mreža je prvobitno klasifikovala kao leukocite. Međutim, filteri u boji došli su u igru kasnije, a to je filtrirano. Crveni naglasak označava eritrocite koje su otpustili filtri. geometric: we discard objects whose sizes fall outside typical cell dimensions. we also discard cells that partially extend beyond the frame edges — those are of no interest to us Counting unique objects. Some BBs may be counted more than once for the same cell, so it’s important to detect such cases and count them only once. At one point, we were inspired by a guide from MTurk that describes two options: Option 1: Compare the distances between BB centers — if a new BB is too close to one already recorded, it’s likely “the same” cell. Option 2: Calculate IoU (intersection over union, Jaccard Index) — the metric for overlap between rectangles. If a new BB overlaps significantly with an existing one, we count it only once. Općenito, potrebno je održavati praćenje objekata između okvira, pogotovo ako ponovno posetimo prethodno skenirana područja brtve.Ovde opet, kritično je važno precizno odrediti položaj na slajdi - inače, ceo broj ide niz drenažu. digitalizacija One of the tasks was digitizing the scan, essentially creating a software-based histology scanner for the smear. The photo below shows what it looks like: arrows indicate the movement used to build the scan, where we capture frames and stitch them into one large image. Pokret vidnog polja kroz smear Opet, precizno određivanje položaja bilo je kritično važno, nakon čega je usledilo besprijekorno sipanje. Vrijedi napomenuti da u početku nismo imali motorizovanu scenu i oslanjali smo se na ručnu navigaciju. Zamislite da pokušavate sastaviti mozaik od stotina fragmenata. Evo kako su izgledali prvi eksperimenti: skakanje polja pogleda, šavovi, razlike u osvetljenju, prazni prostori. Na levoj strani - mapa s neujednačenim osvetljenjem i izloženosti, gde su "šavovi" vidljivi na raskrižjima okvira. Na desnoj strani - neujednačeno stisnute slike tkiva s prazninama. Ili, na primer, korisnik skenira smear, brzo se kreće preko njega - neka područja završavaju zamagljenim (Motion Blur). Pokušali smo odbaciti takve okvire ako nisu zadovoljili prihvatljiv prag za zamagljivanje ili ako se pomak ne može izračunati za njih. Blurred okviri prekriveni na skeniranju tokom naglog pokreta Postupno smo napredovali prema sledećem pristupu: Bilo je mnogo iteracija: stiskanje na uređaju, koristeći različite metode, na različitim rezolucijama kadra i konfiguracijama fotoaparata. Napokon smo stigli do rešenja gde je skeniranje montirano u oblaku, a mobilni uređaj šalje kadre s kalibrovanom ravnotežom bijele boje i izloženosti. Ispod je primer kako smo izmjerili brzinu obrade pojedinih komponenti za obradu okvira ovisno o konfiguraciji: podešavanja kamere, odabrani algoritmi i njihovi parametri. (ovde postoji malo miješanja s ruskim, ali nadam se da je ukupna ideja jasna) Rad sa motorizovanom fazom Sada – detalji o povezivanju između iPhone-a i motorizovane faze: kako komuniciramo preko BLE-a, koje komande šaljemo i kako smo konfigurisali autofokus. Mobilni uređaj se povezuje preko Bluetooth-a na kontroler na sceni i kreće duž XYZ koordinata. Naša pozornica je takođe izrađena po meri – ne zato što „želimo da napravimo sve sami“, već zato što komercijalna rešenja počinju na 10.000 dolara, a to nije šala. Najamili smo dizajn biroa i izgradili našu vlastitu verziju za oko 800 dolara. Pokazalo se da je znatno jeftinije jer je jedan od inženjera primetio u vremenu da izgradnja motorizovanog mikroskopa pozornica sumnjivo liči na 3D štampač. Ista XYZ kinematika, isti stepper motori, iste pruge. Kao rezultat, koristimo masovno proizvedene i jeftine komponente, ali prilagođene našim specifičnim zahtjevima. Strukturalno, pozornica se sastoji od tri dijela: same XY platforme, fokusnog bloka (Z-Axis, gde je motor Komponente motorizovane mikroskopske faze Za ručno kretanje faze koristimo virtualni džep (koji korisniku prikazuje gumbove za kretanje na zaslonu) – koristi se u scenarijima kalibracije i podešavanja sistema. Međutim, tokom analize, kontrola je uvek automatizovana. Evo kako je džep delovao u prvim verzijama – kasnije smo ga poboljšali sa upravljanjem zvukom i kašnjenjem. Communication Protocol Komunikacioni protokol Kao Bluetooth interfejs, koristimo BLE modul radi podrazumevano u terminalu tekstualnog načina, što znači da zahtjevi i odgovori jednostavno prolaze natrag i natrag. Uslovi korišćenja HC-08 Sam kontroler pokreće firmware zasnovan na GRBL, koristeći komande. Glavni scenariji su: G-koda inicijaliziranje veze (telefon mora otkriti da je scena povezana) skeniranje slajd (pokretanje pozornice duž svih osovina) zaustavljanje / ponavljanje skeniranja rješavanje izvanrednih situacija: dostizanje prekidača granica, prekid kretanja, preliv komande buffera. GRBL ima svoj skup zapovijedi koje počinju sa Simbol na primer: $ $H – homing ili kalibracija i traženje hardvera nule putem limit preklopnika. Obično izvršeno na početnom pokretanju i kasnije po potrebi ako se tokom kretanja dogodi značajna akumulirana pogreška. — Jogging mode, which simulates joystick control. The command itself should describe relative movement along all axes. An example of such a command: $J=<command> $J=G21G91Y1F10 — units in millimeters G21 — relative positioning G91 — movement along the Y-axis by 1 millimeter Y1 — movement speed. F10 ? — GRBL status upit. Vraća niz s ključnim parametrima mašine. Primjer odgovora: <Alarm ÁthaMPos:0.000,0.000,0.000 ÁthaFS:0,0 ÁthaPn:XYZ ÁthaWCO:-5.300,0.000,-2.062> Zanimaju nas prva dva parametra: Može biti „Idle“, „Running“ ili „Alarm“. MPos – trenutni položaj faze. Ukratko: GRBL je open-source firmware iz sveta CNC, savršeno pogodan za upravljanje tri-osovnim sistemima (XY+Z) pomoću jednostavnih G-koda. Odabrali smo najjednostavniji mogući BLE modul – HC-08 – kako bismo izbegli da se bavimo MFi i iAP. Bilo je ključno za nas da iPhone pouzdano šalje komande i prima ažuriranja statusa uz minimalnu latenciju, bez značajnog povećanja troškova kit-a. zadatke Autofokusiranje Ranije sam spomenuo fokusiranje. Ovaj proces se periodično izvodi tokom skeniranja podmazivanja jer se uzorak nanosi nejednako, što je posebno vidljivo na visokim povećanjima. Potrebno je pratiti razinu zamagljenosti i prilagoditi fokus u vremenu. The graph below shows the relationship between focus level and time. We start with a blurred image, gradually moving the stage to the optimal focus position. skeniranje Već sam spomenuo digitalizaciju skeniranja na mobilnoj strani. Vrijedno je napomenuti da se digitalizacija može izvršiti na različitim povećanjima: od 5x do 40x. Na nižim nivoima zooma, lakše je navigaciju i detekciju granica podmazivanja, dok na većim povećanjima, ćelijski detalji postaju vidljivi. U našem slučaju radimo na dva nivoa: Boundary detection at 4x magnification. The algorithm scans the entire slide, determines the smear area, and generates a boundary map for the next stage. The output is something like a heat map. For example, from the low-magnification image on the left, we obtain a matrix that we then use to plan the steps for navigating at higher magnification: Scanning the smear at 20x magnification (or another level). The algorithm scans and saves images for subsequent assembly into a single map. Scanning proceeds line by line, within the boundaries of the smear. A photo is captured for stitching when: the image is in focus the controller is in an idle state, i.e., not moving Kako korisnik ne bi morao svaki put mijenjati ciljeve, mi istovremeno izvršavamo detekciju granica i skeniranje svih slajdova u seriji, dok paralelno učitavamo prethodnu seriju u oblak. Zaključak Ovaj projekat je pokazao da čak i pametni telefon iz 2018. može upravljati zadatcima koji su ranije zahtijevali radne površine, servere i skupe automatizovane mikroskope. Naravno, još uvijek ima mnogo toga iza pozornice: od prikupljanja skupova podataka do fino podešavanja postavki izloženosti. Ako ste zainteresovani, rado bih to pokrio odvojeno. Osetite se slobodnim da postavljate pitanja, podijelite svoja iskustva i možda ćemo zajedno stvoriti praćenje ili uroniti dublje u specifične aspekte. Hajde da se povežemo! Anarhija E-mail adresa: ansaril3g@gmail.com Tagovi: Ansar Zhalyal Telegrama: @celly_ai Amin E-mail adresa: amin.benarieb@gmail.com Tagovi: Amin Benarieb Telegrama: @aminbenarieb