Halftone QR kod ile dithering’li QR kod
İki yaklaşım da çalışan bir QR kodun içine resim koyuyor. Aynı teknik değiller ve odanın öbür ucundan bile ayırt edebilirsiniz: biri sineklikten bakılan bir resim gibi, öteki fotoğraf greni gibi görünür. Bu yazı her birinin ne yaptığını, neden farklı göründüklerini, birinin açıkça kazandığı yeri ve hiçbirinin kazanmadığı yeri anlatır.
Halftone yöntemi
Kabaca 2013’ten beri dolaşan klasik halftone QR üreteci kodun boyunu üçe katlar. Her modül 3×3’lük bir alt-piksel bloğuna dönüşür. Ortadaki alt-piksel modülün istediği renge sabitlenir; kalan sekizi (zaten eşiklenmiş) resmin dediğini alabilir. Tarayıcı modül merkezlerini örneklediği için doğru olması gereken şey merkezlerdir — ve doğrudurlar. Çalışıyor ve tanınabilir bir görünüm üretiyor: resmin üstüne oturmuş düzenli bir nokta ızgarası. Çünkü her iki yönde de her üçüncü piksel sabitleniyor ve o sabit pikseller kusursuz hizalanıyor. Göz düzenli kafesi bulmakta fena hâlde iyidir. Bir kez gördüğünüzde bir daha görmezden gelemezsiniz. Yaklaşımın uygulaması basit, akıl yürütmesi kolaydır; bu yüzden pek çok üreteç onu kullanır ve yalnızca ekranda, kendi boyutunda görüntülenecek bir kod için tamamen kullanılabilirdir. Sınırları baskıda ortaya çıkar; orada hiçbir şey kendi boyutunda görüntülenmez ve modül başına tek bir sabit pikselin yazıcıdan, kâğıttan, ışıktan ve kameranın yeniden örneklemesinden tek başına sağ çıkması gerekir.
Dithering yöntemi
Dithering yaklaşımı tek bir şeyi değiştiriyor ve her şey değişiyor. Resmi önce eşikleyip sonra pikselleri ezmek yerine, resmi hata yayılımıyla dither’lıyor ve zorlanan pikseli bu sürecin parçası sayıyor: değeri zorla, zorlamanın yarattığı hatayı ölç ve Floyd–Steinberg diğer hataları nasıl itiyorsa o hatayı da komşu piksellere it. Sonuçta zorlanan piksellerin bedeli ödeniyor. Etraflarındaki pikseller yerel ortalamayı doğru tutmak için kayıyor, böylece zorlanan noktalar resmin geri kalanıyla aynı düzensiz beneğin içinde kalıyor. Gözün kilitleneceği bir kafes olmuyor ve resim, sineklikten bakılan bir resim gibi değil, resim gibi okunuyor. Zorlanan bölgenin tek piksel olması da gerekmiyor: her modülün merkezinde boyutu bir ayar olan bir blok olabilir; SWAPQR’ın Fotoğraf ↔ Kod dengesinin kontrol ettiği şey bu. Modülün geri kalanı — ve içindeki resim — hata yayılımının bıraktığı şeydir ve yapısı gereği ait olduğu modül için doğru ortalama tona sahiptir.
Yan yana
Halftone yönteminde resim kod yerleştirilmeden önce eşiklenir; dithering yönteminde ikisi birlikte, tek geçişte olur. Halftone modül başına bir alt-pikseli kusursuz bir ızgarada zorlar; dithering boyutu ayarlanabilir bir merkez bloğu beneğin içinde saklı zorlar. Halftone’un görsel imzası görüntünün üstünde düzenli bir nokta kafesi; dithering’inki fotoğraf greni. Halftone az ayar sunar — dokuz pikselin biri sabittir, o kadar — dithering ise her modülün ne kadarının zorlanacağı konusunda sürekli bir seçim sunar. Yakın çekim dayanıklılığında halftone zayıftır, çünkü modül başına tek piksel hiçbir yeniden örneklemeden sağ çıkmaz; dithering’li sonuç ise ayarlanabilir ve bu rehberdeki yakın çekim yazısının gösterdiği gibi ölçülebilirdir: modülün kabaca yarısından azı zorlandığında eski blok eşiklemeli okuyucular aşırı yakın çekimde zorlanır; üstünde zorlanmaz. İki yöntem aynı temanın çeşitlemeleri değil; "resim nereye gidiyor" sorusunu farklı sırayla yanıtlıyorlar ve gözün gördüğü şey o sıra.
Dithering’in açık ara kazandığı yer
Zorlama miktarı sabit bir "dokuzda bir" değil bir kadran olduğu için, dithering’li üreteç resmi okunabilirlikle bilerek takas edebiliyor. Bu kozmetik bir fark değil: modül başına tek piksel zorlandığında kod, yazıcıyla sensör arasındaki her yeniden örnekleme adımından tek bir pikselin sağ çıkmasına bel bağlıyor ve çoğu zaman çıkmıyor. Mürekkep püskürtmeli yazıcı onu yayar, lazer yazıcı yuvarlar, laminasyon bulanıklaştırır, açılı bir kamera iki sensör pikseline sürer ve çözücünün kendi küçültmesi onu komşularıyla ortalar. Onun yerine bir blok zorlamak — ve bedelini hata yayılımına ödetmek — tekniği baskıda ayakta tutan şey. Bu ayrıca aynı üretecin, aynı resim ve aynı bağlantıdan, tek bir kontrolü oynatarak insanların telefonu üstüne dayayacağı bir etiket için neredeyse sade bir kod ve bir metreden okutulacak bir afiş için neredeyse saf bir fotoğraf üretebilmesi demek. Halftone’da böyle bir kontrol yok: güvenilirliği ve görünümü yöntemle sabitlenmiş; daha sağlam yapmanın tek yolu onu daha büyük bir sabit bölge için terk etmek ve o noktada daha kötü dengelenmiş bir dithering yöntemine dönüşmüş oluyor.
Hiçbirinin kazanmadığı yer
İkisi de kötü bir fotoğrafı iyi yapmıyor ve ikisi de uzun içeriği kaldırmıyor. İkisi de hata düzeltmenin en yüksek seviyesini istiyor, o da kodu ayrıca sıklaştırıyor. Düz, düşük kontrastlı bir görsel ikisinde de aynı sebeple başarısız olur: modüllerle yarışan düzgün bir doku üretir. Uzun bir bağlantı ikisinde de başarısız olur, çünkü modüller herhangi bir resim taşıyamayacak kadar küçülür. Ve ikisi de sonuçta bilinçli bir takas: bir görüntü satın almak için okunabilirlik harcıyorsunuz. Görüntünün bir değeri olduğu yerde harcayın ve baskıyı test edin. Adını anmaya değer bir üçüncü aile daha var: normal bir kodun arkasına el değmemiş bir resim koyup modülleri açan ya da ortadan bir logo delen üreteçler. Onlar resmi hiç kodlamıyor — hasarı hata düzeltmenin yutmasına güveniyorlar. Gayet geçerli, çok daha az ilginç ve ne kadar görüntü alabildiğiniz konusunda çok daha sınırlı; çünkü bütün bedel hata düzeltme bütçesinden ödeniyor ve onu dengeleyen hiçbir şey yok.
| Konu | Halftone (3×3) | Dithering (hata yayılımı) |
|---|---|---|
| Resim ne zaman eşikleniyor | Kod yerleştirilmeden önce | Kodla birlikte |
| Zorlanan pikseller | Modül başına bir tane, kusursuz ızgarada | Merkezde bir blok, beneğin içinde saklı |
| Görsel imza | Resmin üstünde düzenli nokta kafesi | Fotoğraf greni |
| Ayar imkânı | Az — 9 pikselin 1’i sabit | Sürekli — her modülün ne kadarı zorlanacak, siz seçiyorsunuz |
| Yakın çekim dayanıklılığı | Zayıf — modül başına tek piksel hiçbir yeniden örneklemeden sağ çıkmıyor | Ayarlanabilir ve ölçülebilir |
Sık sorulan sorular
SWAPQR hangisini kullanıyor?
Dithering yöntemini. Resim Floyd–Steinberg hata yayılımıyla indirgeniyor, kodun ihtiyaç duyduğu pikseller zorlanıp hataları komşulara yayılıyor ve zorlanan bloğun boyutu Fotoğraf ↔ Kod dengesi.
Halftone kod neden üstünde ızgara varmış gibi görünüyor?
Çünkü her 3×3 blokta tam olarak bir alt-piksel sabitleniyor ve o sabit pikseller her iki yönde kusursuz hizalanıyor. Göz düzenli kafesi anında buluyor.
Ortadan logo delmek aynı şey mi?
Hayır. O, hasarlı bir bölgeyi hata düzeltmenin yutmasına güvenir; hasarı dengeleyen hiçbir şey yoktur. Geçerlidir ama halftone ya da dithering yönteminden çok daha az görüntüye izin verir.
İkisi de en yüksek hata düzeltmeyi mi istiyor?
Evet. İkisi de kodun kurtarma bütçesinin bir kısmını resme harcar; bu yüzden ikisi de en yüksek seviyede üretilir; bu kodu sıklaştırır ve bağlantıyı kısa tutmak için bir sebep daha verir.
Kareyi bir kez bas. Nereye gideceğine sonra karar ver. SWAPQR statik QR kodları ücretsiz üretir; bütün stil seçenekleri dahil, hesap yok, filigran yok. Ücretli plan bir kodu dinamik yapar: basılı kare aynı kalırken hedefini değiştirirsin ve ne sıklıkla okutulduğunu güne ve cihaza göre görürsün.
Tarayıcıda QR kod oluştur