Zpracování obrazu v FPGA
Leoš Maršálek ATEsystem s.r.o.
Základní pojmy
PROCESOROVÉ ČIPY Křemíkový čip zpracovávající obecné instrukce • Různé architektury, pracují s různými paměti • Výkon instrukcí je závislý na architektuře procesoru • Velmi univerzální použití pro různé úlohy • Využití podle na programování • Přijatelná cena
ZÁKAZNICKÉ ČIPY Křemíkový čip vytvořený přesně dle požadavků zákazníka • Mohou být extrémně rychlé • Neexistuje prakticky omezení při návrhu • Vyplatí se pouze při obrovských sériích • Velmi složitý návrh a výroba • Vysoká cena
PROGRAMOVATELNÁ HRADLOVÁ POLE - FPGA FPGA - Field Programmable Gate Array • Jedná se o univerzální HW čip • Návrh obvodového řešení je realizován SW cestou • FPGA čip obsahuje spoustu logických prvku (Hradel NAND, AND, OR, XOR atd.) • Některé čipy obsahují vyšší aritmetiku a logiku (signálové procesory, čipy pro FFT atd.) • Některé čipy mohou obsahovat různé paměti
PROGRAMOVATELNÁ HRADLOVÁ POLE - FPGA • • • •
Relativně jednoduchá cesta jak převést návrh čipu do finálního řešení Uživatel si sám vyvíjí obvodové zapojení čipu Čipy dokáží pracovat velmi rychle, ve většině případů plně nahradí zákaznické čipy Minimalizuje se cena za výrobu
Součásti FPGA
SOUČÁSTI ČIPU
SOUČÁSTI ČIPU •
• • •
Konfigurovatelné logické bloky (CLB, cells) – Flip-Flop – LUT (lookup table) Fixní logické bloky (multipliers) Paměťové bloky (RAM) I/O bloky
SOUČÁSTI ČIPU Binární posuvný registr • Slouží k synchronizaci a uložení logického stavu mezi časovými cykly (True/False) • Při časovém signálu přijme hodnotu na vstup a drží si ji do dalšího signálu Signálové procesory • Specializované funkční bloky (FFT, atd.)
SOUČÁSTI ČIPU - LUT • •
Paměť RAM Obsahuje pravdivostní tabulky pro veškeré logické operátory (AND, OR, NAND, XOR,...)
FPGA v zařízeních National Instruments
FPGA V ZAŘÍZENÍCH NATIONAL INSTRUMENTS • •
NI pracuje s čipy Xilinx Existuje několik hlavních architektur: – Virtex-II Pro – Virtex-4 – Virtex-5 – Spartan
Virtex má v sobě integrovány prvky Power PC
KARTA PRO ZPRACOVÁNÍ OBRAZU • NI 1473R – Frame graber s připojením Camera Link rozhraním • PoCL – napájení přes Camera Link • Virtex-5 LX50 • Možnost připojení externího I/O panelu • 10tap režim snímání • Full camera link – podpora nejrychlejšího přenosu na CL
AUTONOMNÍ POUŽITÍ FPGA KARTY • • •
PC slouží pouze k napájení, spouštění PC vůbec nezasahuje do analýzy obrazu. Pokud se zhroutí OS na PC vyhodnocení poběží dále (vhodné pro kritické zpětnovazební řízení technologii ) Složitější SW návrh, vše musí řešit FPGA
ZÁVISLÉ POUŽITÍ FPGA KARTY • • • •
PC + OS vstupuje do výpočtu FPGA má za úkol decimovat data nebo předpřipravit obraz do požadovaného stavu Pouze odlehčení systému na PC platformě – některé úlohy by jinak nebyly řešitelné Jednodušší SW návrh, lze spoustu věcí udělat na PC
MODEL VRSTEV
Zpracování obrazu na FPGA
ZPRACOVÁNÍ OBRAZU NA FPGA • • •
Předzpracování obrazu na FPGA čipu a uvolnění výkonu CPU pro složitější operace Pro FPGA jsou vhodné algoritmy, které provádějí operace na jednotlivých pixelech Nevhodné jsou komplexnější funkce pracující na větší ploše jako Pattern Matching, OCR, Object Identification
850 Mpix/s
8 Mpix/s
VÝHODY FPGA x CPU • • • •
Real time Zpětnovazební řízení – velmi rychlá odezva na IO Extrémně rychlé zpracování obrazu Přesné časování
VHODNÉ ÚLOHY PRO FPGA • • • •
Filtrování 1D a 2D FFT Bayerovo kódování Konverze barevného prostoru
• • • •
Detekce hran, binárních objektů a barev Výpočet centroidu Měření na velkých plochách Decimace dat
NEVHODNÉ ÚLOHY PRO FPGA • • • •
Hledání vzoru Složité hranové detekce Analýza binárního obrazu (morfologie) Čtení čárových kódů (univerzální pojetí)
• • •
OCR Kalibrace a narovnání obrazu – složitější implementace Vícenásobné statistické metody
VELIKOST DAT • • • • • •
Velikost obrázku 1920x1088 = 1,99 MByte Rychlost snímání 100 fps ->199MByte/s černobílý obraz 8bit Barevný obraz RGB – 8bit na vrstvu -> 597Mbyte -> 4,66 Gbit Problém s přenosem Problém se zpracováním takového objemu dat Decimace barevné kamery do binárního obrazu 100fps, barevná kamera rozlišení 1920x1088 597 Mbyte barevný obraz -> 24Mbyte binární obraz
PRAHOVÁNÍ • • •
Eliminace šedých tónů + eliminace barevných vrstev FPGA spočítá vrstvu světelnosti a pak na základě nastaveného prahu vytvoří binární obrázek RGB -> Binary decimace dat o 95%
KONVOLUČNÍ FILTR • • •
Konvoluční filtr (Gausovské rozostření)– maticové zpracování obrazu v reálném čase Ulehčení nadřazenému systému s výpočtem, který je náročný pro CPU Vlastní postrocesing obrazu z kamery – možnosti téměř neomezené
DETEKCE HRAN • • •
Nalezení hran v obraze – podmnožina konvolučního filtru FPGA v reálném čase počítá pomocí konvoluce největší strmost hrany. Do nadřazené aplikace se předává upravený obrázek ve kterém jsou pouze hrany
DEBAYERIZACE Z BAREVNÉ KAMERY • • •
Přepočet z Bayerova kódování do klasické reprezentace RGB FPGA přepočítá obraz do třech barevných vrstev a do nadřazeného systému jde již přímo RGB obraz Šetří se strojový čas nadřazeného systému – do systému se přenáší 3x více dat
VÝPOČET CENTROIDU • • •
Z obrazu se počítá těžiště binárního obrázku – na jeden snímek 2 hodnoty FPGA řeší výraznou decimaci dat Ukázka na připraveném demu
Souřadnice X: 300 Y 300 pixelů
SLEDOVÁNÍ LASEROVÉ STOPY • • • •
Praktické využití centroidu Vypočítá těžiště binárního obrázku (laserový svazek je nejjasnější bod v zorném poli) Různá navádění na cíl označený laserem (od laserových stop v laboratoři až po navádění raket) Extrémně vysoká rychlost. Aktualizace souřadnic možná s každým pixelem. (48ns)
ZDROJE DAT A UŽITEČNÉ ODKAZY Camera Link Frame Grabber With FPGA Image Processing (National Instruments) Introduction to FPGA Vision Using the NI LabVIEW FPGA Module(National Instruments)
Děkuji za pozornost !
Leoš Maršálek, ATEsystem s.r.o.
[email protected]