- Kamera line scan sangat cocok untuk memotret objek bergerak seperti kereta dalam resolusi tinggi tanpa distorsi
- Pemrosesan gambar memerlukan berbagai algoritme dan teknik seperti deteksi region of interest, estimasi kecepatan, dan resampling
- Peningkatan kualitas seperti penghapusan garis horizontal dan vertikal serta penekanan noise sangat penting
- Implementasinya mencakup pemrosesan data berukuran besar, pemanfaatan Python, numpy, dan berbagai penyempurnaan eksperimental
- Wawasan tambahan bisa diperoleh dengan membandingkannya dengan contoh foto line scan dari fotografer lain
Gambaran Umum Kamera Line Scan
- Kamera line scan memindai gambar satu baris (atau dua baris) piksel dengan kecepatan sangat tinggi
- Kamera dipasang tetap, dan seluruh bentuk kereta direkam saat kereta melintas di depan kamera
- Latar belakang yang statis berulang di semua kolom vertikal gambar sehingga muncul efek garis khas
- Metode ini memungkinkan pengambilan foto resolusi tinggi tanpa distorsi di sepanjang seluruh panjang kereta, sehingga juga berguna untuk hobi seperti pemodelan kereta
- Kamera strip berbasis film juga bekerja dengan prinsip serupa, tetapi berbeda karena kecepatan film harus disesuaikan secara manual akibat masalah sensitivitas
Perangkat Kamera
- Menggunakan model [Alkeria Necta N4K2-7C], yang dilengkapi sensor gambar Bayer array ganda 4096×2
- Data mentah disimpan sebagai array biner 16-bit
- Pemotretan dilakukan di berbagai lingkungan, termasuk metro perkotaan
Deteksi Region of Interest (ROI)
- Karena pemindaian berdurasi panjang menghasilkan banyak data latar belakang, algoritme deteksi otomatis area objek bergerak sangat penting
- Struktur vertikal (gerakan) dan struktur horizontal (latar belakang) dibedakan dengan menggabungkan fungsi energi (berbasis gradien) dan nilai piksel maksimum
- Gambar dibagi menjadi beberapa chunk, lalu skor dihitung menggunakan energi persentil ke-99 dari tiap chunk
- Chunk dengan skor setidaknya 1,5 kali lebih tinggi daripada nilai minimum dianggap sebagai area yang mengandung objek bergerak
- Metode sebelumnya gagal melakukan generalisasi, sedangkan metode saat ini bekerja lebih efisien dalam berbagai situasi
Estimasi Kecepatan
- Saat subjek bergerak, kegagalan estimasi kecepatan menyebabkan distorsi berupa gambar yang meregang atau terkompresi
- Kecepatan gerak tiap chunk dihitung dengan membandingkan dua kanal hijau (Green) pada kamera
- Untuk tiap chunk, diterapkan pergeseran kecil dari -7 hingga +7 lalu dihitung nilai absolut selisih kedua kanal untuk membentuk cost array
- Untuk menemukan puncak subpiksel, digunakan interpolasi bergaya [mean shift] berbasis Gaussian, lalu spline dipakai untuk mengoreksi perubahan total
- Nilai spline yang diekstrak merepresentasikan interval sampel dalam deret waktu asli, dan digunakan untuk mengoreksi distorsi gambar
Resampling
- Posisi sampel dihitung berdasarkan spline untuk mengekstrak gambar baru
- Kondisi pengecualian turut dipertimbangkan, misalnya pembalikan kiri-kanan saat spline bernilai negatif, atau penanganan error saat nilainya mendekati 0
- Untuk setiap posisi sampel, informasi lebar sampel juga disimpan, dan fungsi windowing yang sesuai seperti jendela Hann digunakan untuk meningkatkan performa anti-aliasing
- Pemilihan kolom sederhana atau jendela persegi tidak cocok karena menimbulkan artefak kasar saat upsampling
Demosaicking
- Diperlukan demosaicking kustom seperti bilinear interpolation yang mempertimbangkan offset spasial dari Bayer array dua kolom
- Setelah estimasi kecepatan, interpolasi linear digunakan untuk mengoreksi fenomena seperti fringing
- Karena perbedaan data antara dua kanal hijau, ada kemungkinan pemulihan full-color yang lebih baik dibanding Bayer array biasa
Penghapusan Garis Vertikal
- Clock jitter (stripes) dan perubahan kecerahan subjek menyebabkan munculnya garis vertikal pada gambar
- Garis dikoreksi menggunakan fungsi koreksi per kolom dengan regresi linear dan bobot Gaussian (iteratively reweighted least squares)
- Fungsi-fungsi koreksi ini membentuk struktur grup matematis, sehingga solusi sistem linear band-diagonal dipertimbangkan untuk mencegah drift saat koreksi terakumulasi
- Dalam praktiknya, noise frekuensi tinggi juga bisa ditekan dengan filter exponential smoothing
- Koreksi garis harus dilakukan sebelum estimasi kecepatan
Penekanan Noise
- Diterapkan teknik kontrol noise berbasis patch (block matching) dengan memanfaatkan secara aktif tekstur berulang pada permukaan kereta
- Vektor fitur dari patch piksel 3×3 digunakan, lalu noise dikurangi melalui rata-rata berbobot di antara patch yang mirip
- Performa meningkat jika dilakukan prapemrosesan sesuai distribusi Poisson (transformasi akar) berdasarkan kekuatan sinyal sebelum perbandingan
- Teknik total variation denoising yang sudah ada tidak cocok karena kehilangan tekstur terlalu besar
- Metode ini memiliki keterbatasan berupa komputasi yang berat dan kecepatan yang lambat
Koreksi Kemiringan (Skew)
- Jika kamera tidak tegak lurus, seluruh gambar akan tampak sedikit miring
- Deteksi skew sebaiknya dilakukan setelah estimasi kecepatan dan sebelum resampling akhir agar kehilangan informasi dapat diminimalkan
- Deteksi otomatis berdasarkan struktur vertikal dimungkinkan dengan Hough transform dan metode serupa
Koreksi Warna
- Saat ini nuansa warna disesuaikan dengan matriks koreksi manual
- Dalam praktiknya, kualitasnya sudah cukup baik, termasuk untuk skin tone yang natural
Detail Implementasi
- Seluruh pipeline diimplementasikan dengan Python dan numpy
- Karena ukuran data sangat besar (4096 baris × ratusan ribu kolom), digunakan pemrosesan bertahap per chunk untuk mengatasi masalah kekurangan memori
- Karena alokasi memori sekaligus tidak realistis, tiap tahap memproses dan menyimpan sebagian data secara terpisah
Pengalaman Implementasi
- Pernah mencoba mengadopsi alat AI untuk implementasi kode, tetapi hasilnya terbatas
- AI sering menghasilkan kode yang tidak efisien, misalnya membuat persoalan linear menjadi kompleksitas waktu kuadratik yang tidak perlu
- Ada juga masalah memori pada pemrosesan array besar, seperti pembuatan full mask yang tidak perlu
- Beberapa hal seperti API tertentu, penataan struktur kode, dan visualisasi (Matplotlib) tetap bisa dibuat lebih efisien dengan bantuan AI
Contoh Foto Kereta Line Scan dari Orang Lain
Adam Magyar
- [Adam Magyar] mengerjakan proyek "Stainless" dan "Urban Flow" dengan kamera line scan hitam-putih buatannya sendiri
- Ia pernah menghasilkan karya yang sangat bersih bahkan di lingkungan minim cahaya seperti interior metro
- Pemilihan lokasi pemotretan perlu memperhitungkan flicker pada pencahayaan metro
Blog KR64
- [kr64.seesaa.net] memuat banyak foto line scan kereta yang beragam dari seluruh Jepang
- Diduga berbasis kamera slit-scan film, dengan variasi dan kualitas yang sangat tinggi
- Situs ini sering down karena masalah teknis, dan tidak dapat dihubungi
Belum ada komentar.