Aplikasi Android untuk stacking foto multi-frame: ambil atau pilih beberapa foto dari scene yang sama, lalu StackScan menyelaraskan (align) dan menggabungkannya (stack) menjadi satu gambar yang lebih bersih, lebih tajam, dan lebih kaya detail — semua diproses 100% offline di perangkat. Versi APK saat ini: 9.0 (versionCode 18).
Stacking
- 5 algoritma: Real (kappa-sigma), Lighten, Median, Trails (star trails), dan Align only.
- Alignment sub-pixel (OpenCV ECC) + alignment berbasis bintang toleran rotasi (pencocokan rasio jarak + deteksi bintang adaptif) untuk foto astro, dengan fallback ECC.
- Mode Pro streaming untuk 17+ frame, file RAW/DNG, dan kualitas Full (tanpa batas jumlah, memori konstan).
- Kualitas kerja: Cepat, HD, dan Full/Asli (hingga 4096px, menyesuaikan memori perangkat).
- Dark frames & flat frames opsional — dikoreksi sebelum penyelarasan di semua jalur; dark master mempertahankan hot pixel agar pengurangannya tepat.
- RAW/DNG 16-bit asli — dibaca dalam 16-bit penuh (bukan dipotong ke 8-bit) dengan orientasi EXIF diterapkan.
- Deteksi langit otomatis (sky mask per-piksel), kunci tanah (freeze ground), koreksi vignette, reduksi polusi cahaya, kecerahan langit, hapus hot pixels, perkuat warna bintang, dan normalisasi eksposur antar-frame.
Output & pengaturan
- Simpan JPG + TIFF 16-bit (multi-strip, profil ICC sesuai ruang warna, resolusi 300 DPI), kecerahan otomatis, merge piksel 2×2, komposisi HDR berbasis luminance, ketajaman.
- Keseimbangan warna (slider tint 2700–10000 K) dan ruang warna (sRGB / Adobe RGB / Display P3) — TIFF menyertakan profil ICC yang sesuai.
- Preset Umum, Astro, Gelap (Deep-sky), Sequator, Manual, dan preset kustom; semua setelan tersimpan otomatis antar sesi.
- Riwayat hasil: 50 hasil terakhir dengan thumbnail, statistik, dan akses cepat.
- Stacking berjalan di latar belakang (WorkManager) dengan notifikasi progres — boleh keluar aplikasi atau mematikan layar.
- Buka aplikasi, pilih Pilih Foto dari galeri.
- Pilih minimal 2 foto dari scene yang sama (makin banyak, makin bersih hasilnya).
- Atur preset/algoritma/kualitas di Setelan (opsional; preset sudah optimal untuk tiap skenario).
- Tekan Stack & Simpan — hasil otomatis tersimpan ke galeri
Pictures/StackScan.
Prasyarat: JDK 17, Android SDK, dan NDK.
./gradlew :app:assembleDebugAPK dihasilkan di app/build/outputs/apk/debug/app-debug.apk.
Release signing. Kredensial penandatanganan dibaca dari variabel
lingkungan (dianjurkan) atau gradle.properties lokal — jangan simpan
kredensial di file yang ikut ter-commit: STACKSCAN_STORE_PASSWORD,
STACKSCAN_KEY_ALIAS, STACKSCAN_KEY_PASSWORD. Keystore diletakkan di
../stackscan-release.keystore (relatif ke folder proyek) dan tidak ikut
di-commit (lihat .gitignore).
app/src/main/
├── assets/
│ └── licenses/ # teks lisensi pihak ketiga (dipakai dialog Tentang)
├── java/com/stackscan/
│ ├── MainActivity.kt # entry point + photo picker + init OpenCV
│ ├── ui/
│ │ ├── StackScreen.kt # layar utama, riwayat hasil, dialog Tentang/Panduan
│ │ ├── SettingsScreen.kt # setelan (Algoritma / Koreksi / Output)
│ │ └── StackViewModel.kt # state, preset, persistensi
│ ├── processing/
│ │ ├── ImageStacker.kt # inti: align → stack → koreksi → output
│ │ ├── BitmapLoader.kt # decode + downscale (+ orientasi EXIF RAW)
│ │ ├── ImageSaver.kt # simpan ke galeri (JPG + TIFF)
│ │ ├── RawDecoder.kt # decode RAW 16-bit via JNI LibRaw
│ │ └── TiffEncoder.kt # encoder TIFF 16-bit (multi-strip + ICC)
│ └── work/
│ └── StackWorker.kt # stacking latar belakang (WorkManager)
├── cpp/
│ ├── rawdecoder.cpp # JNI milik StackScan
│ └── libraw/ # LibRaw vendor (utuh, tanpa modifikasi)
└── res/
scripts/
├── build-raw-libs.sh # build librawdecoder.so (NDK)
└── gen_icc.py # generator profil ICC untuk TIFF
- Kotlin + Jetpack Compose (Material 3) — UI.
- OpenCV 4.13 — alignment ECC, deteksi bintang, koreksi & blending.
- LibRaw 0.21.3 + NDK (JNI) — decode RAW/DNG 16-bit di perangkat.
- WorkManager — proses stacking di latar belakang.
- Min SDK 24 (Android 7+), target SDK 34.
Daftar lengkap pustaka pihak ketiga, versi, lisensi, dan pemegang hak cipta ada di THIRD_PARTY_LICENSES.md; teks lisensi juga ikut ter-distribusi di dalam APK (menu Tentang & Lisensi).
- OpenCV — Apache 2.0
- LibRaw — LGPL v2.1 / CDDL v1.0 (sumber utuh:
app/src/main/cpp/libraw/, tanpa modifikasi) - Jetpack Compose — Apache 2.0
- Kotlin — Apache 2.0
Metode pemrosesan (alignment, kappa-sigma clipping, reduksi polusi cahaya, koreksi vignette) adalah teknik standar astronomi & fotografi yang terdokumentasi luas di ranah publik. StackScan tidak berafiliasi dengan lembaga/instansi mana pun.
Kode StackScan sendiri dilisensikan di bawah Apache License 2.0 — lihat
LICENSE dan NOTICE. Lisensi pihak ketiga tidak berubah
dan tetap milik pemegang hak ciptanya masing-masing (lihat
THIRD_PARTY_LICENSES.md).
StackScan memproses foto 100% offline di perangkat: tidak ada izin
INTERNET, tidak ada pengumpulan data, telemetri, akun, atau iklan. Foto hanya
diproses lokal dan hasilnya disimpan ke Pictures/StackScan. Pernyataan
lengkap: PRIVACY.md.
9.0 (versionCode 18) — pembaruan besar engine & tata kelola proyek:
- RAW/DNG dibaca 16-bit asli (sebelumnya terpotong ke 8-bit) dengan orientasi EXIF diterapkan.
- Kalibrasi dark/flat diterapkan sebelum warp di semua jalur; dark master mempertahankan hot pixel.
- Alignment bintang toleran rotasi (uji rasio Lowe + deteksi bintang adaptif) dengan fallback ECC.
- Hot pixel adaptif, HDR berbasis luminance, dan kappa-sigma dengan sigma konsisten.
- TIFF: profil ICC (sRGB/Adobe RGB/P3), multi-strip, resolusi 300 DPI & tag Software; upscale dilewati saat binning 2× aktif.
- Align-only stream-save (simpan langsung + recycle — anti-OOM pada frame banyak).
- Konvensi white balance diperjelas sebagai slider tint (bukan suhu fisik cahaya).
- Tata kelola proyek: lisensi Apache-2.0 (
LICENSE/NOTICE),PRIVACY.md, kredit pihak ketiga diperbarui (termasuk LibRaw static-link & LGPL pasal 6), header lisensi di semua file sumber, dialog Tentang lengkap (versi, pengembang, tautan GitHub).
- Butuh minimal 2 foto dari scene yang sama; stacking tidak bisa memunculkan detail yang tidak pernah terekam.
- Proses RAW resolusi sangat besar (48MP+) lebih lambat; gunakan kualitas Cepat/HD untuk itu.
- Kualitas Full/Asli menyesuaikan kapasitas memori perangkat (resolusi diturunkan otomatis pada perangkat dengan RAM kecil).
- Sampai 16 frame diproses sekaligus (kappa-sigma iteratif penuh / Median); 17+ frame memakai Mode Pro streaming (lebih hemat memori, sedikit lebih lama).