Du signal audio numérique à l'image numérique

20
S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique à l'image numérique Page Page 1 Du signal audio numérique à l'image numérique Cours S.S.I.I., SI3, cours 9, décembre 2015, durée : 55 mn, Jean-Paul Stromboni Objectif et contenu de cette séance : Savez vous répondre aux questions suivantes ? Que signifie résolution de 30 ppp d’une image ? En quoi une image de niveau de gris diffère-t’elle d’une image RVB ? Comment distinguer une image en noir et blanc et une image en niveaux de gris ? Donner la réponse impulsionnelle ou masque, ou noyau, du filtre de Prewitt horizontal Combien de pixels sur 10 cm en résolution 30 dpi ? Une table de 256 couleurs codées sur 8 bits occupe combien d’octets ? • Objectif : étendre aux images numériques les notions introduites pour le signal audio numérique : échantillonnage, quantification, filtrage, et plus tard spectre et compression • Contenu : on voit les notions de résolution, d’image de niveaux de gris, de codage RGB et YUV, de colormap, de filtre d’image, le problème de détection de contours … avec Scilab. Outils : installer la boîte à outils SIVP dans Scilab • Pour installer SIVP, dans Scilab, aller dans le menu ‘Applications’ puis dans le menu ‘Gestionnaire de Modules’, et installer ‘Scilab Image and Video Processing’ depuis Scilab • Installer également le logiciel libre et gratuit IMLAB

description

Du signal audio numérique à l'image numérique. Cours S.S.I.I., séance 9, décembre 2013, durée : 55 mn, Jean-Paul Stromboni pour les élèves SI3. Objectif et contenu de cette séance :. - PowerPoint PPT Presentation

Transcript of Du signal audio numérique à l'image numérique

Page 1: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 11

Du signal audio numérique à l'image numérique Cours S.S.I.I., SI3, cours 9, décembre 2015, durée : 55 mn, Jean-Paul Stromboni

Objectif et contenu de cette séance :

Savez vous répondre aux questions suivantes ?

Que signifie résolution de 30 ppp d’une image ? En quoi une image de niveau de gris diffère-t’elle d’une image RVB ?

Comment distinguer une image en noir et blanc et une image en niveaux de gris ?

Donner la réponse impulsionnelle ou masque, ou noyau, du filtre de Prewitt horizontal

Combien de pixels sur 10 cm en résolution 30 dpi ?

Une table de 256 couleurs codées sur 8 bits occupe combien d’octets ?

• Objectif : étendre aux images numériques les notions introduites pour le signal audio numérique : échantillonnage, quantification, filtrage, et plus tard spectre et compression

• Contenu : on voit les notions de résolution, d’image de niveaux de gris, de codage RGB et YUV, de colormap, de filtre d’image, le problème de détection de contours … avec Scilab.

Outils : installer la boîte à outils SIVP dans Scilab• Pour installer SIVP, dans Scilab, aller dans le menu ‘Applications’ puis dans le menu ‘Gestionnaire de Modules’, et installer ‘Scilab Image and Video Processing’ depuis Scilab

• Installer également le logiciel libre et gratuit IMLAB

Page 2: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 22

Caractère numérique d’une image de niveaux de grisL'image suivante est affichée par Imlab avec à droite les pixels de la zone indiquée par le curseur : définition horizontale : N=358 pixels, définition verticale : M=587 pixels, B=8 bits par pixel, 256 valeurs d’intensité possibles, niveaux de gris de 0 pour un pixel noir à 255 pour un pixel blanc.

Propriétés de ‘moon.png’ :Largeur : 358 pixels

Hauteur : 537 pixels

Profondeur couleur: 8

Taille: 85,7ko (87 809 octets)

Page 3: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 33

Du signal audio numérique à … l’image numérique

11

22/2

*)/(:

)*(

',/1

]1...0),([

[,0[),(

1

Q

BB

Q

e

ee

en

nnageéchantillo

s

Q

QQsfloorstionQuantifica

fDfloorN

nnageéchantillodfréquenceTf

NnnTsss

Dtts

x

y

0 L

H

y découpé en

M lignes

x découpé en N colonnes

Im(x,y)

s(t)

tD

10

22/1

*)/(:

:

)*(),*(

,/

,/

]1...0,1...0),,Im([

[,0[,[,0[),,Im(

Q

BB

Q

yx

y

x

mn

nnageéchantillo

I

Q

QQIfloorItionQuantifica

MNdéfinition

fHfloorXfLfloorX

verticalerésolutionHMf

ehorizontalrésolutionLNf

MmNnN

nL

M

mHII

HyLxyx

En résumé : la durée devient la distance, le temps devient espace, et une dimension devient deux.

Page 4: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 44

Une image couleur RGB est la superposition de trois images de niveaux de gris : une rouge R, une verte G et une bleue B:

Properties de ‘joconde.jpg’ (Windows)

Largeur : 198 pixels

Hauteur : 300 pixels

Résolution : 30 ppp

Profond. couleur: 24

Taille 7,10Ko(7276o)

Im=imread(‘Joconde.jpg’); // avec Scilab et SIVPimshow(Im); // par contre pour afficher Pixel Region, utiliser IMLABsize(Im) // donne 300 par 198 par 3, pourquoi ?

Avec Imlab, des pixels du « sourire de Mona Lisa »

Page 5: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique

// avec SIVP

// Afficher R, G et B

rgb=imread('Joconde.jpg');

r=rgb;

r(:,:,[2,3])=0; // ?

imshow(r)

imwrite(r,'jocr.jpg');

Page Page 55

Séparer les trois images de niveau de gris R, G (vert) et B

g=rgb;

g(:,:,[1,3])=0;

imshow(g)

b=rgb;

b(:,:,[1,2])=0;

imshow(b)

Avec Imlab:

menu Process, puis Split components, donne les trois images

R,G et B :

Page 6: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 66

Extraire luminance Y et chrominances CB et CR avec Imlab

la luminance Y à gauche, contient plus d’information que les chrominances Cr et Cb : on sous-échantillonne les plans U et V dans un rapport 2 pour compresser l’image ** rgb2gray() qui calcule Y transforme une image couleur en image de niveaux de gris

R

B

CYRV

CYBU

BGRY

877.0

492.0

114.0587.0299.0

À l’aide de IMLAB, menu Image/Color space, choisir YCrCb, puis menu Process, choisir Split components,

et voici Y, Cr et Cb pour ‘joconde.jpg’

Page 7: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 77

Avec Scilab, calculer Y, Cr et Cb et sous-échantillonner Cr

// sauver l’image dans Im

Im=imread('joconde.jpg');

// calculer Y, Cr, et Cb

YCrCb=rgb2ycbcr(Im);

Cr=YCrCb(:,:,1);

Y=YCrCb(:,:,2);

Cb=YCrCb(:,:,3);

// afficher Cr

imshow(Cr)

[l,c]=size(Cr)

//sous échantillonner Cr

//dans un rapport 4

Cr4=Cr(1:2:l,1:2:c);

Cb4=Cb(1:2:l,1:2:c);

imshow(Cr4)

Taux de compression de Cr ?

Taux de compression de Cb ?

Taux de compression de l’image RGB ?

Page 8: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 88

L’œil différencie 2 millions de couleurs, 24 bits en créent plus de 16.7 millions, utiliser une table de couleurs (colormap ) est un moyen de compresser une image

Une colormap est un tableau de 2A cases contenant chacune une intensité codée sur B bits, avec 2B>2A (par exemple 256 couleurs codées chacune sur 24 bits).Chaque pixel contient alors un index, adresse sur A bits de la case de la colormap où lire la couleur du pixel. Il en résulte un taux de compression : C = B/A.Scilab contient des colormaps, telles que pinkcolormap, et permet d’en définir de nouvelles :

b=imread('moon.png');

cmap=pinkcolormap(64);

c=ind2rgb(b,cmap);

imshow(c);

size(cmap) 64 3

La matrice cmap est constituée de trois colonnes R, G et B où il est permis de constituer sa propre colormap ou de choisir pinkcolormap ou …

Taux de compression ici ?

L’image c est quatre fois plus petite que b, pourquoi ?

R G Br1 g1 b1

r2 g2 b2

… … …

r64 g64 b64

Page 9: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 99

Histogramme d’une image: décaler l’intensité médiane

lena=imread('lena.png'); imshow(lena) lenay=rgb2gray(lena); imshow(lenay) scf(2); bar(imhist(lenay),1,'green');// foncer lenay imshow(imsubtract(lenay,40))// imadd pour éclaircir // lenay doit être réelle median(double(lenay))stdev(double(lenay))

//mediane de lenay: 129.//stdev de lenay: 47.85 129. 255.0.

Page 10: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1010

Histogramme d’image : écart type d’intensité et contraste

function Z= contraste(X, t) n=size(X,1);p= size(X,2);Z=double(X);b=median(Z);M(1:n,1:p)=b; Z=M+ t*(Z-M);M(:)= 255; Z=min(Z,M);M(:)= 0; Z=max(Z,M); Z=uint8(Z);

endfunction

lenayc=contraste(double(lenay),1.5);imshow(lenayc)bar(imhist(lenayc),1,'green');median(double(lenayc)) stdev(double(lenayc))// mediane lenayc: 129.// stdev lenayc: 83.79

129. 255.0.

Page 11: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1111

Fréquence spatiale horizontale• i(x)= 0.5+ 0.5*cos(2*%pi*f*x) • x varie de 0 à L• Définition : N pixels entre 0 et L• Période échantillonnage : L/N• Résolution horizontale: fx = N/L • Pixellisation : x= k*L/N, k= 0 … N-1• ik= 0.5*(1+cos(2*%pi*f*k*L/N)• Normalisation de fe : L/N= 1 fx=1 pixel par unité de longueur x= 0 .. N-1• ik=0.5*(1+cos(2*%pi*f*x)

// fréquence spatiale horizontale xset('window',0) N=32 // L=N; // un pixel par unité de longueur // fréquence d'échantillonnage spatiale normalisée fx=N/L x=0:N-1; y=0:N-1; P=7; // période spatiale en pixels f=1/P; // fréquence spatiale sx=(1+cos(2*%pi*f*x))/2; sy=ones(1,N); Ix=sy'*sx; xset("colormap",graycolormap(256)); Sgrayplot(x,y,Ix',strf="041"); xtitle('',['x, pour fx=',string(f)],'y')

Page 12: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1212

Filtres d’images numériques :

Comme pour le signal audio, on peut filtrer une image numérique, par produit de convolution bidimensionnel : Un filtre passe haut amplifie les hautes fréquences spatiales (détection des contours) Un filtre passe bas favorise les basse fréquences spatiales, atténue les bruits, contours, les

discontinuités spatiales, mais crée des zones de flou.

Imf= Im * h Où Im est l’image M x N pixels à filtrer, Imf est l’image des M x N pixels filtrés, h est la réponse impulsionnelle du filtre, une matrice de dimensions R x R

Calcul du pixel Imf(i, j) de l’image filtrée :

i varie de 0 à M-1, j de 0 à N-1 Im(k,l) est pris égal à zéro quand k= i-m+R-1 est négatif, ou quand l= j-n+R-1 <0 Imf(i,j) est la somme de R2 termes non nuls impliquant le pixel Im(i,j) et ses voisins

1

0

1

0)1,1Im(),(),(Im

Rm

m

Rn

nRnjRminmhjif

Page 13: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1313

Exemple de mise en œuvre du produit de convolution 3x3 Soit h ci-dessous, matrice 3 x 3, et réponse impulsionnelle du filtre

Soit sI, sous matrice 3x 3 de Im centrée sur le pixel à filtrer pc

Le pixel filtré vaut

Application : relever pc et calculer le pixel filtré dans le cas suivant

Avec Scilab, faire h= [1, 1, 1; 0, 0, 0; -1, -1, -1]; Imf = imfilter(Im, h); Imf2 = imfilter(Im, h’);

sesso

eco

nenno

hhh

hhh

hhh

h

sesso

eco

nenno

ppp

ppp

ppp

sI

nosensnesosonesnsenooecceo phphphphphphphphphp

111

000

111

h

000

111

111

sI pc= 1 p= -3

101

101

101

'h p= 0

Page 14: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1414

Filtrage de l’image ‘lena.png’, filtre laplacien (dérivée seconde)

// filtrer l'image lena//filtre laplacien lena=imread('lena.png'); h = fspecial('laplacian');imf = imfilter(lena,h); imshow(imf);h

1667.0667.01667.0

667.0333.3667.0

1667.0667.01667.0

h

Page 15: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1515

Détection de contours avec le filtre de Prewitt et son transposé

// Scilab SIVP image='joconde.jpg';

im = imread(image); imd=im2double(im);

img = rgb2gray(imd); imshow(img)

// avec Scilab et SIVP

h= fspecial(‘prewitt’)

imfx = imfilter(img, h');

aimfx=imcomplement(abs(imfx));

imwrite(aimfx,’aimfx.png’);

// avec Scilab et SIVP

imfy = imfilter(img, h);

aimfy=imcomplement(abs(imfy));

imwrite(aimfx,’aimfy.png’);

Page 16: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1616

On somme imfx et imfy et on applique un seuil pour déterminer les contours

// sans seuilimcontour=abs(imfx)+abs(imfy); imwrite(imcontour), './c.png');

// seuil ‘bas’

seuil=0.3;

imc=imcontour; imc(imc<seuil)=0; imc(imc>0)=0.9;

imc=imcomplement(imc);

imwrite(imc,’./imc.png’)

// seuil croît

seuil=0.5;

imc=imcontour; imc(imc<seuil)=0; imc(imc>0)=0.9;

imc=imcomplement(imc);

imwrite(imc,’./imc.png’)

Page 17: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1717

Capteurs biologiques : cellules de la rétine Les bâtonnets (vision de nuit) sont sensibles à la luminosité et pas à la couleur, il y

en a 120 millions sur la rétine, ils ont un maximum de sensibilité vers le bleu , c’est-à-dire = 500 nm environ

Les cônes sur la fovea, petite zone de la rétine, sont 7 millions par œil, il y a Les cônes verts, capturent plutôt les photons verts, maximum vers = Les cônes rouges, capturent les photons rouges, maximum vers = Les cônes bleus capturent les photons bleus, maximum vers =

D’après la courbe ci-dessous : L’œil humain est plus sensible à la luminosité qu’à la couleur Les cônes verts sont plus sensibles que les rouges plus sensibles que les bleus

(cf. Wikipédia)

Page 18: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique

R, G, B Yn, Cb, Cr (ou YUV) un autre moyen de compresser

Comment transformer une image couleur à afficher sur un téléviseur noir et blanc, sans perdre l’information sur les couleurs R, G et B ?

On calcule la luminance Y ainsi que les chrominances Cb et Cr :

Y est la luminance de l’image couleur, information sur la luminosité de l’image Cb est la chrominance bleue, information sur la couleur bleue dans l’image Cr est la chrominance rouge

Y, Cr, et Cb permettent de reconstituer R, G et B, c’est-à-dire l’image couleur

Mais comme l’œil perçoit le vert comme plus lumineux que le rouge, lui-même plus lumineux que le bleu, on peut sous échantillonner les plans Cr et Cb pour compresser l’image, c’est la première phase du codec jpeg

Si on sous échantillonne dans un rapport 2 horizontalement et verticalement Cr et Cb, on a : R,G,B Y, Cr, Cb Y, Cr/4,Cb/4 taux de compression = 2 ( pourquoi ?)

R

B

CYRV

CYBU

BGRY

877.0

492.0

114.0587.0299.0

B

RB

R

CYB

CCYG

CYR

03211.2

58060.039465.0

139.1

Page 19: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 1919

Une application au problème de détection des contours d’une image

I(x,y) ci contre est le niveau de gris d’une photographie, x et y peuvent prendre toutes les valeurs entre 0 et L pour x, 0 et H pour y.

Détecter les contours, c’est situer les zones de l’image où l’intensité varie « brusquement » : On calcule le gradient de I(x,y)

La dérivée partielle horizontale La dérivée partielle verticale

On évalue le module et l’argument du vecteur gradient :

Le module mesure l’importance de la variation d’intensité

L’argument indique la normale du contour

On compare le module du gradient à un seuil paramétrable pour distinguer

Le filtre de Prewitt est un moyen de calculer ce gradient : h = fspecial('prewitt'); //gradient verticalh’ // transposée de h, gradient horizontal

1),(0

,0,,0

yxI

HyLx

x

y

0

I(x,y)

y

x

I

I

y

Ix

I

Igrad )(

?)( SeuilIgrad

111

000

111

h

Page 20: Du signal audio numérique à l'image numérique

S.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2015-16, SI3, cours n°9 : Du signal audio numérique à l'image numérique Page Page 2020

Lumière, lumière visible, lumière blanche Lumière monochromatique :

onde électromagnétique de longueur d’onde = c / f , f est la fréquence de l’onde, et c la vitesse (ou célérité) de la lumière

Flux de particules (photons) en mouvement rectiligne uniforme de vitesse c

Lumière visible ( à l’œil humain) : Pour compris entre environ 400 nm et 700 nm (1nm = 10-9m= 1000 m) À chaque , correspond une couleur primaire, ainsi par exemple : violet : = 380nm,

indigo: 450nmbleu : 500nm, vert : 570 nm, jaune 590 nm, rouge 680 nm

Lumière polychromatique : composée de couleurs primaires (notion de spectre) Lumière blanche :

composée de toutes les couleurs primaires (cf. disque de Newton) Reconstitution sur un écran : 30% de rouge+ 60% de vert et 10% de bleu

(cf. http://www.techno-science.net)