Automatické zaostřování kamery Raspberry Pi: Kompletní návod (V1, V2, HQ)

V tomto článku najdete vše, co potřebujete vědět o automatickém zaostřování kamery Raspberry Pi. 

Popsaný postup je možné uplatnit pro všechny modely Raspberry Pi (Pi 3, Pi 4, Pi Zero, Compute Module a všechny ostatní) a také moduly kamery Raspberry Pi (V1.3, V2.1, HQ).

Arducam je jediná společnost, která nabízí kompletní řešení pro automatické zaostřování na všech 3 modelech kamer Raspberry Pi.

Proto vás výsledky vyhledávání pravděpodobně vždy dovedou zpět ke společnosti Arducam, ať už hledáte informace ohledně autofokus kamery Raspberry Pi na Googlu, YouTube nebo Amazonu.

  Pojďme se tedy ponořit do této problematiky a konečně si vše objasnit.

Předpoklady pro automatické zaostřování

Definice automatického zaostřování z Wikipedie:

Automatické zaostřování (nebo AF) využívá snímač, řídicí systém a motor k zaostření na automaticky nebo ručně vybraný bod nebo oblast.

Snadno jsme tak získali odpověď, jaké jsou 3 základní předpoklady pro funkci automatického zaostřování:

  1. Snímač
  2. Zaostřovací motor
  3. Řídicí systém

Zaostřovat obraz znamená pohybovat manuálně objektivem tak dlouho, dokud nedosáhneme požadované ostrosti. Automatické zaostřování znamená automatický pohyb objektivu.

Zaostřovací motor zajišťuje samotný pohyb objektivu, řídicí systém naviguje motor, jak má objektivem pohybovat. Když provádíme zaostřování manuálně, naše ruce fungují jako zaostřovací motor a náš mozek jako řídicí systém.

Při procesu automatického zaostřování tedy dochází k tomu, že zaostřovací motor a řídicí systém přebírají práci za vaše ruce a mozek.

Splňují však tyto předpoklady kamery Raspberry Pi?

Bohužel tomu tak není. 😥

Projděme si znovu potřebné předpoklady a podívejme se, jak odpovídají oficiální kamery Raspberry Pi.

  1. Snímač – ano. Mají obrazové snímače CMOS.
  2. Zaostřovací motor – ne. Motor V1.3 je připojený napevno. Modely V2 a HQ vyžadují manuální práci.
  3. Řídicí systém – ne. Bez zaostřovacích motorů nelze mluvit o automatickém způsobu ovládání.

POZNÁMKA: Oficiální kamery Raspberry Pi splňují pouze 1 ze 3 požadavků a nejsou tedy samy schopné automatického zaostřování.

Myšlenka základních předpokladů je následující: S manuálním ostřením je možné získat jasný obraz. Zaostřovací motory a řídicí systém nejen zvyšují složitost zařízení, ale také náklady, což ne každý potřebuje. Není třeba splňovat všechny předpoklady pro automatické zaostřování.

Znamená to, že oficiální kamery Raspberry Pi nemají schopnost automatického zaostřování?

Ano. Všechny tři oficiální moduly kamer Raspberry Pi (V1/V2/HQ) samy o sobě automatické zaostřování neumí.

Znamená to, že s kamerami Pi nemáme naději na automatické zaostřování?

Rozhodně ne. Společnost Arducam dokázala tento problém vyřešit a automatické zaostřování umožnit.

Jak Arducam splňuje podmínky pro automatické zaostřování kamery Raspberry Pi?

Řešení problému je poměrně jednoduché:

Pokud oficiální kamery Raspberry Pi nemají zaostřovací motor a řídicí systém, pak je třeba vytvořit varianty, které jej mají. 

Rozebereme si názorně dva předpoklady, které Raspberry Pi nesplňují.

1. Přidání zaostřovacího motoru do Pi kamery

Nejprve se podíváme na zaostřovací motor.

Zaostřovací motor můžeme považovat za součást sestavy objektivu.

V kamerách Raspberry Pi existují dva druhy sestavy objektivu:

  1. U modelů V1 a V2 je sestava objektivu a snímač obrazu v jednom balení a poté připojena k desce plošných spojů kamery pomocí konektoru board-to-board (BTB). Tato konstrukce je také známá jako kompaktní kamerový modul (CCM) a jedná se o typ běžně používaný v chytrých telefonech.
  2. Fotoaparát HQ má vyhrazený držák objektivu. Místo toho, aby byl obrazový snímač součástí sestavy objektivu, je obrazový snímač IMX477 HQ umístěn na desce plošných spojů kamery.
Odnímatelný kompaktní modul kamery na Raspberry Pi Camera Module V2
HQ kamera Raspberry Pi má obrazový snímač na desce plošných spojů kamery.

Nyní se nabízejí dvě možnosti vytvoření kamery Pi s podporou automatického zaostřování:

  1. Sestavíme CCM se zaostřovacím motorem uvnitř a poté jej připojíme k desce plošných spojů kamery Raspberry Pi.
  2. Sestavíme speciální sestavu objektivu se zaostřovacím motorem a připevníme ji nad obrazový snímač na desce.
Náhradní automatické ostření CCM na oficiální desce kamery V2
Speciální sestava objektivu s automatickým zaostřováním na vlastních variantách desky kamery IMX477 od společnosti Arducam

2. Přidání řídicího systému

Za druhé se jedná o řídicí systém (systém, který umožní Pi ovládat zaostřovací motor).

Než komponenty připojíme, zamysleme se nad tím, jak je Raspberry Pi připojeno k zaostřovacímu motoru:

  1. Raspberry Pi →
  2. → Konektor RPi MIPI CSI →
  3. → Ribbon kabel kamery →
  4. → Konektor MIPI CSI modulu kamery →
  5. → Deska kamery →
  6. → Zaostřovací motor.

Z výše uvedeného vyplývá, že klíčovým fyzickým spojením je ribbon kabel MIPI CSI kamery. Pokud ano, máme na MIPI CSI připojeno něco, co nám může pomoci ovládat motor?

Ano,a je to sběrnice I2C. Přesněji řečeno sběrnice I2C pro procesor VideoCore.

i2c_vc

Nastavením na „on“ povolíte rozhraní i2c, které je obvykle vyhrazeno pro procesor VideoCore (výchozí hodnota „off“).

Sběrnice I2C ve výstupech kamery Raspberry Pi, určené pro ovládání zaostřovacího motoru

K ovládání motoru budeme tedy používat sběrnici i2c_vc. Do souboru /boot/config.txt je třeba přidat následující řádek.

dtparam=i2c_vc=on

Nyní, když jsme splnili všechny požadavky, co je dále potřeba?

Jak zapnout funkci automatického ostření?

Poslední věcí, kterou je třeba udělat, je automatizovat proces zaostřování prostřednictvím programu.

Krok 1: Softwarově řízené motorizované zaostřování

Nejprve uvedeme motory do pohybu.

Pomocí jednoduchého programu v jazyce Python můžeme k pohybu zaostřovacího motoru použít klávesy na klávesnici.

Níže najdete kód v Pythonu pro softwarově motorizované ovládání zaostřování.

Program v Pythonu pro softwarové motorizované zaostřování

Nyní jsme získali fotoaparát se softwarově řízeným zaostřováním obrazu, a to je velký krok dopředu. Zaostřování už nebudete muset provádět manuálně, ale můžete jej ovládat na dálku a případně upravovat prostřednictvím softwaru.

Úprava zaostření kamery Pi pomocí šipek na klávesnici

Pokud však chceme zapnout automatické zaostřování, potřebujeme, aby se počítač Raspberry Pi dokázal rozhodnout, zda je kamera zaostřená, a přestal pohybovat zaostřovacími motory. Jak to udělat, aby to počítač Pi poznal?

Krok 2: Automatické zaostřování povolené pomocí OpenCV

OpenCV je největší dostupná knihovna s otevřeným zdrojovým kódem, a právě ta nám může nyní pomoci v tom, aby počítač Pi dokázal rozpoznat, zda je kamera zaostřená. Využijeme k tomu schopnost detekce kontrastu.

sudo apt-get install python-opencv

Rozdíl intenzity mezi sousedními pixely snímače se při správném zaostření obrazu přirozeně zvyšuje. Pi pak může ovládat motor tak dlouho, dokud není detekován maximální kontrast.

Společnost Arducam poskytuje příklad automatického zaostřování s podporou OpenCV v jazyce Python. Zde je vidět, jak vypadá obraz po spuštění v systému Raspbian.

Automatické zaostřování kamery Raspberry Pi v systému Raspbian

Níže najdete kód v Pythonu pro automatické zaostřování.

Autofocus.py

Další level: Autofokus kamery Raspberry Pi s kamerami PTZ (Pan-tilt-zoom)

Nyní, když jsme pochopili, že I2C kamery lze použít jako řídicí jednotku pro pohyb objektivu, můžeme se podívat, jaké jsou další možnosti.

Jaký je rozdíl mezi zaostřením a zoomem? Zaostřit znamená pohybovat objektivem, zoomovat znamená zaměřovat prvky uvnitř objektivu.

Chceme ovládat nejen objektiv, ale také prvky uvnitř objektivu, musíme mít objektiv s automatickým zaostřováním a zoomem. Spolu se servopohony pro otáčení a naklápění sestavíme pro Raspberry Pi kameru PTZ s možností automatického zaostřování.

Pivariety: Použití vlastních algoritmů ladění ISP Raspberry Pi s kamerami s automatickým zaostřováním

Projekt Pivariety přináší hardwarové algoritmy pro ladění ISP a ovládání kamery v počítači Pi do více kamerových modulů.

S širší podporou (AE, AWB a AF) mohou Arducam kamery s automatickým zaostřováním nejen rychleji zaostřovat, ale také vytvářet kvalitnější snímky/videa než tyto nativní kamerové moduly.

Návrhy a doporučení

Nyní jste se dozvěděli, jak propůjčit funkci automatického zaostřování kamerám Raspberry Pi. Zde jsou shrnuté získané poznatky:

  1. Automatické zaostřování je možné, ale nelze očekávat, že bude tak plynulé nebo přesné jako u kamery smartphonu. Hlavním cílem společnosti Arducam je prokázat proveditelnost a nabídnout více možností. Jedná se o softwarové ostření založené na OpenCV, a nelze jej srovnávat s fantastickými PD nebo laserovými autofokusy.
  1. Přestože je dostupný příklad automatického zaostřování, doporučujeme vám používat manuální ovládání skrze software. Uvádíme další příklad, který umožňuje zaostřit fotoaparát intuitivnějším způsobem – klepnutím na klávesy se šipkami na klávesnici. Je to přesnější způsob, který vám pomůže zaostřit na potřebnou oblast (region of interest – ROI).
  1. Uvedené příklady byly testovány pouze na operačním systému Raspberry Pi (Raspbian), takže si nejsme jisti, jak je to s ostatními operačními systémy. Nicméně moof a jneilliii poskytli doplněk Octoprint, který umožňuje ovládat motor pro zaostřování, nazvaný ArduCamFocus.

Zde jsou moduly kamer Arducam V1,V2 a HQ, které podporují funkce automatického zaostřování. 

Kamery V1 s rozlišením 5 Mpx a HQ s rozlišením 12 Mpx jsou plnohodnotným kamerovým modulem, což znamená, že můžete přímo zapojit jeho ribbon kabel kamery do slotu CSI počítače Raspberry Pi. Verze V2 s rozlišením 8 MP je náhradou CCM a je třeba nejprve odpojit kabel na desce plošných spojů kamery V2 a poté k němu připojit ribbon kabel.

Standardní moduly kamery s automatickým ostřením pro Raspberry Pi

Arducam 8Mpx IMX219 drop-in Auto Focus Camera Module

Raspberry Pi kamera V2

Moduly kamery s automatickým zaostřováním Pivariety pro Raspberry Pi

Arducam Modul Barevné Kamery Pivariety 16MP IMX298 pro RPi

Arducam Modul Barevné Kamery Pivariety 21MP IMX230 pro RPi

Moduly kamery PTZ(Pan-tilt-zoom) pro Raspberry  Pi

Arducam 5MP 1080p PTZ kamera se základnou pro Raspberry Pi 4/3B+/3

Arducam 8MP PTZ kamera se základnou pro Raspberry Pi 4/3B+/3

Tím se dostáváme na konec dnešního přehledu.

Pár slov závěrem: 

Oficiální moduly kamer Raspberry Pi nepodporují automatické zaostřování, ale Arducam umožnil dosáhnout automatického zaostřování řízením motoru zaostřování v upraveném modulu prostřednictvím I2C.

Proč potřebujete modul kamery pro automatické zaostřování na Raspberry Pi?

Budeme rádi, když nám napíšete komentář, nebo se s námi podělíte o vaše zkušenosti.

Váš tým ZonePi

Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *