ℛecupero di un QR code che è stato reso illeggibile dal tempo e
dall'umidità. In pratica un'opera di restauro del codice QR. Usiamo il
programma gratuito The GIMP. È necessario avere un po' di dimestichezza
con questo programma anche se in questo tutorial cercheremmo di essere
elementari. Quella che segue è l'immagine di partenza:

L'immagine è di tipo .jpg ed è derivata da una foto ad alta risoluzione. L'immagine che segue è già un po' trattata, infatti è stata ruotata con lo strumento layer>transform>arbitrary rotation, poi è stata deformata in modo da essere squadrata con toolbox>perspective tools oltre che usando le linee di righello verticali e orizzontali.
Usiamo il ridimensionamento dell'immagine in modo da avere una immagine quadrata: image>scale image, cerchiamo una risoluzione multipla di 33 (33 x n). Il numero intero n sarà usato in seguito. 33 perché il numero di quadretti è 33x33 per memorizzare un indirizzo bitcoin del tipo:

Sovrapponiamo un reticolo per individuare i quadretti da colorare di nero manualmente. Usiamo filters>distorts>mosaic con queste impostazioni:
Non vistiamo le altre impostazioni. Premiamo ok. Adesso abbiamo proprio l'immagine qui sopra. Comunque sia dobbiamo notare che il reticolo si sovrappone quasi esattamente col nostro codice QR da restaurare.
Si aggiunga un layer: layer>new layer con sfondo bianco e si applichi la retinatura appena vista (filters>distorts>mosaic). Con la palette layer si agisca sull'opacità (opacity) in modo da vedere contemporaneamente il nuovo layer e l'immagine qui sopra. Manualmente si proceda a riempire di nero i quadretti del nuovo layer con lo strumento secchiello toolbox>bucket fill tool. L'operazione è lunga e tediosa.
Esiste una modalità automatica ma dipende dall'immagine di partenza. Si può agire con filters>distorts>mosaic sulla scelta "color averaging", si provi a vistarla. Dovrebbero comparire con una tonalità più scura tutti i quadretti del QR code. Con l'immagine qui sopra non funziona e si ottengono molti errori.
Quindi ho notato che la retinatura è solo lo sfondo trasparente della mia png, con image>flatten image si elimina la retinatura trasparente e con colours>threshold si eliminano eventuali righe grige rimaste dalla retinatura.
Pare che l'immagine ottenuta non sia leggibile dai programmi di qrcode e occorre selezionare la bacchetta magica, toolbox>fuzzy select tool, metterla sul bianco dell'immagine del nuovo layer e selezionare tutte le parti bianche dell'immagine, fare un select>inverse, poi un select>grow di 1 pixel quindi edit>fill with foreground color (black) e quindi select>none.
Si salva l'immagine, si esegue un export png del codice QR (nuovo layer) e si passa al riconoscimento del qrcode con il programma zbar o altri programmi o con programmi on line come questo.
Con zbarimage si ottiene:
Questa è la sequenza di immagini ottenute:
Codice QR dopo l'operazione manuale di riempimento dei singoli quadretti:

Codice QR dopo avere eliminato la retinatura:

Codice QR finale (qr.png):

Consiglio: la persona che aveva necessità di recuperare il qr code di questo testo esiste ed ha stampato il foglietto che vedete a inizio del testo con una stampante a getto d'inchiostro, il foglietto dopo un paio d'anni si è sbiadito. Il consiglio è di non usare le stampanti a getto d'inchiostro ma le stampanti laser che quindi abbiano il toner che in definitiva è una plastica che si appiccica alla carta.

L'immagine è di tipo .jpg ed è derivata da una foto ad alta risoluzione. L'immagine che segue è già un po' trattata, infatti è stata ruotata con lo strumento layer>transform>arbitrary rotation, poi è stata deformata in modo da essere squadrata con toolbox>perspective tools oltre che usando le linee di righello verticali e orizzontali.
Usiamo il ridimensionamento dell'immagine in modo da avere una immagine quadrata: image>scale image, cerchiamo una risoluzione multipla di 33 (33 x n). Il numero intero n sarà usato in seguito. 33 perché il numero di quadretti è 33x33 per memorizzare un indirizzo bitcoin del tipo:
1BB6LLrQFTwXiWkFakNfZXd4pyGxpbBDwIn effetti il nostro esempio contiene un indirizzo bitcoin. Se il QR code ha un numero di quadretti diverso da 33x33 allora si segue questa guida con il nuovo numero al posto di 33. Per avere la griglia che vedete allarghiamo l'immagine di n pixel in orizzontale e n in verticale con image>canvas size e centriamo l'immagine.

Sovrapponiamo un reticolo per individuare i quadretti da colorare di nero manualmente. Usiamo filters>distorts>mosaic con queste impostazioni:
Squares
Size: n
height: 1
spacing: 1
Neatness: 1.00
light: 0.0
color variation: 0.0
Non vistiamo le altre impostazioni. Premiamo ok. Adesso abbiamo proprio l'immagine qui sopra. Comunque sia dobbiamo notare che il reticolo si sovrappone quasi esattamente col nostro codice QR da restaurare.
Si aggiunga un layer: layer>new layer con sfondo bianco e si applichi la retinatura appena vista (filters>distorts>mosaic). Con la palette layer si agisca sull'opacità (opacity) in modo da vedere contemporaneamente il nuovo layer e l'immagine qui sopra. Manualmente si proceda a riempire di nero i quadretti del nuovo layer con lo strumento secchiello toolbox>bucket fill tool. L'operazione è lunga e tediosa.
Esiste una modalità automatica ma dipende dall'immagine di partenza. Si può agire con filters>distorts>mosaic sulla scelta "color averaging", si provi a vistarla. Dovrebbero comparire con una tonalità più scura tutti i quadretti del QR code. Con l'immagine qui sopra non funziona e si ottengono molti errori.
Quindi ho notato che la retinatura è solo lo sfondo trasparente della mia png, con image>flatten image si elimina la retinatura trasparente e con colours>threshold si eliminano eventuali righe grige rimaste dalla retinatura.
Pare che l'immagine ottenuta non sia leggibile dai programmi di qrcode e occorre selezionare la bacchetta magica, toolbox>fuzzy select tool, metterla sul bianco dell'immagine del nuovo layer e selezionare tutte le parti bianche dell'immagine, fare un select>inverse, poi un select>grow di 1 pixel quindi edit>fill with foreground color (black) e quindi select>none.
Si salva l'immagine, si esegue un export png del codice QR (nuovo layer) e si passa al riconoscimento del qrcode con il programma zbar o altri programmi o con programmi on line come questo.
Con zbarimage si ottiene:
$ zbarimg /home/sandro/Desktop/qr.png
QR-Code:1BB6LLrQFTwXiWkFakNfZXd4pyGxpbBDw
scanned 1 barcode symbols from 1 images in 0.03 seconds
Questa è la sequenza di immagini ottenute:
Codice QR dopo l'operazione manuale di riempimento dei singoli quadretti:

Codice QR dopo avere eliminato la retinatura:

Codice QR finale (qr.png):

Consiglio: la persona che aveva necessità di recuperare il qr code di questo testo esiste ed ha stampato il foglietto che vedete a inizio del testo con una stampante a getto d'inchiostro, il foglietto dopo un paio d'anni si è sbiadito. Il consiglio è di non usare le stampanti a getto d'inchiostro ma le stampanti laser che quindi abbiano il toner che in definitiva è una plastica che si appiccica alla carta.