répresenter un signal de luminance via un fichier wav

Différents standards (PAL, SECAM, NTSC), histoire et évolution de la TV analogique...

répresenter un signal de luminance via un fichier wav

Messagepar Mannix54 » 25 Juin 2017 18:11

Bonjour,

à votre avis est-il possible de représenter un signal vidéo de luminance via un fichier audio wav ?

j'y connais pas grand chose en modulation d'amplitude, mais je me dis qu'il doit être possible de représenter via un fichier audio wav le transport des informations de luminance d'une image ( un fichier PNG par exemple ) par une modulation d'amplitude ?

https://fr.wikipedia.org/wiki/Modulation_d%27amplitude

dans ce fichier wav il y aurait des signaux de synchronisation, indiquant le début et la fin d'une trame,

si ce concept fonctionne on pourrait alors créer un logiciel permettant de coder une image ( fichier jpeg, png ) en un fichier audio wav ( et qui fait l'inverse ), qu'on pourra consulter dans un logiciel comme audacity,

le but ultime étant ensuite de représenter un signal video-composite PAL via un fichier wav, et de gérer derrière la démodulation de ce signal, l'extraction de la luminance, de l'info couleur, comme le ferait un vrai poste de télévision,

je ne sais pas si le format audio wav est pertinent ici, ou s'il faut créer un nouveau format de fichier permettant de représenter de manière numérique fidèlement un phénomène analogique ( modulation d'amplitude, voire une modulation d'amplitude en quadrature dans le cas d'un signal PAL )
Avatar de l’utilisateur
Mannix54
Etalon
Etalon
 
Messages: 1136
Inscription: 18 Oct 2007 09:21

Re: répresenter un signal de luminance via un fichier wav

Messagepar kmf31 » 25 Juin 2017 18:41

Sur le plan informatique pure ca doit etre assez facile de transformer un fichier png en wav. Il faut seulement ajouter quelques bytes pour la structure du fichier wav qui font la difference entre un wav et un fichier raw (ou on aurait la valeurs audios a chaque instant de maniere directe dans le fichier sans aucune modification ni compression). Seulement un tel fichier wav ne ferait pas de sens au niveau ecoute (ce serait comme de bruit blanc et pourrait meme abimer des enceintes etc.) et si on pense pouvoir appliquer des traitements sur les frequences du fichier audio pour faire un manipe "raisonable" pour le fichier image alors ce ne marchera pas non plus car la compression jpeg/mpeg ou png est tres compliquee et ne fonctionnerait pas de tout comme ca car la structure du wav (deux signaux audio lineaires) est tres differente.

Si le but est de transferer un fichier png a travers une connexion optique d'un appareil genre lecteur CD vers un autre appareil il y aurait peut-etre un petite application mais je manque aussi voir l'interet de le faire.

Qu'est-ce que tu voudrais exactement faire et qu'on ne pourrait pas faire autrement en bien plus facile (avec un vrai logiciel video specialise) ?

Meme si on prend un format d'image non-compresse (genre bitmap) ce serait en deux dimensions pendant le wav serait en une dimension. Il faudrait au moins deplier ca.
Modérateur des forums TVNT
---
Réception TNT depuis les deux émetteurs de Toulouse Lafilaire et Pech David
kmf31
Brigades du Tigre
Brigades du Tigre
 
Messages: 6020
Inscription: 27 Juin 2005 15:12

Re: répresenter un signal de luminance via un fichier wav

Messagepar Mannix54 » 25 Juin 2017 19:39

l'idée c'est de simuler au mieux le rendu d'une image analogique vidéo-composite PAL sur un PC, au début je commence d'abord par le plus facile : un signal analogique noir et blanc ( l'info de luminance ), on ne s'occupe pas de la couleur pour l'instant,

en gros on part d'une image classique ( jpeg, png ), on convertit les valeurs RGB de chaque pixel en valeurs de luminance ( 256 valeurs possibles ), on module ces données de luminance en modulation d'amplitude, on va mettre ces données dans un fichier wav ( ou tout autre format de fichier capable de stocker précisément cette modulation d'amplitude ),

puis on refait le traitement inverse, on démodule ce signal pour récuperer les infos de luminance, et on affiche le résultat sur un écran de PC via un logiciel, on doit alors retrouver une image similaire à l'image d'origine,

pour faire "réaliste" il faudrait que le signal dans le fichier wav décrive précisément à l'instant T ce que doit faire un canon à électron ( des signaux de synchronisation de début et de fin de ligne, de début et de fin de trame, la valeur en voltage pour chaque point de l'image ), à priori ça doit être possible de décrire tout ça via une signal de modulation d'amplitude, le plus dur c'est d'être certain de pouvoir représenter ce signal sous format informatique, d'où mon idée d'utiliser un fichier wav qui décrit un format d'onde,

un internaute a déjà eu cette idée de simuler un signal TV analogique via un fichier wav mais malheureusement je ne retrouve plus le lien, c'était sur un vieux site anglais où des gens s'amusaient à reproduire informatiquement le système PAL ( des filtres de rendu pour des émulateurs de jeux d'arcade )
Avatar de l’utilisateur
Mannix54
Etalon
Etalon
 
Messages: 1136
Inscription: 18 Oct 2007 09:21

Re: répresenter un signal de luminance via un fichier wav

Messagepar Mannix54 » 25 Juin 2017 21:12

Avatar de l’utilisateur
Mannix54
Etalon
Etalon
 
Messages: 1136
Inscription: 18 Oct 2007 09:21

Re: répresenter un signal de luminance via un fichier wav

Messagepar kmf31 » 25 Juin 2017 22:12

S'il faut programmer alors Matlab/Scilab n'est pas particulierement efficace. Moi je le ferais en C ou C++ et surtout en Linux (je ne saurais meme pas le faire en Windows, au moins pas de maniere efficace).

D'abord les formats compresses jpg, png, gif etc. ne sont pas commodes. En principe il faut transformer ca en un format non-compresses comme le bitmap:
https://fr.wikipedia.org/wiki/Portable_ ... _binaire_3

et une fois on a un tel format on peut extraire (dans un programme C ou autre) pour chaque pixel les valeurs RGB (RVB en francais), c'est a dire trois valeurs entre 0 255 pour chaque couleur (rouge, verte et bleue). Si on suppose que l'image est une image de TV analogique avec un certain nombre de lignes et un certain nombre de pixels en horizontale on peut traduire ca vers un flux lineaire de nombres entre 0 et 255 pour chaque couleur (donc en realite trois flux pour rouge, vert et bleu) en prenant ligne par ligne. Si on a une suite d'images c'est evident pour obtenir un flux de couleurs plus long. S'il y a 24 images par seconde ca fait donc 24 fois X fois Y valeurs de couleurs par seconde (avec X et Y la resolution d'une image en pixels) ce qui correspond a une certaine frequence.

A l'autre cote un fichier wav contient (sauf pour quelques octets speciaux au debut pour le format du fichier) deux flux de valeurs entre 0 et 2^16-1=65535 pour les deux canaux stereos audio, typiquement avec une frequence de 44 Khz (si c'est compatible a un CD audio) ou aussi 48 Khz si c'est obtenu d'une piste audio d'un video qui est souvent en 48 Khz pour audio.

Donc on peut ecrire un programme (C ou Matlab mais C sera plus efficace !) qui transformerait la suite des images bitmaps en trois flux de nombres entre 0 et 255 et on pourrait mettre deux de ces flux (donc 2 couleurs au choix) dans le WAV mais on ne profiterait pas au maximum de la resolution du WAV (avec 2^16=65536 valeurs pendant chaque couleur aurait 2^8=256 valeurs) mais ce ne serait pas grave. Ce qui serait plus bizarre c'est la frequence des pixels qui ne colerait (probablement) pas bien aux frequences naturelles d'un vrai WAV (44 ou 48 Khz) mais cela ne serait peut-etre pas non plus trop grave.

Il peut y avoir des complications avec l'entrelacement si c'est present dans la suite des images initiales (???) mais ca devrait pouvoir se gerer. Si tu as le modele de la TV analogique en tete il y a des trous entre deux images et la question est comment gerer ca ... (ajouter certains pixels noires a la fin de chaque ligne ??).

Pour transformer des jpg, png, gif en bitmap il y a des logiciels comme "convert" en Linux qui marchent tres bien. Convert fait partie du paquet de Gimp, donc si on installe Gimp on a le "convert" et il suffit de faire la commande genre "convert fichier.jpg fichier.ppm" etc. (enfin pour une suite de fichiers => faire un script). Apres le programme C travaillerait sur les ppm. Autre methode: utiliser une bibliotheque gratuite pour jpg ou gif qui permet de recuperer dans un programme C disons toute une ligne de pixels d'un fichier jpg/gif vers un tableaux (ou trois tableaux) contenant les valeurs des couleurs. Ca peut aussi marcher, c'est peut-etre plus complique dans la pratique car il faut apprendre d'utiliser la bibliotheque (un probleme pas trivial !!) mais probablement aussi plus efficace car on economiserait l'appel de convert.

Donc si c'etait mon projet:
1) prendre un fichier video et transformer ce video en une suite d'images jpg (ca c'est aussi un point qui necessite une solution pratique) ou similaire et apres transformer par convert en bitmap.
2) ecrire un programme C qui produit a partir du bitmap trois flux pour chaque couleurs dont on ecrira 2 dans un fichier wav,
regarder aussi ici:
https://fr.wikipedia.org/wiki/WAVEform_ ... ichier_WAV
pour le format du WAV. En principe c'est assez facile.

Apparemment on peut aussi mettre trois canaux dans le wav, donc on peut prendre les trois couleurs. Il faut verifier que son soft d'analyse de WAV sache gerer trois canaux etc.

Apres il reste la question de la frequence bizarre du wav.

Tu peux aussi transformer les trois couleurs en signal noir et blanc etc. et plutot utiliser ca (je suppose il y a une formule pour ca, peut-etre la valeur moyenne des trois couleurs ?). Ca c'est quelque chose qui se gere aussi facilement dans le programme C si on veut le faire.
Modérateur des forums TVNT
---
Réception TNT depuis les deux émetteurs de Toulouse Lafilaire et Pech David
kmf31
Brigades du Tigre
Brigades du Tigre
 
Messages: 6020
Inscription: 27 Juin 2005 15:12

Re: répresenter un signal de luminance via un fichier wav

Messagepar Marc2 » 26 Juin 2017 11:35

kmf31 a écrit:Tu peux aussi transformer les trois couleurs en signal noir et blanc etc. et plutot utiliser ca (je suppose il y a une formule pour ca, peut-etre la valeur moyenne des trois couleurs ?).

Il vaut mieux considérer le blanc comme 59 % de vert, 30 % de rouge et 11 % de bleu.
Avatar de l’utilisateur
Marc2
Etalon
Etalon
 
Messages: 1816
Inscription: 30 Oct 2007 00:45

Re: répresenter un signal de luminance via un fichier wav

Messagepar marceljack » 26 Juin 2017 12:44

Marc2 a écrit:
kmf31 a écrit:Tu peux aussi transformer les trois couleurs en signal noir et blanc etc. et plutot utiliser ca (je suppose il y a une formule pour ca, peut-etre la valeur moyenne des trois couleurs ?).
Il vaut mieux considérer le blanc comme 59 % de vert, 30 % de rouge et 11 % de bleu.
+1
C'est l'équation de la luminance dans tous les systèmes de TV couleur (Y = 0,59*V + 0,30*R + 0,11*B).
Modérateur des forums tvnt.net

Installation TNT: Paris: VTU50 collective 21-60 / Royan: Lambda 9 + préampli
TV HD: Thomson FE9234B, Philips 39PFL3807, Acer AT2356,
PC: Pinnacle PCTV310i & 310e, Technaxx DVB-S3, Techgear Diversity Stick, Terratec TStick+
marceljack
Brigades du Tigre
Brigades du Tigre
 
Messages: 21527
Inscription: 06 Oct 2005 18:59
Localisation: 75019 PARIS

Re: répresenter un signal de luminance via un fichier wav

Messagepar Mannix54 » 27 Juin 2017 21:29

oui il faut utiliser les équations classiques de conversion RVB vers YUV et YUV vers RVB :

https://fr.wikipedia.org/wiki/YUV

en fait ce que j'aimerai faire c'est représenter "informatiquement" un signal de modulation d'amplitude via un fichier wav, ce signal de modulation transportera l'information de luminance d'une image jpeg ou png,

en gros un logiciel qui prend en entrée un fichier image jpeg ou png, qui va créer ensuite en sortie un signal en modulation d'amplitude ( de l'AM ), mettre ça dans un fichier informatique ( format wav, mais ça peut être un format binaire personnalisé mieux adapté ),

puis ensuite ce logiciel devra avoir une option pour démoduler ce signal AM afin de retrouver les informations de luminance et récréer l'image jpeg/png ( qui sera donc en noir et blanc ),
et aussi une option de visualisation du signal "AM" ( à des fins pédagogiques )

Image

ça demande d'avoir certaines bases en mathématiques, trigonométries pour savoir moduler en AM, puis démoduler, des histoires de sinus, cosinus, de porteuse, de phase
Avatar de l’utilisateur
Mannix54
Etalon
Etalon
 
Messages: 1136
Inscription: 18 Oct 2007 09:21

Re: répresenter un signal de luminance via un fichier wav

Messagepar Marc2 » 27 Juin 2017 22:28

Tu devrait commencer par créer le signal video en bande de base.

La modulation AM ne nécessite ni trigonométrie ni rien de compliqué, juste une multiplication. Par contre la modulation AM-VSB nécessite un filtrage, c'est plus compliqué (mais est-ce bien nécessaire ?)
Avatar de l’utilisateur
Marc2
Etalon
Etalon
 
Messages: 1816
Inscription: 30 Oct 2007 00:45

Re: répresenter un signal de luminance via un fichier wav

Messagepar Mannix54 » 28 Juin 2017 11:02

je ne sais pas ce qui tu entends par "créer un signal vidéo en bande de base",

je vais suivre ce tutoriel :
https://tomroelandts.com/articles/how-d ... ation-work

Mathematically, the modulation amounts to multiplying the carrier wave with the message. The carrier wave is defined as

c(t)=Acos(2πfct),
Avatar de l’utilisateur
Mannix54
Etalon
Etalon
 
Messages: 1136
Inscription: 18 Oct 2007 09:21