# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  [Vido]Numriser des VHS et corriger les dfauts

## kromartien

Bonjour. 

Je projette de numriser des VHS en utilisant une carte d'acquisition vido PCI et un magntoscope.

Mon but dans cette opration est d'acqurir des copies prennes dans le temps et moins encombrantes que des cassettes  bande magntique VHS. 

J'ai quelques connaissances en filtrage numrique d'images et en traitement du signal (transforme de Fourier, etc.) donc je suis fortement intress par liminer les "bruits" de la vido dus par exemple  la dtrioration de la bande, au passage dans le circuit vido du magntoscope, etc.

Par contre, je ne connais pas grand chose  l'encodage vido, aux techniques de compression, etc. Est ce que vous pourriez m'aiguiller un peu pour savoir dans quelle direction je devrais chercher, quels logiciels, quelles librairies de traitement vido utiliser, et peut tre des cours de traitement vido. Je ne voudrai pas devoir retoucher   la main les 100 000 images d'un film, juste savoir quels sont les techniques et les algorithmes usuels, ainsi que les thories sur lesquelles elles reposent.

Merci beaucoup.

----------


## parp1

> Bonjour. 
> 
> Mon but dans cette opration est d'acqurir des copies prennes dans le temps


Euh une bande magntique a une plus longue vie qu'un disque dur. Si tu les stock dans un endroit non humide. Mais je conois tout a fait que c'est un gain de place.

Si le traitement video, fais une recherche sur ce forum (il n'y a pas beaucoup de discution... tu devrais trouver ton bonheurs. Je me rappel de quelqu'un traitant des lignes verte sur la vido...)

----------


## Flo.

::D:  

Ca me rappelle quelque chose ...

progfou avait lanc un post  ce sujet :

http://www.developpez.net/forums/sho...&highlight=vhs

On avait un peu travaill tous les 2 pour mettre au point un algo ( noter que dans ce post, les images mises en lien dans mes posts n'existent plus ... dsol  ::oops::  ).

Tu trouveras sur mon site le binaire et le code-source de l'application qu'on avait ralis ; elle s'appelle "Blue Lines Eliminator" (compilable avec Borland c++ Builder 6).

http://floriansella.free.fr/

L'application est fonctionnelle sauf (et quel sauf !!!) qu'elle ne conserve pas le son, de la video AVI source  la video AVI resultat ; je n'tais pas parvenu  l'achever.

En esprant que a t'aideras un peu

Flo.

----------


## progfou

Effectivement, j'avais lanc un post  ce sujet. Depuis, je n'ai plus le temps de me replonger dedans...

Lorsque tu auras regard si a t'aide, mais que tu as des problmes supplmentaires, poses tes questions, on tchera de rpondre  ::): .

Edit: si j'y pense, je vais essayer de te retrouver des images  :;): .

----------


## kromartien

Merci beaucoup pour le lien sur la discussion, c'est vraiment trs intressant. Merci aussi d'avoir mis  disposition vos sources.  ::D:  

Je m'interroge beaucoup sur le format d'une VHS numrise "RAW" (brute) .

Car je conois bien la dcomposition YUV d'une vido en plusieurs trames :
(1) luminance 
(2) part de rouge 
(3) part de bleu

Je connais aussi le codage RGB (Red Green Blue). 

Mais une vido "RAW" , donc brute, c'est une succession d'images  une certaine frquence. J'ai fait le calcul du stockage des images pour un codage  32 bits par pixels et un format 640x480, pour 30 images par secondes pendant une heure :

32x640x480x30x3600 = 126 Go environ donc c'est inconcevable que les vidos soient stockes de cette manire, et mme en diminuant la profondeur de l'image, on arrive au mieux  30Go pour un noir et blanc sur huit bits d'intensit (dj une bonne rsolution d'intensit).

C'est pourquoi j'aimerai en savoir un peu plus sur le format d'encodage des vidos par la carte PCI sur lequel vous avez effectu les modifications de trame.

Merci beaucoup, pour vos liens, ils sont trs bon en tout cas, et pour la qualit des informations acquises qui seront  coup sr trs utile.

Est ce qu'il n'est pas utile galement de vouloir amliorer la qualit intrinsque de l'enregistrement, c'est  dire au del des bruits lectroniques seulement mais aussi la luminosit, le contraste, les taches, les flous, etc, tout ce qui tient au film en lui mme. 

Pour la trame sonore, comment est-elle intgre dans une vido numrique ?

----------


## progfou

Que de questions !  ::): 
Dj, une VHS n'est pas numrique, on ne parle donc pas de YUV ou autre chose. Wikipedia (anglais) contient une bonne rfrence  ce sujet :
http://en.wikipedia.org/wiki/VHS

Ensuite, on code une vido YUV avec 8 bits par composante.
640x480@30Hz|60min = 640x480x30x3600 = environ 31 Go.

Bien sr, on encode jamais directement la vido YUV, mais en compressant (mpeg-2 ou autre). On peut alors diminuer considrablement la place occupe.

La plupart du temps, la carte d'acquisition va numriser et compresser le signal en temps rel. Dans mon cas, j'avais demand un encodage MPEG2 avec une qualit suffisante pour ne pas trop dgrader le signal (pas plus qu'au dpart), mais malgr cela, on voit, par zoom, un effet de bloc qui est gnant.

Quant  l'amlioration de luminosit, contraste, etc. oui, il est intressant de le faire, mais c'est un problme diffrent (quoique l'on puisse l'intgrer).
Supprimer les tches est complexe (en gnral, on utilise une technique nomme _inpainting_ pour cela), mais a se fait.

La trame sonore est ajoute par le codec (le format complet, qui dcrit le type de compression vido, le type de compression audio, les sous-titres, etc.).

Reste  savoir si le but est de crer un logiciel capable d'amliorer considrablement la qualit de la vido reue ? Est-ce que tu cherches  automatiser le process complet (depuis l'acquisition jusqu'au stockage) ?

----------


## kromartien

Oui alors la dcomposition YUM j'ai bien conscience qu'elle ne se fait que sur la vido une fois numrise. C'est pour a que je me posais la question du format encod vu la place que a prendrait si c'tait du brut. Pour une dcomposition YUV en brut, a fait donc 31Go environ par composante, et il y en a trois.

Merci beaucoup en tout cas pour mpeg2, je vais faire des recherches sur le traitement d'images en mpeg2.  ::D:  

pour YUV, je suis un peu tonn qu'il n'y ait pas de composante verte, mais bon a doit tre prvu donc je ne me pose pas trop de question.

Pour l'encodage, oui c'est certain que plus le travail est dport sur la carte d'acquisition, mieux c'est. 
Mais pour le traitement, je ne suis pas sr qu'elle puisse le faire en temps rel  ::koi::  surtout si le pilote est spcifique, etc, je ne sais pas comment a marche  vrai dire.  ::aie::  Je ne pense pas que je puisse m'adresser directement  la carte d'acquisition, donc ce sera un traitement informatique de la vido. Je ne sais pas encore de quoi il sera fait, tant donn que je n'ai pas de vido ni de carte d'acquisition  l'heure actuelle, mais je vais chercher un peu des librairies et des scripts. Merci beaucoup  ::D:  .

----------


## progfou

Je veux bien essayer d'clairer ta lanterne, car tu as l'air (me trompes-je ?) de peu connaitre le domaine de la vido  ::): .
Dj, il faut savoir que lorsque l'on parle de composante rouge, verte et bleue, il y a des redondances dans l'information porte par chacune de ces composantes. Afin d'en liminer un peu, on transforme, c'est  dire qu'on passe d'un espace de couleurs  3 dimensions (RGB)  un autre espace  3 dimensions (YUV) o les composantes U et V sont reprsentatives  elle seules de toute l'information de chrominance, et la composante Y contenant l'information d'intensit. Autrement dit, Y seul donne l'image en niveaux de gris.

Pour plus d'informations  ce sujet :
http://en.wikipedia.org/wiki/YUV

Pour ce qui est de MPEG2 :
http://bmrc.berkeley.edu/frame/resea.../mpeg2faq.html

Il faut savoir qu'un encodeur MPEG2 est relativement simple  faire (contrairement  un encodeur H.264 par exemple qui est un nouveau standard et qui est beaucoup plus complexe), surtout au niveau matriel.
Tu ne t'adresses pas directement  la carte d'acquisition, sauf si tu veux tout automatiser, mais tu utilises un logiciel d'acquisition (fournit avec la carte, ou libre si tu prfres). Pour ma part j'tais sous linux, et j'ai pilot XawTV avec un petit soft en C.

----------


## kromartien

Ok gnial alors des vidos 24 bits ! 

Pour la carte d'acquisition, oui il  faut dj un driver. Le codage RGB est donc natif, et le passage en YUV permet d'liminer de la taille vido tout en conservant l'information couleur. Merci beaucoup.

mpeg2 ok  savoir.

Je suis sous Linux aussi donc j'esprais bien trouver un programme qui me permette de traiter la vido ou un utilitaire qui me permette d'automatiser un traitement quelconque ou mme faire un programme C ( plus difficile ) de traitement des trames car pour ce dernier au moins, je sais qu'il existe des librairies documentes. Mais un bon utilitaire serait sympa aussi.

Oui en effet, je ne conais pas trop le domaine de la vido et de l'image, ni numrique ni analogique, donc c'est pour a j'avais peur de me lancer dans quelque chose sans rien savoir  ces sujets. Merci encore pour ces liens.  ::D:

----------


## progfou

Attention, je n'ai pas dit 24 bits. Si on conserve toutes les composantes Y, U et V, on a 3*8bits, c'est vrai. Mais en vido, on utilise le format 4:2:0, c'est  dire qu' quatre valeurs Y on associe une valeur U et une valeur V (cf. le bas du document wikipedia). Donc pour 4 pixels : 4*8 (Y) + 8 (U) + 8 (V) = 48 bits, donc 12 bits par pixel.

Pour le coup, en YUV 4:2:0, la vido d'une heure occupera :
640*480*30*3600*12 = 398131200000 bits soit 46Go.
Au passage, je rectifie, la vido en YUV 4:4:4 occupera 92.7Go environ et non 31 (erreur de multiplication par 3).

----------


## kromartien

ok merci beaucoup, je vais potasser a un peu.

----------


## souviron34

et j'ajouterais que le lien donn pour mpeg2 est le bon pour avoir des sources (comme celui du mpeg.org).

Par contre, * viter tous les sources uniquement pour Windows*, car ils ne correspondent pas  la vraie norme (limits en taille  640*480). La vraie norme n'a aucune limitation.

Je me souviens avoir galr pour trouver un afficheur (que j'ai fini par trouver en freeware) correct pour Windows, pour des mpeg gnrs sur d'autres OS (et de tailles variables, mais suprieures  640*480).

----------


## progfou

Voici deux images qui montrent un exemple de traitement.

----------

