4.12. Pipeline ISP

Prosesor sinyal citra (ISP) adalah pipeline perangkat keras yang mengubah nilai piksel mentah dari sensor menjadi citra warna yang sudah selesai. Koreksi tingkat piksel pada sensor adalah tahap pertama dari pipeline tersebut. Setelah tahap itu berjalan, sisa pipeline melakukan pemrosesan warna dan pemformatan keluaran dalam urutan tetap pada setiap bingkai.

A vertical pipeline diagram with eight labelled boxes, top to bottom: statistics extraction, auto white balance, debayering, colour matrix correction, gamma correction, image scaling, image cropping, and pixel packing. An arrow at the top is labelled "corrected Bayer pixels" and an arrow at the bottom is labelled "finished frame".

Tahap pemrosesan warna dan keluaran dari ISP. Pipeline menjalankan setiap tahap pada setiap piksel dalam bingkai sebelum tahap berikutnya dimulai.

4.12.1. Tahap-tahapnya

Setiap tahap menerapkan satu transformasi yang terdefinisi dengan baik secara bergiliran. Urutan sangat penting -- tahap berikutnya mengasumsikan tahap sebelumnya telah berjalan, dan beberapa tahap juga mengambil masukan dari keluaran bingkai sebelumnya.

  1. Ekstraksi statistik mengukur kecerahan rata-rata per wilayah dan jumlah per saluran dari bingkai Bayer yang telah dikoreksi. Angka-angka tersebut dimasukkan ke dalam loop kontrol auto-eksposur, auto-gain, dan auto-white-balance, yang kemudian memperbarui pengaturan sensor untuk bingkai berikutnya.

  2. Gain auto-white-balance menskalakan setiap piksel Bayer dengan pengali per warna -- piksel merah dengan gain R, piksel hijau dengan gain G, piksel biru dengan gain B -- mendorong referensi putih adegan menuju abu-abu netral sehingga warna yang direkam terlihat seperti yang dilihat mata. Pengali berasal dari statistik AWB bingkai sebelumnya.

  3. Debayering merekonstruksi dua saluran warna yang hilang di setiap piksel dari mosaik Bayer, mengubah data mentah satu saluran per piksel menjadi RGB tiga saluran. (Lihat Debayering.) Segala sesuatu setelah tahap ini berjalan pada piksel RGB, bukan pada mosaik Bayer.

  4. Koreksi matriks warna (CCM) menerapkan perkalian matriks 3x3 pada setiap piksel RGB yang memetakan respons merah-hijau-biru asli sensor ke dalam ruang warna standar. Filter setiap sensor memiliki respons spektral tersendiri, yang tidak persis sama dengan yang diharapkan oleh standar apa pun; matriks adalah transformasi terkalibrasi per sensor yang mengubah "RGB sensor" menjadi "RGB standar".

  5. Koreksi gamma menerapkan kurva non-linear pada setiap saluran yang memampatkan sinyal sensor linear ke dalam encoding yang cocok dengan persepsi. Mata lebih mudah mengenali perbedaan antara nada gelap daripada perbedaan antara nada terang, sehingga encoding yang menghabiskan lebih banyak anggaran bit pada ujung gelap menangkap lebih banyak detail yang terlihat pada kedalaman bit tertentu.

  6. Penskalaan citra mengubah ukuran bingkai dari resolusi asli sensor ke resolusi keluaran yang ditargetkan. Sebagian besar aplikasi berjalan dengan kurang dari jumlah piksel penuh sensor, dan pengurangan ukuran mengurangi bandwidth dan tekanan memori pada semua yang mengikutinya.

  7. Pemotongan citra mengekstrak sub-persegi panjang dari bingkai yang telah diskalakan dan membuang piksel di luarnya. Digunakan untuk menangkap wilayah yang diminati, mencocokkan rasio aspek tertentu, atau membuang batas yang tidak diperlukan aplikasi.

  8. Pengemasan piksel mengonversi representasi internal per saluran (biasanya 10 atau 12 bit per saluran) ke format keluaran yang dipilih dan menulis hasilnya ke RAM.

4.12.2. Umpan balik loop kontrol

Tahap 1 dan 2 membentuk loop kontrol yang mencakup beberapa bingkai. Statistik yang diekstrak dari bingkai N memberi tahu sensor seberapa cerah adegan dan bagaimana keseimbangan warnanya pada bingkai tersebut; kontroler auto-eksposur, auto-gain, dan auto-white-balance menggunakan angka-angka tersebut untuk memilih nilai register eksposur, gain, dan white-balance baru untuk bingkai N+1. Nilai baru berlaku pada pembacaan bingkai berikutnya, statistik bingkai baru kembali, dan loop tertutup.

Untuk adegan yang tidak berubah, loop bertemu dalam beberapa bingkai dan tetap pada pengaturan konstan. Untuk adegan yang kecerahan atau rona warnanya berubah -- kamera yang bergerak dari dalam ruangan ke jendela yang diterangi matahari, misalnya -- loop melacak perubahan selama beberapa bingkai, dan pengguna melihat pergeseran kecerahan atau warna singkat menuju kondisi stabil baru.

4.12.3. Tempat ISP berjalan

Dua susunan umum digunakan.

  • Sebuah ISP on-sensor menjalankan seluruh pipeline di dalam chip sensor dan menghasilkan citra RGB yang sudah selesai. MCU hanya mengumpulkan hasilnya.

  • Sebuah ISP off-sensor berada di MCU atau SoC host. Sensor mengeluarkan Bayer mentah; silikon MCU (atau kode driver-nya) menjalankan pipeline sebelum menyerahkan bingkai yang selesai ke kode pengguna.

Pemisahan ini memengaruhi format keluaran apa yang dapat langsung diserahkan sensor kepada pengguna. Sensor dengan ISP penuh di dalam chip memungkinkan pengguna memilih dari format apa pun yang didukung chip tersebut. Sensor tanpa ISP hanya mengeluarkan Bayer, dan konversi format terjadi di silikon MCU atau perangkat lunak.