ℛ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, Figura 1, è l'immagine di
partenza:
L'immagine è di tipo .jpg ed è derivata da una foto ad alta risoluzione. L'immagine che segue, Figura 2, è 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 guide, diverse guide per allineare l'immagine a un quadrato usando i diversi strumenti (rotazioni e prospettiva).
Se cercate aiuto per qualche strumento che non vi è chiaro come può essere usato per fare le operazioni descritte in questo tutorial, potete usare l'AI di Bing che è a conoscenza di come funziona The Gimp. Sfortunatamente la versione gratuita è limitata ma potrebbe aiutarvi quando siete nei guai su come fare. Cliccate nel link seguente: LINK e poi in alto cliccate su "COPILOT", appena sotto la barra di ricerca: entrerete nella chat di Chat-GPT.
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 appena vediamo che il reticolo è come lo vogliamo e come mostrato in Figura 2. 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 (fill with White) e si applichi la retinatura appena vista (filters>distorts>mosaic) anche al nuovo layer. Con la palette layer (la finestrella a destra dei layer) si agisca sull'opacità del nuovo layer (tasto destro>edit layer attributes>opacity) in modo da vedere contemporaneamente il nuovo layer e l'immagine Figura 2. 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. Ovviamente riempite di nero i quadretti del nuovo layer!
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. Se funzionasse basta un filtro a soglia (colors>threshold) per rendere neri i quadretti più scuri e bianchi quelli più chiari.
Continuiamo il lavoro solo sul nuovo livello e quindi abbiamo ottenuto l'immagine di Figura 3.
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. Vedi Figura 4.
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. Otteniamo la Figura 5.
Si salva l'immagine, si esegue un export png del codice QR (solo il nuovo layer, Figura 5) 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:
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 (che si chiama Bitcoin Paper wallet) 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, Figura 2, è 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 guide, diverse guide per allineare l'immagine a un quadrato usando i diversi strumenti (rotazioni e prospettiva).
Se cercate aiuto per qualche strumento che non vi è chiaro come può essere usato per fare le operazioni descritte in questo tutorial, potete usare l'AI di Bing che è a conoscenza di come funziona The Gimp. Sfortunatamente la versione gratuita è limitata ma potrebbe aiutarvi quando siete nei guai su come fare. Cliccate nel link seguente: LINK e poi in alto cliccate su "COPILOT", appena sotto la barra di ricerca: entrerete nella chat di Chat-GPT.
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 il QR code che vedete in Figura 2, allarghiamo l'immagine di n pixel in orizzontale e n in verticale con image>canvas size (l'allargamento verrà riempito con il colore di sfondo che avete impostato) e centriamo l'immagine con l'opzione "center" di canvas size.
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
light direction: 90
Non vistiamo le altre impostazioni. Premiamo ok appena vediamo che il reticolo è come lo vogliamo e come mostrato in Figura 2. 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 (fill with White) e si applichi la retinatura appena vista (filters>distorts>mosaic) anche al nuovo layer. Con la palette layer (la finestrella a destra dei layer) si agisca sull'opacità del nuovo layer (tasto destro>edit layer attributes>opacity) in modo da vedere contemporaneamente il nuovo layer e l'immagine Figura 2. 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. Ovviamente riempite di nero i quadretti del nuovo layer!
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. Se funzionasse basta un filtro a soglia (colors>threshold) per rendere neri i quadretti più scuri e bianchi quelli più chiari.
Continuiamo il lavoro solo sul nuovo livello e quindi abbiamo ottenuto l'immagine di Figura 3.
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. Vedi Figura 4.
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. Otteniamo la Figura 5.
Si salva l'immagine, si esegue un export png del codice QR (solo il nuovo layer, Figura 5) 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:
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 (che si chiama Bitcoin Paper wallet) 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.