Geri Dön
QR kodlarda dithering: çalışan bir kodun içine fotoğraf gizlemek
SiTech Team2 წთ. საკითხავი

QR kodlarda dithering: çalışan bir kodun içine fotoğraf gizlemek

Geliştirici Andrew Taylor, hata yayılımı ve iki geçişli bir yöntemin bir QR koduna tek bitlik portre sığdırırken kodun okunabilir kalmasını nasıl sağladığını anlatıyor.

Bir QR kod, içine gizlenmiş bir fotoğrafla bile taranabiliyor — kuralları nasıl bükeceğinizi bilirseniz. Dithering'li QR kod üretecinin arkasındaki geliştirici Andrew Taylor, sıradan kodları tek bitlik portrelere çeviren aracının arkasındaki tekniği anlatan bir rehber yayımladı; kaynak kodu Codeberg'de açık.

QR kodunun anatomisi

QR kod, ikiye ayrılan bir kareler ızgarasıdır: tarayıcının kodu bulup yönünü belirlemesini sağlayan belirgin şekiller olan işlev desenleri ve asıl veriyle başlık baytlarının saklandığı veri modülleri. Veri modülleri ancak tarayıcı işlev desenlerine kilitlendikten sonra okunduğu için değiştirilebilir — markaların özgün QR kodlar basmasının nedeni budur — ama her değişiklik okunabilirlikten biraz feragat eder.

Gürültünün içindeki fotoğraf

Taylor'ın atıf yaptığı bir gönderide Dave Richeson'un gösterdiği yöntem, her modülü küçültmektir: her pikseli 3×3'lük bir ızgaraya bölüp kodlanan biti ortadaki hücreye koymak, kalan sekiz hücreyi ise fotoğrafa ayırmak. Sonuç, düşük çözünürlüklü tek bitlik bir fotoğraf olur ve üzerinde tuz-biber gürültüsü bulunur; çünkü dokuz pikselden biri yine de veri taşır.

Dithering ve hata yayılımı

Ara tonlar normalde dithering ile üretilir — örneğin ara tonları siyah-beyaz satranç deseniyle taklit eden Bayer deseni. Hata yayılımı daha ileri gider: bir piksel eşikle karşılaştırıldığında ortaya çıkan hata, henüz karar verilmemiş komşu piksellere dağıtılır; böylece her bölge gerçek parlaklığına normal dithering'den daha yakın olur ve daha düzensiz doku gözü daha az yorar. Taylor'ın örneği, Michelangelo'nun David'inin Floyd–Steinberg ile işlenmiş 147×147 boyutunda tek bitlik görüntüsü.

Veri modüllerinin parlamaması için yayılımı iki kez çalıştırır. İlk geçişte bu modüllere zorunlu renkleri verilir ve oluşan hata çevredeki sekiz piksele yayılır — karanlık bir bölgedeki piksel saf beyaz olmak zorunda kaldığında hata yüzde 95'e çıkabilir — ikinci geçiş ise normal şekilde ilerler. Taylor'a göre görüntüyü okunur kılan tam da bu ilk hatanın maskelenmesi.

Bedeli: taranabilirlik

Görünüm ile güvenilirlik arasında bir ödünleşim var. Dizüstü ekranından telefonunuzla okunan bir kod, bir yabancının telefonunda kötü ışıkta basılmış hâliyle okunmayabilir. Üreteç ayrıca kenar boşluğu olmayan minik görüntüler üretir; tarayıcıların ise sakin bölgeye ihtiyacı vardır. Tarayıcılar büyütülen görüntüleri, CSS'te image-rendering ayarlanmadıkça bulanıklaştırır. Kenar boşluğunun rengi bulucu desenlerin arka planıyla eşleşmelidir — normalde beyaz, ancak ters çevrilmiş QR kodlar siyah ister.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.