Extraction d’un code-barres présent sur un support optique

4.7/5 - (4 votes)

Comment extraire un code-barres présent sur un support optique

 

Introduction

Vous l’avez peut-être déjà remarqué nos supports optiques sont pourvus d’un code-barres circulaire, parfois plusieurs codes-barres tels que certains supports à plusieurs couches tels que les Blu-ray ou DVD. Ces codes-barres dont le codage (code 39, 39 avec ASCII, 128 etc..) peut différer suivant les fabricants/éditeurs, représentent soit une référence catalogue, ou tout ou partie du numéro de matrice (qui elle même en-soi est une référence). Le numéro de matrice est lisible par un humain, un code-barres beaucoup plus rapidement par un scanner.

On retrouve donc pour:

  • Blu-ray Sing Layer: 1 code-barres
  • Blu-ray Dual Layer: 2 codes-barres (pour L0 et L1)
  • Blu-ray UHD/4K Triple Layer, 3 codes-barres (pour L0,L1 et L2).
  • DVD DL: 2 code-barres
  • DVD Single Layer: 1 seul code-barres
  • SACD: 2 codes-barres
  • CD AUDIO: 1 seul code-barres.

La présence de ces codes-barres, indique également qu’on est en présence d’ exemplaires sûrs qui ne sont pas des exemplaires « piratés.

Scanner/douchetteIl est bien évident qu’avec un scanner « grand public » type douchette, la lecture de ces codes-barres circulaires ou semi-circulaires ne pourra pas se faire à cause de la géométrie de ceux-ci (en arc de cercle donc) ; certains phénomènes de réflexion peuvent être aussi la cause d’une mauvaise lecture.

Il va dont être nécessaire de prélever le motif et l’adapter afin qu’un scanner de code-barres plus conventionnel (grand public) puisse le lire.

 

Est-ce que cela a déjà été tenté ?

Avant de commencer, il convenait de savoir si quelqu’un avait eu la même idée que nous ; ainsi une brève recherche sur la toile a confirmé cette intuition.
Effectivement le site DISCOGS (une base de données musicale, comme le site se définit) propose donc une solution de départ simple et efficace:

Use a camera or flatbed scanner to get an image of the matrix area, warp the image to straighten the barcode, invert the colors, and then scan it from your screen.

à savoir: utiliser un scanner à plat ou un appareil photo et redresser l’image.

Note

Ce tutoriel nécessite donc Photoshop (PS) et une maitrise « légère » de celui-ci (ou tout autre logiciel d’imagerie capable d’effectuer une transformation de coordonnées polaires en coordonnées rectangulaires) ainsi qu’un bon scanner à plat ou un bon appareil photo. 

Pour cet exemple nous nous sommes basés sur le support le plus simple, le CD AUDIO, pourquoi ? Car les barres qui forment le motif ont une taille plus importante que ceux présents sur les Blu-ray ou DVD ou tout autre support à plusieurs couches ; ainsi le scanner de la rédaction étant de piètre qualité ne nous a pas permis d’obtenir quelque chose de convaincant et d’exploitable car la réflexion de la lumière sur ces supports étant différente par rapport au CD, à rendu la chose plus compliquée. Le temps de tester sur du matériel différent et de développer une autre « recette », nous nous cantonnons donc au CD AUDIO pour ce tuto. La méthode restera fondamentalement la même !

 

Comment procéder?

Pour l’exemple qui suit nous avons pris le dernier album d’Indochine emprunté à une groupie.

  • Il faut donc scanner la face « données » de votre disque: 600dpi semble être une bonne résolution (1)
  • Recadrer l’image parfaitement au niveau de la bague de la matrice (utiliser les réglettes dans PS), le centre de l’image doit être le centre exact du disque (2)
  • À cette étape et contrairement à DISCOGS, nous préférons prélever « l’empreinte » du code-barres, il faut donc se débarrasser de tout ce qui est superflu, pour ne garder que l’essentiel, à savoir: le code-barres en lui même et sa position (Attention, il ne faut pas recadrer l’image !) (3)
  • Prélever l’empreinte est assez aisé dès lors que l’image est suffisamment résolue et contrastée. Il convient donc de désaturer (4) l’image obtenue en étape 3, puis de la « négativer » (5) (inversion) afin d’obtenir un motif  bien contrasté avec des barres suffisamment foncées.

 

S’offrent alors deux méthodes pour récupérer le motif, et uniquement celui-ci:

  • Effectuer une isohélie (nombre de valeurs concernant les composantes RVB) de  niveau 2… cette méthode est plutôt aléatoire car si l’image est « sale » (mal préparée ou dégrossie) ou manque de définition cela va compliquer les choses comme on peut le voir sur cet exemple (parasitage et perte d’information) (6). Si le motif est jugé suffisamment propre, il n’y plus qu’à nettoyer à la baguette magique en réglant sa tolérance.
  • La méthode alternative, est d’utiliser directement la baguette magique avec une tolérance adéquate, puis éventuellement « gommer » quelques restes et imperfections, pour ne garder que le motif, il faut également dans un second temps renforcer le contraste en utilisant le réglage de courbes (afin de renforcer les noirs et éclaircir  les zones « blanches »).  Le motive est prélevé ! (7)
  • La superposition montre un motif propre est similaire (8)

Maintenant qu’on a prélevé ce code-barres, il convient de déplier/redresser celui-ci afin de le rendre linéaire, cela passe par une transformation « mathématique » qui s’applique dans PS à l’aide d’un filtre déformant : « coordonnées polaires vers rectangulaires ». Si l’image est mal centrée ou mal orientée on risque d’obtenir un motif de part et d’autre de l’image, qui sera donc inexploitable. 

  • La méthode DISCOGS est plutôt directe car elle ne passe pas par les étapes 3 à 7 mais directement à la transformation des coordonnées (Discogs 1) puis par une image en négatif avec adaptation de la courbe (Discogs 2). C’est une bonne méthode (avant l’étape 7) pour voir si la transformation des coordonnées va bien se passer.

On le voit, il y a un reflet qui semble être artificiel/construit, généré par la transformation des coordonnées et qui risque de gêner la lecture, les barres sont très proches et le motif extrêmement compressé, mais normalement la lecture devrait fonctionner.

  • Avec notre méthode avec le prélèvement du motif,  le résultat est le suivant, l’image est toujours plein cadre (9) puis dans un second temps recadrée (10)
  • Il suffit après de « croper » (tailler et recadrer, à nouveau) le milieu du code-barres brut (obtenu précédemment) pour l’avoir de manière un peu plus propre. Il suffit en dernière étape de l’agrandir légèrement (voir de l’orienter correctement  pour une question de rigueur mais pour le scanner quel que soit le sens ça n’a pas d’importance) ! Le code qui suit est parfaitement « flashable ».
Test avec l’image d’un Blu-ray

Comme nous le disions précédemment, notre scanner à plat nous a permis d’obtenir une image de départ qui n’était pas convaincante. Nous avons donc utilisé une image provenant de Wikipédia, elle aussi non convaincante. La transformation finale étant illisible (parasitée par des reflets).

La résolution n’est pas suffisante, la récupération du motif ne peut pas se faire, en partie à cause de ce manque de résolution mais aussi des moirages et reflets qui sont différents de ceux présent sur la surface de lecture d’un CD.  Au final, on a affaire à une bouillie qui va parasiter la lecture, le code-barres ne peut pas être lu.

 

Il ne reste plus qu’à trouver une meilleure méthode de « captation ». Puis, pourquoi pas,  référencer dans le futur ces codes-barres. Ce tutoriel sera amené à évoluer. 

Partager

Bluraydefectueux (Xavier L.)

Passionné de cinéma, home-cinema, et amoureux du support physique de la belle image et du beau son, depuis de nombreuses années, C'est naturellement avec passion et conviction qu'il s'est lancé dans ce projet. Bluraydefectueux.com (BRDEF)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *