SWAPQR← Guida

Codici QR a mezzitoni e codici QR con dithering

Entrambi gli approcci mettono un'immagine dentro un codice QR funzionante. Non sono la stessa tecnica, e puoi distinguerli dall'altra parte della stanza: uno sembra un'immagine dietro una zanzariera, l'altro grana fotografica. Questo articolo spiega cosa fa ciascuno, perché appaiono diversi, dove uno vince chiaramente, e dove nessuno dei due vince.

Crea un codice QR nel browser →Stampa il quadrato una volta sola. Decidi dopo dove porta.

Il metodo a mezzitoni

Il classico generatore QR a mezzitoni, in circolazione dal 2013 circa, triplica la dimensione del codice. Ogni modulo diventa un blocco 3×3 di sub-pixel. Il sub-pixel centrale è fissato al colore richiesto dal modulo; gli altri otto sono liberi di prendere qualunque valore dica l'immagine (già sottoposta a soglia). Uno scanner campiona i centri dei moduli, quindi i centri sono ciò che deve essere giusto — e lo sono. Funziona, e produce un aspetto riconoscibile: una griglia regolare di punti sopra l'immagine, perché un pixel ogni tre in entrambe le direzioni è fissato e quei pixel fissati si allineano perfettamente. Il tuo occhio è estremamente bravo a trovare un reticolo regolare. Una volta che lo vedi, non puoi più non vederlo. L'approccio è semplice da implementare e facile da ragionare, ed è per questo che così tanti generatori lo usano, e per un codice che verrà visto solo su uno schermo alla sua dimensione nativa è del tutto adeguato. I suoi limiti compaiono in stampa, dove nulla viene mai visto a dimensione nativa e un singolo pixel fissato per modulo deve sopravvivere da solo alla stampante, alla carta, all'illuminazione e al ricampionamento della fotocamera.

Il metodo con dithering

L'approccio con dithering cambia una cosa e cambia tutto. Invece di applicare prima la soglia all'immagine e poi sovrascrivere i pixel, applica il dithering all'immagine con diffusione d'errore e tratta un pixel forzato come parte di quel processo: forza il valore, misura l'errore causato dalla forzatura, e spingi quell'errore nei pixel vicini nel modo in cui Floyd–Steinberg spinge qualsiasi altro errore. Il risultato è che i pixel forzati vengono compensati. I pixel intorno a loro si spostano per mantenere giusta la media locale, quindi i punti forzati stanno dentro gli stessi puntini irregolari del resto dell'immagine. Non c'è reticolo su cui l'occhio possa agganciarsi, e l'immagine si legge come un'immagine anziché come un'immagine dietro una zanzariera. La regione forzata inoltre non deve essere un singolo pixel: può essere un blocco al centro di ogni modulo la cui dimensione è un'impostazione, che è ciò che controlla il bilanciamento Foto ↔ Codice di SWAPQR. Il resto del modulo — e l'immagine in esso — è quello che lascia la diffusione d'errore, che per costruzione ha il tono medio giusto per il modulo a cui appartiene.

Fianco a fianco

Nel metodo a mezzitoni l'immagine viene sottoposta a soglia prima che il codice venga posizionato; nel metodo con dithering le due cose avvengono insieme, in un unico passaggio. Il mezzitoni forza un sub-pixel per modulo, su una griglia perfetta; il dithering forza un blocco centrale di dimensione regolabile, nascosto nei puntini. La firma visiva del mezzitoni è un reticolo regolare di punti sull'immagine; quella del dithering, grana fotografica. Il mezzitoni offre poca regolazione — uno dei nove pixel è fisso e basta — mentre il dithering offre una scelta continua di quanta parte di ogni modulo viene forzata. E nella robustezza da vicino, il mezzitoni è debole, perché un pixel per modulo non sopravvive a nessun ricampionamento, mentre il risultato con dithering è regolabile e, come mostra l'articolo sul primo piano in questa guida, misurabile: sotto circa metà del modulo forzato, i lettori più vecchi a soglia per blocchi hanno difficoltà in primissimo piano estremo; sopra, no. I due metodi non sono variazioni sullo stesso tema; rispondono alla domanda "dove va l'immagine" in ordini diversi, e quell'ordine è ciò che l'occhio vede.

Dove il dithering vince di molto

Poiché la quantità di forzatura è una manopola anziché un uno-su-nove fisso, un generatore con dithering può scambiare immagine con affidabilità di proposito. Non è una differenza cosmetica: con un pixel forzato per modulo, il codice dipende dal fatto che un singolo pixel sopravviva a ogni passaggio di ricampionamento tra la stampante e il sensore, e spesso non ce la fa. Una stampante a getto d'inchiostro lo allarga, una laser lo arrotonda, una plastificazione lo sfoca, una fotocamera inclinata lo spalma su due pixel del sensore, e il ridimensionamento stesso del decodificatore lo media con i vicini. Forzare invece un blocco — e lasciare che la diffusione d'errore ne paghi il prezzo — è ciò che fa reggere la tecnica in stampa. Significa anche che lo stesso generatore può produrre un codice quasi semplice per un adesivo contro cui le persone appoggeranno un telefono, e una fotografia quasi pura per un manifesto scansionato da un metro, dalla stessa immagine e dallo stesso link, muovendo un solo controllo. Il mezzitoni non ha un controllo simile: la sua affidabilità e il suo aspetto sono fissati dal metodo, e l'unico modo per renderlo più robusto è abbandonarlo per una regione fissata più grande, al che è diventato il metodo con dithering con una compensazione peggiore.

Dove nessuno dei due vince

Nessuno dei due approcci rende buona una brutta fotografia, e nessuno dei due sopravvive a un contenuto lungo. Entrambi hanno bisogno della correzione d'errore al livello più alto, il che di per sé rende il codice più denso. Un'immagine piatta e a basso contrasto fallisce in entrambi, per lo stesso motivo: produce una texture uniforme che compete con i moduli. Un link lungo fallisce in entrambi, perché i moduli diventano troppo piccoli per contenere qualsiasi immagine. Ed entrambi sono, alla fine, un compromesso deliberato: stai spendendo affidabilità per comprare un'immagine. Spendila dove l'immagine vale qualcosa, e testa la stampa. C'è una terza famiglia che vale la pena nominare: i generatori che mettono un'immagine intoccata dietro un codice normale e semplicemente schiariscono i moduli, o che ritagliano un logo al centro. Quelli non codificano affatto l'immagine — si affidano alla correzione d'errore per assorbire il danno. Perfettamente validi, molto meno interessanti, e molto più limitati in quanta immagine ottieni, perché l'intero costo viene pagato dal budget della correzione d'errore senza nulla che lo compensi.

AspettoMezzitoni (3×3)Dithering (diffusione d'errore)
Quando l'immagine viene sottoposta a sogliaPrima di posizionare il codiceInsieme al codice
Pixel forzatiUno per modulo, su una griglia perfettaUn blocco centrale, nascosto nei puntini
Firma visivaReticolo regolare di punti sull'immagineGrana fotografica
Regolazione disponibilePoca — 1 pixel su 9 è fissoContinua — scegli quanta parte di ogni modulo viene forzata
Robustezza da vicinoDebole — un pixel per modulo non sopravvive a nessun ricampionamentoRegolabile, e misurabile

Domande frequenti

Quale usa SWAPQR?

Il metodo con dithering. L'immagine viene ridotta con la diffusione d'errore Floyd–Steinberg, i pixel di cui il codice ha bisogno vengono forzati e il loro errore diffuso nei vicini, e la dimensione del blocco forzato è il bilanciamento Foto ↔ Codice.

Perché un codice a mezzitoni sembra avere una griglia sopra?

Perché esattamente un sub-pixel in ogni blocco 3×3 è fissato e quei pixel fissati si allineano perfettamente in entrambe le direzioni. L'occhio trova subito un reticolo regolare.

Un logo ritagliato al centro è la stessa cosa?

No. Quello si affida alla correzione d'errore per assorbire una regione danneggiata; nulla compensa il danno. È valido, ma permette molta meno immagine sia del metodo a mezzitoni sia di quello con dithering.

Entrambi hanno bisogno della correzione d'errore più alta?

Sì. Entrambi spendono parte del budget di recupero del codice sull'immagine, quindi entrambi vengono generati al livello più alto, il che rende il codice più denso ed è un motivo in più per tenere il link corto.

Stampa il quadrato una volta sola. Decidi dopo dove porta. SWAPQR crea codici QR statici gratis, con tutte le opzioni di stile, senza account e senza filigrana. Un piano a pagamento rende un codice dinamico: il quadrato stampato resta identico mentre tu ne cambi la destinazione, e vedi quante volte è stato scansionato, per giorno e per dispositivo.

Crea un codice QR nel browser
Lingua: TR EN DE ES FR IT PT AR RU JA KO