License Plate Recognition (LPR)
Panduan operator untuk mendeteksi dan membaca plat nomor kendaraan secara real-time menggunakan Visionaire4 — mulai dari pemilihan varian, persyaratan kamera, konfigurasi area, hingga interpretasi output.
License Plate Recognition (LPR) adalah modul analitik Visionaire4 yang mendeteksi kendaraan dalam video stream, melakukan OCR pada plat nomor, dan mengirimkan event berisi nomor plat beserta metadata pendukung secara real-time. Tersedia dalam empat varian pipeline yang dapat disesuaikan dengan kebutuhan lokasi dan jenis kendaraan.
Pada akhir halaman ini Anda akan tahu apa yang dilakukan LPR, kapan menggunakannya, output yang dihasilkan, dan cara mengonfigurasinya. Untuk referensi endpoint API, lihat API Reference.
Apa yang Dilakukan
LPR memproses setiap frame dari video stream untuk mendeteksi kendaraan dan plat nomornya, lalu mengeluarkan event berisi hasil OCR ketika identifikasi dianggap cukup yakin.
Yang DILAKUKAN:
- Mendeteksi kendaraan (mobil, motor, bus, truk) dalam video stream
- Melakukan OCR pada plat nomor Indonesia — format sipil, militer, dan diplomatik (tergantung varian)
- Menentukan arah kendaraan (masuk/keluar) berdasarkan garis virtual yang dikonfigurasi (LPR2 dan LPRS)
- Membatasi duplikasi dengan cache berbasis waktu per plat
- Menyediakan MJPEG stream dengan overlay visual bounding box dan hasil OCR untuk monitoring
- Mengklasifikasikan tipe plat (sipil, pemerintah, militer, diplomatik) pada varian LPRS dan LPR3S
Yang TIDAK dilakukan:
- Tidak melakukan verifikasi whitelist/blacklist — logika akses harus diimplementasikan di aplikasi
- Tidak menyimpan riwayat event secara internal — gunakan Lenz atau webhook untuk penyimpanan
- Tidak mendukung plat nomor luar negeri
- Tidak memberikan kecepatan kendaraan
- LPR3/LPR3S tidak memberikan informasi arah (direction selalu
unknown)
Use Cases
Manajemen Parkir
Tracking masuk/keluar kendaraan otomatis untuk mall, apartemen, atau gedung perkantoran menggunakan direction inference LPR2.
Toll Gate & Highway
Pembacaan plat kecepatan tinggi dengan latensi rendah untuk gerbang tol dan ruas jalan tol menggunakan LPR3.
Gedung Pemerintah & Militer
Access control dengan klasifikasi plat sipil, pejabat, polisi, dan TNI menggunakan LPRS untuk area dengan campuran kendaraan dinas.
Security Checkpoint
Verifikasi kendaraan berlapis dengan akurasi tinggi di area keamanan — perbatasan, bandara, atau fasilitas sensitif.
Traffic Analytics
Monitoring volume lalu lintas dan klasifikasi kendaraan di highway menggunakan LPR3S untuk data statistik perhubungan.
Cara Kerja
LPR2 dan LPRS menggunakan arsitektur single-stage: satu inferensi mendeteksi kendaraan dan plat bersamaan. Hasil OCR dari beberapa frame dikumpulkan dan dikelompokkan berdasarkan kemiripan teks (Levenshtein distance), lalu konsensus dari mayoritas hasil dipilih sebagai output final. Metode ini toleran terhadap noise sesaat dan cocok untuk skenario yang membutuhkan akurasi konsisten.
LPR3 dan LPR3S menggunakan arsitektur two-stage: deteksi kendaraan dijalankan setiap frame, sedangkan plate detection dan OCR di-throttle ke FPS yang lebih rendah (default 4 FPS). Setiap kendaraan ditrack secara individual, dan hasil OCR langsung di-output begitu confidence score cukup tinggi. Pendekatan ini lebih efisien untuk skenario high-throughput dengan volume kendaraan tinggi.
Persyaratan
Kamera
| Requirement | Minimum | Rekomendasi |
|---|---|---|
| Resolusi stream | 1080p (1920×1080) | 1440p atau lebih |
| Frame rate | 10 FPS | 15–30 FPS |
| Codec | H.264 | H.264 / H.265 |
| Ukuran plat dalam frame | 80×30 pixel | 120×50 pixel |
Resolusi minimal 1080p sangat wajib untuk hasil OCR yang akurat. Resolusi lebih rendah menghasilkan ukuran plat yang terlalu kecil dalam frame sehingga karakter tidak terbaca dengan benar.
Pemasangan dan Lingkungan
| Aspek | Rekomendasi | Catatan |
|---|---|---|
| Sudut vertikal | 15–30 derajat dari horizontal | Terlalu curam mendistorsi perspektif plat |
| Jarak ke plat | 3–8 meter | Sesuaikan dengan focal length lensa |
| Tinggi pemasangan | 1–1,5 meter dari permukaan jalan | Posisi optimal untuk membaca plat |
| Pencahayaan | Minimal 300 lux di area plat | Tambahkan IR illuminator untuk operasi 24/7 |
| Hindari | Kamera menghadap langsung ke matahari | Backlight menyebabkan plat tampak gelap |
Dependensi
- Visionaire4 terinstal dan berjalan di node target
- GPU dengan VRAM minimal 800 MB (LPR2/LPRS) atau 1 GB (LPR3/LPR3S)
- RAM minimal 2 GB per pipeline
- CPU minimal 3 core per pipeline
- Stream video aktif dapat diakses oleh node Visionaire
Setting Up
Tentukan Varian Pipeline
Pilih varian berdasarkan kebutuhan lokasi:
| Kebutuhan | Pilihan |
|---|---|
| Plat sipil standar, butuh arah masuk/keluar | NFV4-LPR2 |
| Campuran sipil + militer/diplomatik, butuh klasifikasi | NFV4-LPRS |
| Volume tinggi, latensi rendah, tanpa arah | NFV4-LPR3 |
| Volume tinggi + klasifikasi multi-class | NFV4-LPR3S |
Pasang Kamera dan Verifikasi Feed
Pastikan kamera terpasang pada sudut dan jarak yang tepat (lihat bagian Persyaratan). Verifikasi feed video aktif dan dapat diakses oleh Visionaire4 melalui URL RTSP atau sumber stream yang dikonfigurasi.
Tentukan Area dan Garis Deteksi
Gambar polygon ROI (Region of Interest) yang mencakup area tempat plat paling jelas terbaca. Untuk LPR2 dan LPRS, tambahkan garis virtual untuk menentukan arah masuk/keluar. Semua koordinat menggunakan sistem yang dinormalisasi [0,1] relatif terhadap dimensi frame.
Spawn Pipeline via API
Kirim POST /pipeline/{node_num}/{stream_id}/{analytic_id} dengan konfigurasi area dan threshold yang sesuai. Lihat API Reference untuk detail parameter dan contoh request body.
Verifikasi dengan Snapshot atau MJPEG
Gunakan endpoint /snapshot untuk mengambil satu frame dan memverifikasi bahwa overlay bounding box dan ROI sudah benar. Atau buka /mjpeg untuk melihat stream real-time dengan overlay.
Konfigurasi Penerima Event
Pastikan sistem Anda (Lenz, webhook, atau aplikasi langsung) terhubung untuk menerima event payload LPR. Event dikirim setiap kali kendaraan dengan plat berhasil diidentifikasi.
Konfigurasi
Parameter API
Parameter ini dikirim dalam request body saat spawn pipeline atau diperbarui via endpoint config.
| Setting | Apa yang dilakukan | Default | Kapan disesuaikan |
|---|---|---|---|
plate_confidence_threshold | Minimum confidence score untuk plat diterima | 0.6 | Turunkan ke 0.4–0.5 untuk kondisi cahaya rendah; naikkan ke 0.7–0.8 untuk area keamanan tinggi |
vehicle_confidence_threshold | Minimum confidence score untuk kendaraan diterima | 0.6 | Turunkan bersamaan dengan plate threshold untuk kondisi sulit |
similarity_score_threshold | Toleransi perbedaan karakter antar sampel OCR (LPR2/LPRS) | 0.7 | Naikkan ke 0.8 untuk hasil lebih konsisten; turunkan ke 0.6 untuk toleransi typo |
min_group_member | Minimum sampel per grup sebelum output (LPR2/LPRS) | 2 | Naikkan ke 3–5 untuk keamanan tinggi; turunkan ke 1 untuk throughput maksimal |
max_group_member | Batas maksimum sampel per grup (LPR2/LPRS) | 30 | Kurangi ke 15–20 untuk hemat memori |
no_input_period_threshold | Frame tanpa input sebelum grup timeout (LPR2/LPRS) | 2 | Naikkan untuk kendaraan yang berhenti lama di area |
plate_cache_lifetime | Durasi cache plat dalam detik — mencegah duplikasi | 5 | Naikkan ke 10–15 untuk parking; turunkan ke 2–3 untuk toll dengan volume tinggi |
plate_recognition_fps | FPS plate detection (LPR3/LPR3S throttling) | 4 | Naikkan ke 6–8 untuk kendaraan cepat (toll/highway); turunkan ke 2–3 untuk parking |
bbox_offset | Toleransi offset asosiasi plat–kendaraan (0–max_bbox_offset) | 0.1 | Jarang perlu diubah; clamp otomatis di [0, max_bbox_offset] |
enable_dump_non_plate | Output event untuk kendaraan tanpa plat terdeteksi | false | Aktifkan untuk monitoring seluruh kendaraan tanpa terkecuali |
vehicle_score_threshold | Confidence minimum kendaraan saat dump non-plate aktif | 0.51 | Naikkan untuk mengurangi false positive non-plate vehicle event |
Tipe area (whitelist atau blacklist) ditentukan per-ROI lewat field roi_type di dalam definisi area, bukan parameter top-level. Untuk LPR2/LPRS, jika tidak ada area whitelist yang dikonfigurasi atau semua area bertipe blacklist, sistem otomatis membuat subset default yang memproses seluruh frame di luar zona blacklist.
Variabel Lingkungan
Variabel ini dikonfigurasi di level sistem Visionaire4, bukan per pipeline.
| Setting | Apa yang dilakukan | Default | Kapan disesuaikan |
|---|---|---|---|
VISIONAIRE_API_URL | Base URL Visionaire4 API | http://localhost:4004 | Sesuaikan dengan alamat dan port deployment Anda |
VISIONAIRE_NODE_NUM | Nomor node untuk identifikasi pipeline | 0 | Sesuaikan untuk deployment multi-node |
Output yang Dihasilkan
LPR mengirimkan event payload setiap kali kendaraan dengan plat nomor berhasil diidentifikasi. Event dikirimkan sekali per kendaraan per periode cache (dikontrol oleh plate_cache_lifetime).
Field Utama
| Field | Tipe | Deskripsi | Tersedia di |
|---|---|---|---|
analytic_id | string | Varian pipeline yang menghasilkan event | Semua |
stream_id | string | ID stream sumber | Semua |
timestamp | string (ISO 8601) | Waktu event dalam UTC | Semua |
detections[].plate_number | string | Hasil OCR nomor plat | Semua |
detections[].plate_type | string | Tipe plat (lihat tabel di bawah) | Semua |
detections[].confidence | float | Confidence OCR (0–1) | Semua |
detections[].label | string | Jenis kendaraan (car, motorcycle, dll.) | Semua |
detections[].area_name | string | Nama ROI area tempat terdeteksi | Semua |
detections[].direction | string | in, out, atau unknown | LPR2, LPRS (LPR3 selalu unknown) |
detections[].bounding_box | object | Posisi kendaraan dalam koordinat [0,1] | Semua |
detections[].attributes | object | Confidence detail per komponen | Semua |
Tipe Plat
| Nilai | Deskripsi | Tersedia di |
|---|---|---|
plate | Plat kendaraan sipil standar | LPR2, LPR3 |
private | Kendaraan pribadi | LPRS, LPR3S |
public | Kendaraan umum | LPRS, LPR3S |
government | Kendaraan pemerintah | LPRS, LPR3S |
embassy | Kendaraan diplomatik | LPRS, LPR3S |
new_vehicle | Kendaraan baru (plat merah sementara) | LPRS, LPR3S |
police | Kepolisian | LPRS, LPR3S |
tni_1-AU | TNI Angkatan Udara | LPRS, LPR3S |
tni_2-AD | TNI Angkatan Darat | LPRS, LPR3S |
tni_3-AL | TNI Angkatan Laut | LPRS, LPR3S |
kemenhan | Kementerian Pertahanan | LPRS, LPR3S |
mabes_tni | Markas Besar TNI | LPRS, LPR3S |
Contoh Payload
{
"analytic_id": "NFV4-LPR2",
"stream_id": "gate_entry_001",
"timestamp": "2024-01-15T10:30:00Z",
"detections": [
{
"confidence": 0.95,
"label": "car",
"area_name": "Gate A",
"plate_number": "B1234ABC",
"plate_type": "plate",
"direction": "in",
"bounding_box": {
"left": 0.2,
"top": 0.3,
"width": 0.3,
"height": 0.4
},
"attributes": {
"vehicle": { "label": "car", "confidence": 0.92 },
"plate": { "label": "plate", "confidence": 0.88 },
"character": { "label": "B1234ABC", "confidence": 0.95 }
}
}
]
}Best Practices
Penempatan Kamera
- Posisikan kamera pada sudut 15–30 derajat dari horizontal agar plat nomor tidak terdistorsi perspektif
- Jarak optimal ke titik baca plat adalah 3–8 meter — terlalu dekat mempersingkat waktu deteksi, terlalu jauh mengurangi resolusi plat
- Tinggi pemasangan 1–1,5 meter dari permukaan jalan memberikan sudut pandang terbaik untuk plat kendaraan roda empat
- Hindari menempatkan kamera yang langsung menghadap matahari — gunakan sunshield atau pilih posisi berlawanan dengan arah matahari utama
Pencahayaan
- Pastikan minimal 300 lux di area tempat plat terbaca
- Pasang IR illuminator untuk operasi malam hari atau area dengan pencahayaan tidak merata
- Pertimbangkan polarizing filter untuk mengurangi glare dari permukaan plat metalik
- Hindari sumber cahaya langsung yang mengarah ke lensa kamera
Tuning Area ROI
- Letakkan polygon ROI di area di mana plat paling jelas terbaca, bukan di seluruh jalur kendaraan
- Untuk direction inference (LPR2/LPRS), posisikan garis virtual di titik di mana kendaraan bergerak tegak lurus — biasanya tengah jalur
- Gunakan endpoint
/snapshotuntuk memverifikasi posisi ROI sebelum deployment - Jangan buat area yang terlalu lebar — memperbesar kemungkinan false positive dari kendaraan di lane berbeda
Threshold Tuning
- Mulai dengan nilai default, kemudian sesuaikan berdasarkan hasil observasi
- Untuk high-security (parkir apartemen, checkpoint): naikkan threshold dan
min_group_member, terima miss rate lebih tinggi - Untuk high-throughput (toll, highway): turunkan threshold sedikit, tangani duplikasi dan false positive di level aplikasi
- Monitor rasio false positive vs false negative secara berkala dan sesuaikan threshold
Limitations
- Motion blur dari kendaraan berkecepatan tinggi dapat menyebabkan karakter plat tidak terbaca — atasi dengan shutter speed kamera yang lebih tinggi (>1/500s) atau tambahkan pencahayaan
- Glare dan refleksi pada permukaan plat metalik dapat mengaburkan karakter — gunakan polarizing filter atau sesuaikan sudut kamera
- Plat kotor atau rusak mengurangi akurasi OCR secara signifikan dan tidak dapat diatasi dari sisi konfigurasi
- Plat non-Indonesia (luar negeri) tidak didukung oleh model saat ini
- LPR3/LPR3S tidak memberikan direction inference — implementasikan logika arah di level aplikasi jika dibutuhkan
- Resolusi di bawah 1080p akan menghasilkan banyak kesalahan OCR karena ukuran plat terlalu kecil dalam frame
- Plat dengan karakter tidak standar (modifikasi, stiker, font custom) dapat menyebabkan OCR menghasilkan karakter yang salah
- Setiap pipeline membutuhkan resource GPU dan CPU yang terpisah — pertimbangkan kapasitas hardware sebelum menambah banyak pipeline di satu node
Modul Terkait
Face Recognition
Deteksi dan identifikasi wajah secara real-time untuk access control berbasis biometrik.
People Analytics
Hitung dan analisis pergerakan orang — jumlah pengunjung, kepadatan area, dan pola lalu lintas pejalan kaki.
Vehicle Analytics
Klasifikasi dan penghitungan kendaraan berdasarkan jenis — mobil, motor, bus, truk — tanpa OCR plat.
API Reference — Face Recognition
Endpoint REST API untuk membuat pipeline Face Recognition pada stream Visionaire4 dan event streaming hasil recognition via WebSocket.
API Reference — License Plate Recognition
Referensi lengkap endpoint REST API Visionaire4 untuk manajemen pipeline License Plate Recognition — spawn, status, konfigurasi, streaming, dan format event output.