Kode QR Bisa Didekode pada 1,2:1. Jangan Merancang di Dekat Angka Itu
oleh Tim KoloQRRiset

Baik Apple maupun Google tidak mempublikasikan ambang kontras untuk aplikasi kamera yang membaca sebagian besar kode QR, jadi setiap angka yang dikutip sebagai batas iPhone atau Android dikutip dari pengukuran yang tidak pernah dipublikasikan siapa pun. Yang bisa dibaca adalah kode sumber ZXing, dekoder sumber terbuka di balik sebagian besar sisanya: ia bekerja dalam blok 8 x 8 piksel dan menganggap blok yang piksel paling terang dan paling gelapnya hanya berselisih 24 tingkat dari 255 sebagai blok yang sama sekali tidak berisi tepi. Itu rasio kontras sekitar 1,24:1 - abu-abu yang nyaris tak terlihat di atas putih. Dekoder bukanlah kendalanya. Kertas yang memantulkan 85% alih-alih 100%, tinta yang melebar, silau yang mengangkat bagian hitam, dan keburaman gerak setengah milimeter itulah kendalanya, dan itulah sebabnya angka kerja yang sebenarnya adalah 4:1 di layar dan 7:1 di cetakan.
Poin Utama
- Baik Apple maupun Google tidak mempublikasikan ambang kontras untuk pemindaian QR bawaan iOS dan Android, jadi satu angka yang dikutip sebagai batas "resmi" iPhone atau Android bukanlah pengukuran yang bisa diperiksa siapa pun. Yang bisa diperiksa adalah kode sumber ZXing yang dipublikasikan, dekoder sumber terbuka itu, dan standar mutu cetak ISO/IEC 15415.
- Binarizer hibrida ZXing bekerja pada blok 8 x 8 piksel dan menganggap blok yang piksel paling terang dan paling gelapnya berselisih 24 tingkat atau kurang dari 255 sebagai blok tanpa tepi. Terhadap putih, 24 tingkat itu adalah abu-abu #E7E7E7 - rasio kontras sekitar 1,24:1.
- Rancang pada 4:1 untuk layar dan 7:1 untuk cetakan, dan perlakukan 3:1 sebagai garis batas: di bawahnya sebuah kode tidak layak diterbitkan. Jarak antara 1,24:1 dan 7:1 bukan takhayul: itu kertas, cahaya sekitar, silau, dan keburaman yang mengurangi angka desain sebelum dekoder melihat apa pun.
- Rasio kontras bukanlah yang diukur kamera. Rasio itu membobot hijau pada 71% dari kecerahan yang dipersepsi dan menambahkan suku flare; kanal luminans kamera membobot hijau pada 59% dan tidak menambahkan apa pun. Keduanya paling berbeda pada merah, hijau, dan biru yang jenuh, dan rasio adalah yang lebih keras di antara keduanya.
- Keburaman dan kontras rendah saling mengalikan alih-alih menjumlah, karena keburaman merata-ratakan piksel bertetangga dan karenanya memperkecil rentang paling terang ke paling gelap di dalam setiap blok - persis besaran yang diambangkan binarizer. Kode yang selamat pada 3:1 dalam foto diam akan gagal pada 3:1 di tangan yang bergerak.
Tidak Ada yang Mempublikasikan Angkanya, dan di Situlah Titik Berangkatnya
Tidak ada ambang kontras yang dipublikasikan untuk pemindaian kode QR bawaan kamera iPhone dan Android. Deteksi barcode Apple berada di dalam framework Vision dan milik Android di dalam Google Play Services, keduanya tertutup, keduanya tidak terdokumentasi pada titik ini, dan tidak satu pun pernah menyatakan nilai minimum. Artikel mana pun yang menyebut satu angka - 3:1, 4:1, 40% - sedang mengutip pedoman desain yang ditulis untuk hal lain, atau tidak mengutip apa-apa.
Itu layak dikatakan terus terang alih-alih disiasati, sebab bentuk jawaban yang jujur mengalir darinya. Tiga hal bisa dipastikan tanpa memiliki laboratorium: apa yang dilakukan dekoder sumber terbuka, karena kode sumbernya dipublikasikan; apa yang diukur standar mutu cetak, karena ia standar yang diterbitkan; dan apa yang dilakukan kode tertentu pada ponsel tertentu, karena itu butuh dua puluh menit dan sebuah printer. Segala hal lain tentang topik ini adalah kesan pribadi seseorang.
Alasan pertanyaan ini terus muncul adalah karena kontras satu-satunya variabel kode QR yang dikendalikan perancang tanpa disengaja. Ukuran modul adalah keputusan yang disengaja. Koreksi kesalahan adalah keputusan yang disengaja. Warna dipilih untuk palet merek tiga tahun sebelum ada yang memikirkan kode QR, dan kode itu mewarisinya. Jadi pertanyaan praktisnya bukan "berapa minimumnya" melainkan "berapa margin yang disisakan palet ini untuk saya", dan itu ada jawabannya.
Yang Sebenarnya Diukur Dekoder Adalah Selisih Lokal
Dekoder tidak pernah membandingkan warna depan Anda dengan warna latar Anda. Ia mengubah bingkai kamera menjadi satu kanal abu-abu, menentukan untuk setiap lingkungan kecil piksel di mana batas antara gelap dan terang jatuh dalam lingkungan itu, lalu membaca modul dari hasilnya. Binerisasi adalah langkah ketika dekoder mengubah foto abu-abu menjadi piksel hitam dan putih murni sebelum ia mencoba membaca modul apa pun. Segala hal tentang toleransi kontras ditentukan di sana.
ZXing adalah dekoder yang layak dibaca, karena ia satu-satunya dekoder yang dipakai luas dan kode sumbernya terbuka. Binarizer hibrida bawaannya membagi citra menjadi blok 8 x 8 piksel, menghitung piksel paling terang dan paling gelap di setiap blok, lalu menetapkan ambang blok itu tepat di tengah keduanya. Di bawah dimensi citra 40 piksel, ia meninggalkan pendekatan lokal dan mengambangkan seluruh citra sekaligus.
Konstanta yang menarik adalah penjaga di dalam perulangan blok itu. Kalau selisih antara piksel paling terang dan paling gelap dalam sebuah blok adalah 24 atau kurang, dari 255, ZXing tidak menghitung ambang darinya - ia menganggap blok itu hanya berisi piksel terang atau hanya piksel gelap dan meminjam perkiraan dari tetangganya. Dua puluh empat tingkat di bawah putih adalah abu-abu #E7E7E7, yang berarti rasio kontras sekitar 1,24:1. Pada citra digital yang bersih dengan ukuran modul yang lapang, itulah batas bawahnya.
Dua akibat mengikutinya, dan keduanya lebih berguna daripada angkanya sendiri. Yang pertama, kontras diukur secara lokal, kira-kira seluas beberapa modul, bukan melintasi halaman - itulah sebabnya gradien yang berubah perlahan di belakang kode jauh lebih tidak berbahaya daripada tampaknya, dan sebabnya foto di belakang kode itu fatal. Gradien mempertahankan selisih lokal tetap utuh di mana-mana; foto membalikkan sisi batas tempat sebuah modul mendarat, di tengah jalan melintasi simbol.
Yang kedua, kontras dan ukuran adalah masalah yang sama dengan pakaian berbeda. Bloknya delapan kali delapan piksel kamera, bukan delapan kali delapan modul, jadi berapa banyak modul yang jatuh di dalam satu blok sepenuhnya bergantung pada seberapa besar simbol itu mendarat di sensor. Kode yang memenuhi bingkai mendapat beberapa blok per modul dan ambang yang dihitung dari tepi modul itu sendiri. Kode yang difoto dari terlalu jauh mendapat satu blok yang membentang beberapa modul dan ambang yang dirata-ratakan atas semuanya, yang berarti selisih efektif lebih kecil dari karya visual yang persis sama. Menentukan ukuran kode untuk jarak pindainya karena itu bagian dari anggaran kontrasnya, bukan topik terpisah.
Angka Desain dan Angka yang Diterima Kamera Itu Berbeda
Segala hal antara berkas desain dan sensor citra mengurangi kontras, dan kerugiannya bertumpuk alih-alih saling meniadakan. Inilah seluruh alasan angka yang disarankan duduk enam kali lipat di atas batas bawah dekoder, dan itu layak dirinci satu per satu alih-alih diringkas, karena sebagian besar butirnya bisa diperbaiki dan perbaikannya murah.
- Kertasnya tidak putih. Kertas kantor dan kertas offset tanpa lapisan memantulkan kira-kira 80 hingga 90% cahaya yang mengenainya. Rasio desain 21:1 tidak tiba sebagai 21:1; ia tiba sebesar apa pun yang diizinkan bahan itu bahkan sebelum setetes tinta dibubuhkan.
- Tinta melebar. Modul gelap tumbuh ke sel terang di sebelahnya pada bahan yang menyerap, yang menaikkan nilai paling gelap dan menurunkan nilai paling terang di dalam setiap blok yang diukur dekoder. Kertas kraft, kertas koran, dan kertas struk termal adalah pelanggar terburuknya.
- Kilap dan laminasi menambahkan cahaya pada keduanya. Pantulan spekular memasukkan jumlah cahaya putih yang sama ke modul gelap dan modul terang, yang mengangkat tingkat hitam dan memampatkan rasionya - aritmetika yang sama dengan suku flare dalam rumus kontras. Laminasi matte mengorbankan sedikit ketajaman dan mengembalikan kontras lebih banyak daripada yang dikorbankannya.
- Cahaya sekitar melakukan hal yang sama. Kode di balik etalase toko pada siang hari tertutup silau selubung. Kode di restoran yang remang membuat kamera menaikkan penguatan sensornya, yang menambahkan derau tepat pada besaran yang diukur binarizer.
- Pencahayaan otomatis diatur untuk bingkainya, bukan untuk kodenya. Kode gelap pada label terang kecil di dalam foto yang sebagian besar gelap akan dieksposkan untuk bagian gelapnya, dan labelnya terpotong ke arah putih dengan modul-modulnya ikut terseret naik.
- Keburaman adalah pengalinya. Kesalahan fokus dan gerakan tangan merata-ratakan setiap piksel dengan tetangganya, dan perata-rataan itulah yang persis memperkecil rentang paling terang ke paling gelap di dalam blok 8 x 8. Kontras rendah dan sedikit keburaman tidak saling menjumlah, keduanya saling mengalikan, dan itulah sebabnya kode yang pas-pasan lulus saat seseorang menyangga ponselnya dan gagal saat tidak.
Layar punya versinya sendiri dari daftar yang sama, yang mengejutkan orang yang menganggap layar itu lingkungan terkendali. Ponsel pada kecerahan 20% di bawah sinar matahari, di balik pelindung layar matte, menampilkan kode di dalam peramban yang menerapkan filter mode gelap padanya, tidak sedang menyampaikan rasio yang tertulis di berkas desain. Rasio desain adalah langit-langit dari yang bisa dicapai, tidak pernah nilai yang benar-benar tiba.
Jadi jawaban atas "berapa kontras yang dibutuhkan ponsel" adalah bahwa ponsel butuh sangat sedikit dan alur kerjalah yang butuh banyak. Margin yang Anda anggarkan bukan margin terhadap dekoder. Itu margin terhadap delapan hal di atas, yang tak satu pun terlihat di monitor tempat keputusan itu diambil.
Tangga Kontras: Pengujian yang Menghasilkan Angka Anda Sendiri
Cara menemukan batas bawah kontras untuk pekerjaan tertentu adalah mencetak kode yang sama pada delapan tingkat kontras menurun di bahan sungguhan lalu mencatat di mana ia berhenti bekerja. Ini butuh sekitar dua puluh menit, biayanya satu lembar kertas, dan hasilnya angka untuk printer Anda, bahan Anda, dan ponsel pelanggan Anda, bukan untuk milik orang lain.
Delapan anak tangga di bawah adalah warna abu-abu di atas putih, dipilih agar masing-masing mendarat pada rasio kontras yang bulat. Buat muatan yang sama delapan kali, satu untuk tiap warna depan, jaga latarnya tetap putih murni, jaga bentuk dan ukuran modul identik pada kedelapannya, lalu tata semuanya dalam satu lembar sesuai urutan yang diberikan.
| Warna depan di atas putih | Rasio kontras | Selisih luminans (dari 255) | Selisih reflektansi |
|---|---|---|---|
| #000000 | 21:1 | 255 | 100% |
| #595959 | 7,0:1 | 166 | 90% |
| #7F7F7F | 4,0:1 | 128 | 79% |
| #949494 | 3,0:1 | 107 | 70% |
| #A3A3A3 | 2,5:1 | 92 | 63% |
| #B7B7B7 | 2,0:1 | 72 | 53% |
| #D2D2D2 | 1,5:1 | 45 | 36% |
| #E7E7E7 | 1,24:1 | 24 | 20% |
- Cetak Delapan Anak Tangga pada Ukuran Akhir di Bahan Akhir. Satu lembar, kedelapan kode pada ukuran kode yang sesungguhnya nanti, di bahan yang dipakai pekerjaan sungguhan. Cetakan laser kantor di kertas fotokopi bukan pengujian yang sah kalau pekerjaannya mendarat di kertas kraft, label botol, atau kartu menu - pelebaran tinta berbeda menurut bahan dan dikurangkan dari anggaran yang sama dengan warna.
- Pindai Setiap Anak Tangga dengan Dua Ponsel, Hanya Kamera Bawaan. Satu iOS dan satu Android, memakai aplikasi kamera bawaan alih-alih aplikasi pemindai. Aplikasi pemindai khusus lebih toleran daripada yang bawaan dan akan meluluskan anak tangga yang tidak bisa dilewati pelanggan Anda. Catat anak tangga pertama yang gagal di salah satu ponsel.
- Ulangi di Bawah Cahaya Tempat Kode Itu Akan Hidup. Bawa lembar yang sama ke tempat sesungguhnya - meja restoran, rak toko, papan tanda luar ruang saat senja. Pencahayaan menggeser titik kegagalan lebih banyak anak tangga daripada variabel tunggal mana pun, dan inilah langkah yang paling sering dilewati.
- Ulangi pada Jarak dan Sudut yang Sebenarnya. Pindai dari tempat orang benar-benar berdiri, dan sekali lagi pada sekitar 30 derajat dari tegak lurus. Jarak mengurangi jumlah piksel per modul, yang mengecilkan selisih yang dilihat setiap blok; sudut miring memakan sedikit lagi dari hal yang sama.
- Ulangi Tanpa Menyangga Ponsel. Pegang dengan cara yang sembrono, satu tangan, sambil bergerak. Keburaman memperkecil rentang paling terang ke paling gelap di dalam setiap blok, jadi putaran ini biasanya gagal satu anak tangga lebih awal daripada yang hati-hati. Angka yang sembrono itulah angka yang sebenarnya.
- Rancang Dua Anak Tangga di Atas Kegagalan Pertama. Ambil hasil terburuk dari semua kondisi lalu naik dua anak tangga dari sana. Dua anak tangga adalah margin kerja untuk variabel yang tidak bisa dicakup pengujian - ponsel yang berbeda, hari yang lebih dingin, kepala cetak yang aus, laminasi yang tidak dimiliki contoh cetaknya.
Satu anak tangga layak diberi catatan. Baris #000000 adalah kontrol, bukan pengujian: kalau hitam di atas putih gagal pada lembar itu, masalahnya ada pada ukuran, fokus, silau, atau zona sunyi, dan tidak ada satu pun anak tangga di bawahnya yang akan memberi tahu Anda apa pun sampai itu diperbaiki.
Warna Bukanlah Kontras, dan Kedua Metrik Itu Berbeda Pendapat
Rasio kontras sebuah warna adalah penduga yang buruk untuk bagaimana warna itu berperilaku di kamera, karena kedua angka itu dibangun secara berbeda. Rasio kontras adalah satu angka tunggal yang membandingkan luminans relatif dua warna, membentang dari 1:1 untuk dua warna yang identik hingga 21:1 untuk hitam di atas putih. Ia membobot hijau pada 71% dari kecerahan yang dipersepsi, menerapkan kurva gamma, dan menambahkan suku flare kecil yang sengaja menghukum pasangan warna gelap. Kanal abu-abu kamera membobot hijau pada 59%, merah pada 30%, dan biru pada 11%, serta tidak menambahkan apa pun.
| Warna di atas putih | Rasio kontras | Selisih luminans (dari 255) |
|---|---|---|
| Hitam #000000 | 21:1 | 255 |
| Biru dongker pekat #0F172A | 17,9:1 | 232 |
| Merah tua #7F1D1D | 10:1 | 197 |
| Biru murni #0000FF | 8,6:1 | 226 |
| Biru merek #1D4ED8 | 6,7:1 | 176 |
| Hijau web #008000 | 5,1:1 | 180 |
| Merah #DC2626 | 4,8:1 | 163 |
| Merah murni #FF0000 | 4,0:1 | 179 |
| Hijau #16A34A | 3,3:1 | 144 |
| Magenta #FF00FF | 3,1:1 | 150 |
| Oranye #FF7F00 | 2,5:1 | 104 |
| Ambar #F59E0B | 2,2:1 | 88 |
| Hijau murni #00FF00 | 1,4:1 | 105 |
| Sian #00FFFF | 1,25:1 | 76 |
| Kuning #FFFF00 | 1,07:1 | 29 |
Biru murni menonjol dan itulah temuan yang berguna dalam tabel ini. Pada 8,6:1 dengan selisih luminans 226, ia berada di urutan kedua setelah warna nyaris hitam pada kedua ukuran, yang menjadikan biru pekat sebagai warna jenuh paling aman untuk kode QR dengan jarak yang lebar. Merah tua dan ungu plum tua menyusul. Warna mana pun yang rasionya berasal dari kegelapannya, bukan dari kejenuhannya, akan berperilaku baik. Palet mana yang tersisa dan di mana tempatnya dibahas di kode QR berwarna.
Hijau murni adalah tempat kedua metrik paling menyimpang satu sama lain, sekaligus tempat rasio tetap layak dipercaya. Rasio 1,4:1 miliknya tampak seperti bencana sementara selisih luminansnya 105 setara dengan 104 milik oranye, jadi kamera melihat lebih banyak pada kode hijau daripada yang tersirat dari rasionya. Itu tetap tidak cukup: 105 dari 255 kurang dari separuh skala bahkan sebelum kertas, cahaya, dan lensa mengambil bagiannya, dan kode hijau adalah kode yang selalu berhasil di mockup dan gagal di rak.
Kuning, sian, dan ambar gagal pada kedua ukuran dan tidak ada teknik yang menyelamatkannya. Kuning di atas putih memberi kamera selisih 29 tingkat dari 255 - nyaris tak beranjak di atas 24 tempat ZXing berhenti mencari tepi sama sekali. Kode kuning bukan kode yang berisiko, melainkan benda dekoratif yang sesekali terpindai dalam kondisi sempurna.
Perbaikan saat warna merek tidak mencapai target selalu sama dan selalu ke satu arah: gelapkan kodenya, jangan terangkan latarnya. Latar harus tetap mendekati putih agar selisih reflektansinya selamat di cetakan, dan warna merek yang digelapkan dua atau tiga langkah biasanya tetap mempertahankan identitasnya sambil melipatgandakan rasionya. Kalau itu tidak bisa diterima, taruh warna merek pada bingkai, label, dan ajakan bertindak di sekeliling kode dan biarkan kodenya sendiri tetap gelap - kode QR bermerek sebagian besar adalah ini, dan itu sama sekali tidak memakan kontras.
Modul Terang di Atas Latar Gelap Adalah Masalah Tersendiri
Kode QR terbalik - modul terang di atas latar gelap - bisa punya rasio kontras sempurna dan tetap gagal, karena rasio itu simetris sedangkan dekoder tidak. Putih di atas hitam terhitung 21:1 yang sama dengan hitam di atas putih, dan tidak ada pemeriksaan kontras di mana pun yang akan menandainya. Yang berbeda-beda adalah apakah perangkat lunak di ujung sana bersedia mencoba citra itu dalam dua arah.
Aplikasi kamera iPhone dan Android saat ini umumnya menangani kode terbalik, dan hal ini terus membaik. Perangkat keras lamalah tempatnya patah: pemindai citra tetap, pemindai kasir, dan peralatan gudang kerap mengharapkan data gelap di atas latar terang dan tidak punya tahap pembalikan, dan ZXing sendiri hanya membalik ketika aplikasi pemanggilnya membungkus citra dalam sumber luminans terbalik yang ia sediakan - keputusan yang dibuat oleh pembuat aplikasinya, bukan oleh kodenya.
Aturan praktisnya, pembalikan adalah taruhan pada pembacanya, bukan sifat kodenya. Untuk poster, layar, atau unggahan media sosial yang dibaca ponsel, kode terbalik adalah pilihan desain yang masuk akal. Untuk apa pun yang mungkin dipindai pelanggan dengan peralatan tak dikenal, atau apa pun yang dibaca di kasir, itu lemparan koin yang diambil demi alasan estetika, dan versi amannya - kode gelap di dalam bidang terang, di atas latar gelap - hanya memakan satu persegi panjang.
Ada satu ketidaksimetrisan lagi yang layak disebut, karena ia tak terlihat di layar. Mencetak kode terang di atas latar gelap berarti membubuhkan area gelap pejal yang luas, dan cakupan pejal melebar lebih banyak daripada cakupan yang jarang. Modul terang itulah yang menyusut, dan modul itu pula yang sedang dibaca dekoder sebagai separuh terang dari pasangan itu. Kode terbalik karena itu kehilangan lebih banyak kontras di cetakan daripada kode yang sama dalam arah normal.
Apa yang Diukur Standar Cetak alih-alih Rasio
Dunia kode QR punya ukuran kontrasnya sendiri dan itu bukan rasio. Kontras simbol adalah ukuran mutu cetak yang didefinisikan ISO/IEC 15415 sebagai selisih reflektansi antara titik paling terang dan titik paling gelap dalam sebuah simbol. Ia dinyatakan dalam poin persentase dan dinilai dari A sampai F. Alat verifikasi melaporkannya berdampingan dengan modulasi, kerusakan pola tetap, ketidakseragaman kisi, dan koreksi kesalahan yang tak terpakai, dan nilai keseluruhan simbol itu adalah yang terburuk di antaranya.
Pembedaan ini penting karena selisih reflektansi dan rasio kontras bukan dua kesan atas hal yang sama yang bisa saling dikonversi. Reflektansi adalah cahaya linear; rasio kontras menerapkan kurva gamma dan suku flare di atasnya. Jalankan aritmetikanya dan penyimpangannya besar: selisih reflektansi 40%, tingkat yang lazim disyaratkan dalam spesifikasi ritel, setara dengan rasio kontras sekitar 1,6:1 terhadap putih ideal, dan selisih 70% setara dengan sekitar 3:1. Pasangan warna yang ditolak mentah-mentah oleh pemeriksa aksesibilitas web bisa jadi barcode yang sepenuhnya patuh.
Itu bukan izin untuk merancang pada 3:1. Itu penjelasan mengapa kedua industri berbeda pendapat: alat verifikasi mengukur contoh cetak di bawah cahaya terkendali pada jarak tetap dengan simbol memenuhi bukaannya, sedangkan rasio milik perancang harus selamat melewati ponsel di dalam saku. Standar itu sedang mengukur artefaknya, sementara rasio dipakai sebagai wakil bagi seluruh rantainya.
Jebakan di dalam standar itu adalah cahaya yang dipakainya. Verifikasi barcode dilakukan di bawah pencahayaan merah pada 660 nanometer, panjang gelombang yang dipakai pemindai laser awal dan yang masih ditiru alat verifikasi modern; nilai sebuah simbol dikutip bersamanya, seperti 4.0/20/660. Tinta merah memantulkan cahaya merah, jadi kode merah di atas kertas putih nyaris tidak punya kontras pada 660 nm dan dinilai tak terbaca padahal terpindai sempurna di ponsel mana pun. Inilah alasan spesifik mengapa kode QR merah bisa lulus setiap pemeriksaan yang dijalankan perancang lalu gagal di kasir atau pada pemindai citra gudang.
Aturan yang mengikutinya: apa pun yang dibaca peralatan tetap alih-alih oleh pelanggan sebaiknya hitam di atas putih, pada ukuran yang diminta dokumentasi peralatan itu, dan diverifikasi alih-alih dikira-kira dengan mata. Apa pun yang dibaca ponsel punya seluruh ruang warna yang tersedia, dikurangi bagian-bagian yang dicoret tabel di atas.
Angka yang Perlu Dijadikan Target Rancangan
Bidik rasio kontras setidaknya 7:1 untuk apa pun yang dicetak, setidaknya 4:1 untuk apa pun yang ditampilkan di layar, dan perlakukan 3:1 sebagai titik yang di bawahnya sebuah kode tidak layak diterbitkan, sebagus apa pun tampilannya di mockup. Angka-angka itu adalah target desain yang sudah memperhitungkan kerugian dari bagian-bagian sebelumnya, bukan ambang yang diukur siapa pun di sebuah ponsel.
- Cetak dalam kondisi tak terkendali - menu, kemasan, papan tanda, stiker. 7:1 atau lebih baik. Hitam atau nyaris hitam di atas putih adalah 21:1 dan tidak memakan biaya apa pun; jarak antara 21:1 dan 7:1 adalah tempat warna merek muat.
- Cetak di bahan yang menyerap atau merepotkan - kertas kraft, kertas koran, struk, kain, permukaan terukir. Jangan membelanjakan kontras sama sekali. Hitam di atas latar paling terang yang tersedia, dan taruh anggarannya pada ukuran modul saja.
- Layar - situs web, presentasi, layar aplikasi, video. 4:1 atau lebih baik, dengan pemahaman bahwa kecerahan layar dan cahaya sekitar milik penontonnya berada di luar kendali Anda.
- Apa pun yang dibaca pemindai tetap, atau yang diatur sebuah spesifikasi. Hitam di atas putih, diverifikasi. Warna di sini adalah risiko tanpa keuntungan, dan merah adalah risiko dengan mode kegagalan yang spesifik.
- Di bawah 3:1. Jangan diterbitkan. Itu bukan kode pas-pasan yang masih bisa ditangani sebagian ponsel - itu kode yang seluruh marginnya sudah habis bahkan sebelum kertasnya dipilih.
Satu pemeriksaan yang mudah dilupakan: ketiga penanda sudut ikut dihitung. Pemindai menemukan lokasi kode QR lewat pola pencarinya sebelum ia mendekode apa pun, jadi kode yang modulnya gelap sementara sudutnya diberi warna aksen pucat menaruh kontras terlemahnya persis di tempat kegagalan tidak bisa dipulihkan. Alat apa pun yang Anda pakai, nilai warna sudut terhadap latar secara terpisah dan ambil angka yang lebih buruk di antara keduanya sebagai kontras sebenarnya dari kode itu.
KoloQR, generator kode QR gratis dengan kode QR bulat dan bentuk khusus, menghitung pasangan itu secara otomatis: lencana di samping pratinjau melaporkan rasio kontras untuk warna pola dan untuk warna sudut terhadap latar, menampilkan mana yang lebih buruk, dan meluluskan pada 4:1. Ia menilai latar transparan sebagai putih, sebab di situlah kode transparan biasanya mendarat. Anda bisa menyiapkan tangganya di generator dengan mengekspor muatan yang sama pada masing-masing dari delapan warna abu-abu di atas lalu mencetak lembarnya.
Batas jujur atas semua ini: tidak satu pun angka di sini menjamin sebuah pindaian pada perangkat keras yang belum kami uji, dan kami sengaja tidak mempublikasikan angka untuk ponsel bermerek mana pun karena kami memang tidak mengukurnya. Tangga itu ada supaya Anda bisa. Dua puluh menit dan satu lembar kertas menghasilkan angka yang benar untuk pekerjaan Anda, dan itu lebih berharga daripada angka mana pun di tulisan ini.
Ketika Kontras Sebenarnya Bukan Masalahnya
Sebagian besar kode QR yang disalahkan pada kontras sebenarnya gagal karena salah satu dari empat alasan lain, dan menaikkan kontras pada satu pun di antaranya tidak mengubah apa-apa. Menelusuri daftar ini lebih dulu lebih cepat daripada menjalankan uji tangga, karena tiga dari empatnya terlihat tanpa ponsel.
- Kodenya terlalu kecil untuk jaraknya. Di bawah kira-kira 0,4 mm per modul pada cetakan, kamera ponsel kesulitan apa pun warnanya. Ukur satu modul sebelum menyetel hal lain.
- Zona sunyinya terpotong. ISO/IEC 18004 menetapkan margin bersih empat modul di sekeliling simbol, dan perancang yang mengambil kembali ruang itu untuk tata letak adalah salah satu penyebab paling umum kode yang terfoto indah dan tidak pernah terdekode.
- Citranya disimpan sebagai JPEG di suatu titik dalam alur kerja. Kompresi JPEG menaruh cincin samar di sekeliling setiap modul, yang menurunkan selisih lokal persis di dalam blok yang diukur binarizer. Kelihatannya masalah kontras padahal itu masalah format berkas.
- Silau. Laminasi kilap atau layar yang memantulkan lampu langit-langit sama sekali tidak menurunkan kontras desain - ia menambahkan bercak terang di atas sebagian simbol, dan blok-blok di bawah bercak itu kehilangan selisihnya sementara sisa kodenya baik-baik saja. Memiringkan ponsel memperbaikinya, dan itulah petunjuknya.
Koreksi kesalahan juga masuk daftar ini, secara negatif. Menaikkan tingkat dari M ke H tidak membantu kode berkontras rendah, sebab koreksi kesalahan memperbaiki modul yang dibaca keliru oleh dekoder sedangkan kontras rendah membuat dekoder tidak bisa membaca simbolnya sama sekali. Pertimbangan antara kapasitas pemulihan dan ukuran modul adalah keputusan yang nyata, dan itu bukan tuas untuk masalah ini. Tuas untuk masalah ini adalah warna depan yang lebih gelap, latar yang lebih terang, atau kode yang lebih besar.
Kegagalan terkait yang layak diketahui, karena dekorasi dan kontras dibelanjakan dari anggaran yang sama: bentuk modul dekoratif menintai lebih sedikit bagian setiap sel dibanding modul persegi, yang menurunkan selisih lokal yang diukur binarizer dengan cara yang sama seperti kontras rendah. Berapa sebenarnya biaya bentuk khusus pada kode QR membahas aritmetikanya, dan kedua efek itu bertumpuk - kode bergaya dalam warna merek yang pucat sedang membelanjakan dua kali dari satu anggaran.
Buat kode QR Anda
Gratis, tanpa akun dan tanpa watermark. Pilih bentuknya, tambahkan logo, periksa kontrasnya, lalu ekspor ke SVG, PDF, EPS, atau PNG - kode statis tanpa langganan di belakangnya.
Buat kode QRQuestions? Answered
Sebagai target desain, 7:1 untuk cetak dan 4:1 untuk layar, dengan 3:1 sebagai garis batas: di bawahnya sebuah kode tidak layak diterbitkan. Batas bawah dekoder sendiri jauh lebih rendah - ZXing berhenti mendeteksi tepi ketika piksel paling terang dan paling gelap dalam sebuah blok berselisih 24 dari 255, sekitar 1,24:1 - tetapi batas itu berlaku untuk citra digital yang bersih, bukan untuk tinta di atas kertas di bawah lampu toko.
Baik Apple maupun Google tidak mempublikasikan ambangnya, jadi angka spesifik mana pun yang Anda lihat dikutip bukanlah pengukuran yang bisa diperiksa siapa pun. Kedua dekodernya tertutup. Satu-satunya titik acuan yang bisa dibaca adalah ZXing, yang menyerah di sekitar 1,24:1 pada citra yang bersih, dan jawaban praktis untuk pekerjaan nyata adalah mencetak tangga tingkat kontras menurun lalu menemukan di mana kombinasi bahan, cahaya, dan ponsel Anda sendiri gagal.
Karena layar menyampaikan kontras desain dan kertas tidak. Bahan putih memantulkan 80 hingga 90%, bukan 100%, tinta melebar ke sel terang di sebelah setiap modul gelap, dan kilap atau cahaya sekitar menambahkan selubung terang di atas keduanya. Pasangan yang terhitung 3:1 di berkas desain bisa tiba di kamera lebih dekat ke 2:1. Uji di bahan sungguhan pada ukuran akhir, jangan pernah di monitor.
Biasanya bisa, asalkan warnanya gelap dan bukan sekadar jenuh. Biru pekat, biru dongker, dan merah tua semuanya melewati 7:1 terhadap putih dan berperilaku baik di kamera. Oranye, ambar, sian, dan kuning tidak, dan tidak ada tingkat koreksi kesalahan yang menyelamatkannya. Ketika warna merek tidak mencukupi, gelapkan kodenya alih-alih menerangkan latarnya - atau biarkan kodenya tetap gelap dan taruh warna merek pada bingkai di sekelilingnya.
Di ponsel masa kini, biasanya bisa. Di pemindai lama atau pemindai tetap, sering kali tidak. Rasio kontras itu simetris, jadi putih di atas hitam terhitung 21:1 yang sama dengan hitam di atas putih dan tidak ada pemeriksaan kontras yang akan memperingatkan Anda - yang berbeda-beda adalah apakah pembacanya mencoba citra dalam keadaan terbalik. Kode terbalik juga kehilangan lebih banyak kontras di cetakan, karena cakupan gelap pejal melebar ke modul terang. Pakailah di tempat ponsel menjadi satu-satunya pembaca.
Gradien biasanya selamat dan foto biasanya tidak, dan alasannya adalah dekoder mengambangkan secara lokal. ZXing menghitung batas terang-gelap terpisah untuk setiap blok 8 x 8 piksel, jadi latar yang berubah perlahan mempertahankan selisih lokal tetap utuh di mana-mana. Foto berubah lebih cepat daripada kodenya, jadi di suatu tempat melintasi simbol modul-modulnya berakhir di sisi yang salah dari ambang bloknya sendiri.
Karena alat verifikasi barcode dan banyak pemindai tetap membaca di bawah cahaya merah pada 660 nanometer, dan tinta merah memantulkan cahaya merah. Kode merah di atas kertas putih nyaris tidak punya kontras pada panjang gelombang itu meski kamera berwarna melihatnya dengan jelas. Ini jebakan yang sudah dikenal dari dunia barcode 1D dan berlaku sama persis untuk kode QR. Apa pun yang dipindai peralatan tetap sebaiknya hitam di atas putih.
Tidak di atas putih. Kuning di atas putih memberi kamera selisih luminans 29 tingkat dari 255, nyaris tak beranjak di atas 24 tempat ZXing berhenti mencari tepi sama sekali, dan rasio kontras 1,07:1. Warna pastel hanya sedikit lebih baik. Kalau palet pucat memang keharusan, balik masalahnya: kode gelap di dalam bidang pucat mempertahankan paletnya sekaligus mempertahankan kontrasnya.
Tidak, dan ini perbaikan keliru yang paling umum. Koreksi kesalahan memperbaiki modul yang terbaca keliru; kontras rendah membuat simbolnya tidak terbaca sama sekali, karena binerisasi terjadi sebelum ada data untuk diperbaiki. Menaikkan tingkat dari M ke H juga membuat simbolnya lebih padat pada lebar cetak yang sama, yang mengecilkan setiap modul dan membuat kode pas-pasan jadi lebih buruk, bukan lebih baik.
Lebih, dalam arti kegagalan di sana tidak bisa dipulihkan. Pemindai menemukan lokasi kode QR lewat tiga penanda sudutnya sebelum ia mendekode apa pun, jadi sudut pucat pada kode gelap menaruh kontras terlemah persis di tempat yang tak terjangkau koreksi kesalahan. Nilai warna sudut terhadap latar secara terpisah dan perlakukan angka yang lebih buruk di antara keduanya sebagai kontras sebenarnya dari kode itu.
Lanjutkan menjelajah
Halaman yang melanjutkan dari tempat halaman ini berhenti: konteks yang sama, jenis kode yang sama, atau keputusan berikutnya.
Toko ritel
Detail produk, ketersediaan stok, dan tautan ulasan di label rak, etalase, dan papan kasir.
Agensi acara
Kode yang diproduksi untuk acara milik orang lain: pengalihan klien, spesifikasi peserta pameran, produksi badge, dan papan seukuran ruangannya.
Kode QR berwarna
Bawa palet Anda ke kode QR tanpa merusaknya: warna mana untuk pola dan warna mana yang tempatnya di bingkai.
Banner
Roll-up, banner pameran, dan banner luar ruang - ukuran yang dituntut jaraknya, tinggi yang berhasil, dan mengapa mesh dan angin merusak pindaian.
Kendaraan
Mobil boks, mobil pribadi, dan armada - ukuran yang dibutuhkan kode dilihat dari trotoar, dan bagian bodi tempat ia bertahan dari paku keling, celah, dan cipratan jalan.
Kode QR di Iklan Video Butuh Sepertiga Layar. Yang Diberikan Cuma Pojok
Kode QR di iklan video harus mengisi seperempat sampai sepertiga tinggi layar agar ponsel di sofa bisa membacanya. Hampir semua yang pernah Anda lihat hanyalah logo di pojok, dan kami mengukur apa yang terjadi pada kode seperti itu.
Mengapa KoloQR?
- Buat kode QR untuk situs web, menu, Wi-Fi, PDF, dan kartu nama
- Sesuaikan warna, logo, dan bentuk unik
- Unduh file PNG dan SVG berkualitas tinggi
- Dibuat untuk cetak maupun digital

