Traitement d'image avec Octave: Notes de cours

Telechargé par Clario RAZAFIMANDIMBY
004 - Traitement et Manipulation d'image avec Octave
Mention
Niveau
Contexte
Auteur
M.I.A
M1
COURS - Utilitaire pour image
Djasnive Y. RAJAONA
Objectif du cours
Ce cours a pour but de montrer comment lire, afficher, analyser et transformer des images numériques avec GNU Octave,
en les considérant d’abord comme matrices de données, avant d’exploiter les fonctions spécialisées.
1. Chargement et Affichage d'une Image
a. Lecture d'une image
b. Affichage de l’image
2. Représentation de l’Image comme Matrice
a. Structure d’une image
b. Exemple de manipulation manuelle
img = imread('image.jpg');
imread charge l’image sous forme de matrice.
Si l’image est en couleur, img est un tableau 3D : (hauteur, largeur, 3) .
imshow(img);
imshow permet d’afficher une image directement.
Alternative :
image(img);
axis off;
Image en niveaux de gris : matrice 2D, chaque élément représente l’intensité (0–255).
Image couleur (RGB) : matrice 3D où :
img(:, :, 1) → Canal Rouge
img(:, :, 2) → Canal Vert
img(:, :, 3) → Canal Bleu
img = imread('image.jpg');
R = img(:, :, 1); % Canal Rouge
G = img(:, :, 2); % Canal Vert
B = img(:, :, 3); % Canal Bleu
3. Orations de Base sur l’Image-Matrice
a. Taille et type
b. Conversion de type
Pour effectuer des opérations mathématiques :
Les fonctions mathématiques exigent souvent un format double avec valeurs normalisées [0, 1].
4. Accès et Modification des Pixels
a. Pixel unique
b. Bloc de pixels (sous-image)
c. Modification de gion
5. Fonctions de Traitement d’Image
a. Conversion en niveaux de gris
La formule standard pour convertir une image couleur (RVB ou RGB) en niveaux de gris (gray) repose sur une pondération
des trois composantes Rouge (R), Verte (G) et Bleue (B), qui reflète la sensibilité de l'œil humain à chaque couleur.
Formule standard (pondérée selon la luminance perceptuelle) :
% Supprimer le canal rouge :
img(:, :, 1) = zeros(size(R));
imshow(img); % Image sans rouge
size(img)
class(img)
size donne les dimensions.
class retourne le type ( uint8 , double , etc.).
img_double = im2double(img);
val = img(50, 100, 1); % Valeur du pixel (50, 100) canal rouge
bloc = img(50:100, 100:150, :); % Extraction d'une sous-image
imshow(bloc);
img(1:100, 1:100, :) = 0; % Mettre un carré noir en haut à gauche
gray_img = rgb2gray(img);
imshow(gray_img);
Explication :
Exemple Octave :
Si vous avez une image RGB chargée dans une variable img , vous pouvez appliquer cette formule manuellement :
Remarque :
Cette formule est utilisée par la plupart des fonctions comme rgb2gray() dans Octave ou MATLAB. Elle donne un niveau
de luminance perceptuelle fidèle à la perception humaine.
Souhaitez-vous aussi voir une comparaison avec une conversion naïve (moyenne simple) ?
b. Redimensionnement
c. Rotation
d. Rognage (Crop)
e. Flou (Filtrage gaussien)
Nécessite le package image . Chargez-le avec :
6. Histogramme et Analyse
0.2989 pour le Rouge : l'œil humain est moins sensible au rouge.
0.5870 pour le Vert : le vert a le plus grand poids, car l'œil y est très sensible.
0.1140 pour le Bleu : faible contribution perçue du bleu.
img = imread('image.jpg');
img = im2double(img); % Conversion en format double pour les calculs
R = img(:, :, 1);
G = img(:, :, 2);
B = img(:, :, 3);
gray = 0.2989 * R + 0.5870 * G + 0.1140 * B;
imshow(gray);
resized = imresize(img, 0.5); % Réduit à 50%
rotated = imrotate(img, 90); % Rotation de 90°
cropped = img(100:300, 150:350, :);
blurred = imgaussfilt(img, 2); % sigma = 2
pkg load image;
a. Affichage de l’histogramme d’une image en niveaux de gris
b. Égalisation de l’histogramme
7. Filtrage Spatial (Convolution)
a. Application d’un filtre personnalisé
8. Exemples Pratiques
a. Supprimer un canal couleur
b. Extraire une gion, convertir en niveaux de gris, redimensionner
c. Fusion de deux images
9. Exercices
gray = rgb2gray(img);
imhist(gray); % Affiche la distribution des intensités
equalized = histeq(gray);
imshow(equalized);
K = [-1 -1 -1; -1 8 -1; -1 -1 -1]; % Filtre passe-haut
img_filt = imfilter(gray, K);
imshow(img_filt, []);
img(:, :, 2) = 0; % Supprimer le vert
imshow(img);
roi = img(100:300, 100:300, :);
roi_gray = rgb2gray(roi);
roi_resized = imresize(roi_gray, [100 100]);
imshow(roi_resized);
img1 = imread('img1.jpg');
img2 = imread('img2.jpg');
img1 = imresize(img1, [300 300]);
img2 = imresize(img2, [300 300]);
fusion = 0.5 * im2double(img1) + 0.5 * im2double(img2);
imshow(fusion);
1. Charger une image couleur et afficher les 3 canaux séparément.
2. Supprimer la partie supérieure de l’image en la remplaçant par du blanc.
3. Convertir une image en niveaux de gris, puis afficher son histogramme.
4. Appliquer un filtre de détection de contours.
5. Créer une fonction qui renvoie la moyenne des intensités d’une image en niveaux de gris.
Conclusion
Ressources Complémentaires
Liste non exhaustive des Fonctions les plus utilisé pour la manipulation d'image
Fonction
Syntaxe
imread
img = imread('filename.ext');
imshow
imshow(img);
imwrite
imwrite(img, 'filename.ext');
rgb2gray
gray_img = rgb2gray(rgb_img);
imresize
resized_img = imresize(img, [rows, cols]);
imrotate
rotated_img = imrotate(img, angle);
imfilter
filtered_img = imfilter(img, kernel);
fspecial
h = fspecial('type', parameters);
edge
edges = edge(img, 'method');
imadjust
adjusted_img = imadjust(img, [low_in,
high_in], [low_out, high_out]);
histeq
eq_img = histeq(img);
im2double
double_img = im2double(img);
im2bw
bw_img = im2bw(img, threshold);
imnoise
noisy_img = imnoise(img, 'type',
parameters);
medfilt2
filtered_img = medfilt2(img, [m, n]);
Une image numérique est manipulée dans Octave comme une matrice ou un tableau 3D.
Les opérations sur les matrices permettent des transformations directes, sans passer par des outils complexes.
Octave propose des fonctions puissantes et simples pour les traitements courants : affichage, conversion, filtrage,
égalisation, etc.
Comprendre la structure matricielle d’une image est fondamental avant d’utiliser des fonctions plus avancées.
Documentation officielle GNU Octave
GNU Octave Image Package
Livre : Digital Image Processing – Gonzalez & Woods
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!