1 poin oleh GN⁺ 2025-08-24 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.