Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

matrice de convolution

Posté par
dnp
10-02-11 à 12:59

bonjour j'aimerai que vous m'aidiez.je travaille sur le logiciel scilab.aidez moi  voici le sujet:

Vous avez déjà entendu parlé de convolution en électronique mais aussi en Télécommunication. Cet opérateur
nous permet de calculer la valeur d'un signal en sortie d'un filtre ; on aura par exemple y(t) la sortie
filtrée du signal d'origine x(t) par un filtre de réponse impulsionnelle h(t). Son expression mathématique
est la suivante :
y(t) = (x ⋆ h)(t) = ZR
x(τ )h(t − τ )dτ
= ZR
x(t − τ )h(τ )dτ
où ⋆ représente le produit de convolution. Ces expressions mathématiques ne sont cependant pas
applicable dans la pratique. La continuité des signaux est rendue impossible après numérisation. On
utilise alors l'approche discrète et nous obtenons que l'échantillon n (à l'instant discret n) est obtenu
par filtrage d'un filtre à K coefficients de la manière suivante
y(n) = (x ⋆ h)(n) =
K−1
Xk=0
x(k)h(n − k)
=
K−1
Xk=1
x(n − k)h(k).
En pratique, il suffira de retourner la séquence entière x(n) puis de la faire glisser sur la réponse
impulsionnelle h(n). Prenons un exemple. On prend une séquence quelconque x(n) et une réponse
impulsionnelle très simple puisque constituée de 1. Ces éléments son représentés sur la figure ci-dessous.
1
Alors, le produit de convolution y(n) = (x ⋆ h)(n), autrement dit le filtrage de x(n) par le filtre dont la
réponse impulsionnelle est h(n) est représenté (pour seulement 4 échantillons) par les schémas suivants
2
Soit le filtre h dont les coefficients de la réponse impulsionnelle sont donnés par
h = 1
4 [1 1 1 1]. Pour calculer un échantillon de signal filtré, de combien d'éléments de
x avez vous besoin ?.
Soit x = [1 2 2 10 2 1]. Représenter x sur un graphique puis dessiner y.
Qu'observez vous ?
L'échantillon y(0) est obtenu par produit scalaire entre les éléments de la réponse impulsionnelle
et les échantillons du signal. Donner ce produit scalaire pour y(0), y(1), y(2) et
y(3) sous forme vectoriel où x(n) sera un vecteur colonne (il sera possible de rajouter des
0 au vecteur x si nécessaire...).
Généraliser pour mettre y sous la forme
y = Hx
avec y et x 2 vecteurs colonnes et où H est à déterminer en fonction des éléments qui la
compose, soit h(0), h(1), ...
La matrice H est la matrice de convolution, on la nomme également matrice de Sylvester.
Vérifier vos résultats à l'aide de Matlab (ou Scilab le cas échéant), il existe une fonction
convmtx.
2 Le cas étendu : le cas 2D
Une image noir et blanc est en réalité un tableau de valeur dont chacun des éléments représente
la luminosité d'un pixel. Pour une image noir et blanc, le tableau prends ses valeurs entre 0 et 255.
Un pixel est alors identifié par sa position par rapport aux lignes et par rapport aux colonnes. Si l'on
souhaite filtrer une image, il faudra alors agir à la fois sur les lignes et les colonnes. Les filtres utilisés
sont donc des filtres 2D.
Charger l'image fourni par la commande
myimage = imread('/répertoire-courant/images.jpg');
Afin d'enlever les images couleurs, taper myimage=myimage(:,:,1);
Pour l'afficher vous pourrez utiliser la fonction imshow(myimage).
Pour vous persuadez que cette image n'est qu'un tableau vous pourrez affichez ses valeurs en enlevant
le point virgule.
Nous allons simuler un bruit de numérisation par la commande
myimbruit = imnoise(myimage,'salt \& pepper' );
Cette commande a pour effet de mettre aléatoirement un pixel à 0 ou 255.
Grâce à la commande subplot(nb ligne, nb colonne, position) vous pourrez afficher les deux
images précédentes sur la même figure. Afficher les images.
Avant de construire les matrices de convolution nous allons nous attarder sur l'effet des filtres. Pour
ce faire, créer la matrice M =

1 1 1
0 0 0
1 1 1

et la matrice H = 1
9

1 1 1
1 1 1
1 1 1

.
A l'aide de la fonction imfilter(M,H) déterminer la fonction du filtre H en observant comment
est obtenu chacun des éléments.
3
Ce filtre étant séparable, on peut scinder l'effet colonnes de l'effet ligne. Pour ce faire on utilisera le
filtre h1 = 1
3 [1 1 1] et le filtre h2 = 1
3 [1 1 1]T , dans ce cas h1 agit sur les colonnes et h2 sur les lignes.
Construiser les matrices de convolution associées à h1 et h2, les appliquer convenablement
à la matrice M et retrouver les résultats.
Vous utiliserez la fonction imfilter avec le filtre H sur l'image bruitée, conclusion.
Il existe d'autres moyens pour débruiter une image ; par exemple par l'utilisation d'un filtre médian.
Utiliser maintenant la fonction medfilt2(image bruitée,[3 3])
Que remarquez-vous ? Expliquer le fonctionnement de ce filtre médian en donnant la
valeur du pixel (2,2) de la portion d'image représentée par la matrice
I = 

1 2 1
1 255 2
2 1 1

.
Voici quelques filtres utilisés en traitement d'image, essayer les sur l'image original.
H =
1
8

1 1 1
1 −8 1
1 1 1

H = 1/49*ones(7,7)
3 Les polynômes
Lorsqu'on multiplie 2 polynômes entre eux, on connaît les coefficients du polynôme résultant en
convolant les coefficients des 2 polynômes. Soit P(x) = x2+2x+1 et Q(x) = 2x3+x2+3x+2. Effectuer
le produit. Ecriver la convolution sous forme matricielle et vérifier si vous obtenez les bons
coefficients.
4



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !