Page Page 11S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
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 :
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’
• Installer également le logiciel libre et gratuit IMLAB de traitement d’images utilisé ici
Page Page 22S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
La lumière est une onde électromagnétique
Lumière : ensemble d’ondes électromagnétiques visibles, dont les longueurs d’ondes sont comprises entre environ 400 nm et 700 nm
Se propage dans le vide avec la célérité c = 3 10^8 m/s environ Relation entre fréquence et longueur d’onde : = c / f Lumière monochromatique : contient une seule fréquence/longueur d’onde Tiré de http://www.techno-science.net, domaines de longueurs d’onde des
ondes électromagnétiques :
Page Page 33S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Synthèse additive de la lumière A une longueur d’onde donnée =c/f, correspond une couleur primaire (équivalent
de la note pure sinusoïdale pour le signal audio). On montre que la lumière « blanche » peut être obtenue en faisant la somme des
couleurs primaires (voir la roue de Newton, XVIIème siècle) Synthèse additive RVB: on peut aussi obtenir de la lumière blanche en additionnant
seulement 30% de lumière rouge, 60% de vert et 10% de bleu, c’est le principe de calcul de la luminance Y (cf. ci après).
Synthèse soustractive CMJ (utilisée en imprimerie), on soustrait les couleurs Cyan, Magenta et Jaune à la lumière blanche, on obtient du noir.
Tiré de http://semsci.u-strasbg.fr/primcol.htm
Page Page 44S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Luminance et chrominance L’œil est plus sensible à la luminance (noir et blanc, clair et sombre) qu’à la chrominance
(couleur), cf. ci-dessous tiré de http://semsci.u-strasbg.fr/efflum.htm
D’où le codage YUV (ou Y Cb Cr) des images TV à partir des informations R, G (vert) et B
R
B
CYRV
CYBU
BGRY
877.0
492.0
114.0587.0299.0
Y est la luminance, maximum de lisibilité pour l’œil humain,
CB et CR sont les chrominances bleue et rouge, pour reconstruire les informations de couleur
Page Page 55S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
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 Page 66S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Caractère numérique d’une image de niveaux de grisL'image suivante est tracée par Imlab qui affiche les pixels de la zone indiquée par le curseur : définition horizontale : 358 pixels, définition verticale : 587 pixels, 8 bits par pixel, soient 256 valeurs possibles, 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 Page 77S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Dans l’espace de couleurs ‘RGB’, une image couleur est la superposition de trois images de niveaux de gris : une rouge, une verte et une bleue :
Properties ‘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 seulement, zoom sur « le sourire de Mona Lisa »
Page Page 88S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
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 SIVP
// Afficher R, G et B
rgb=imread('Joconde.jpg');
r=rgb;
r(:,:,[2,3])=0; // ?
imshow(r)
imwrite(r,'jocr.jpg');
Avec Imlab,
menu Process,
puis Split components
Donne les trois images
ci-contre :
Page Page 99S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Extraire luminance et chrominances avec Imlab
On voit que Y la luminance à gauche, contient plus d’information que Cr et Cb : la fonction Scilab rgb2gray calcule Y pour transformer l’image couleur en niveaux de gris on sous-échantillonne les plans U et V dans un rapport 2 pour compresser l’image
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 Page 1010S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Calculer luminance et chrominance et sous échantillonner une image avec Scilab
// 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);
imshow(Cr4)
Page Page 1111S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Histogramme d’image, médiane, écart type et contraste.
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 Page 1212S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Pour varier le contraste, on multiplie l’écart type à médiane constante
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 Page 1313S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Comment filtrer une image numérique :
Comme pour le signal audio, on peut créer des filtres numériques pour les images : Un filtre passe haut amplifie les hautes fréquences spatiales (discontinuités, contours,
bruits Un filtre passe bas favorise les basse fréquences spatiales, atténue les contours, les
discontinuités spatiales, les bruits, mais crée du flou.
On procède par produit de convolution à deux dimensions: Soit h, de 2*R+1 lignes et 2*R+1 colonnes, réponse impulsionnelle du filtre d’image, ou
masque ou encore noyau de ce filtre Soit Im image à filtrer dans un tableau de X lignes et Y colonnes On calcule le pixel filtré F(i, j) (i varie de 1 à X, j varie de 1 à Y) en faisant le produit de
convolution de Im par h :
Noter la division par N, taille du noyau h. dans SIVP, la fonction ‘imfilter’ calcule ce produit de convolution :
F= imfilter(Im, h);
2)12(,/),Im(),(),(
RNNnjminmhjiF
Rm
Rm
Rn
Rn
Page Page 1414S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Application au filtrage d’une image N x M par un filtre 3 x 3 en Scilab
L’image à filtrer est dans le vecteur Scilab I =[I(i, j), i=1..M, j=1.. N] Le noyau h du filtre est h=[h(m, n), m=1,2,3 et n=1,2,3] L’image filtrée est F=[F(i,j), i=1..M, j= 1.. N] On calcule le pixel F(i,j) de l’image filtrée comme suit :
F(i,j)=I(i,j)*h(2,2)+ I(i, j+1)*h(2,1)+ I(i, j-1)*h(2,3)+ I(i+1,j)*h(1,2)+ I(i+1, j+1)*h(1,1)+ I(i+1, j-1)*h(1,3)+ I(i-1,j)*h(3,2)+ I(i-1, j+1)*h(3,1)+ I(i-1, j-1)*h(3,3)
On divise ensuite F(i,j) par la taille du noyau h :F(i, j)= F(i, j)/9
On impose F(i, j) = 0 quand i=0, j=0, i=M et j=N
Voici l’équation du filtre :
Généralisation pour un filtre de noyau 2*R+1 par 2*R+1
0),()1,(),(),1(
1..2,1..2,9/)2,2(),(),(3
1
3
1
NiFiFjMFjF
NjMimjniImnhjiFn m
0),()1,(),(),1(
1..2,1..2,)12/()2,2(),(),( 212
1
12
1
NiFiFjMFjF
NjMiRmjniImnhjiFR
n
R
m
Page Page 1515S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Exemples de filtrage de l’image lena par un laplacien (dérivée seconde)
// filtrer l'image lena//filtre laplacien lena=imread('lena.png'); h = fspecial('laplacian');imf = imfilter(lena,h); imshow(imf);
1667.0667.01667.0
667.0333.3667.0
1667.0667.01667.0
h
Page Page 1616S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
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
1),(0
,0,,0
yxI
HyLx
x
y
0
I(x,y)
y
x
I
I
y
Ix
I
Igrad )(
?)( SeuilIgrad
Page Page 1717S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Déterminer un filtre qui calculera les dérivées partielles Ix et Iy
Réponse impulsionnelle de ce filtre :
1),,(),1(),(
),(),(lim 0
psiyxIyxIyxI
p
yxIypxI
x
I
x
p
)1,1( h
Application de h à : )0,10,10,10,0,0(),( 0 baI),( 0 baF
Filtre différenciateur centré : )1,0,1( h
Donner l’équation du filtre : ),( 0 baF
Filtres de Prewitt : h = fspecial('prewitt'); // donne dans h
111
000
111
h ?'
h
Page Page 1818S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Application : on filtre l’image de niveaux de gris avec h puis h’
// 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 Page 1919S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
Puis on somme imfx et imfy pour évaluer le module du gradient et on lui applique un seuillage pour déterminer le contour :
// 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 Page 2020S.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numériqueS.S.I.I. 2013-14, cours n°9 : Du signal audio numérique à l'image numérique
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, V 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 ?
Top Related