Recherche…


Image de base I / O

>> img = imread('football.jpg');

Utilisez imread pour lire les fichiers image dans une matrice dans MATLAB.
Une fois que vous imread une image, celle-ci est stockée dans un tableau ND en mémoire:

>> size(img)
ans =
 256   320     3

L'image 'football.jpg' comporte 256 lignes et 320 colonnes et comporte 3 canaux de couleur: rouge, vert et bleu.

Vous pouvez maintenant le refléter:

>> mirrored = img(:, end:-1:1, :);  %// like mirroring any ND-array in Matlab

Et enfin, écrivez-le en tant qu'image en utilisant imwrite :

>> imwrite(mirrored, 'mirrored_football.jpg');

Récupérer des images sur Internet

Tant que vous avez une connexion Internet, vous pouvez lire les images d'un lien hypertexte

I=imread('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png');

Filtrage à l'aide d'une FFT 2D

Comme pour les signaux 1D, il est possible de filtrer les images en appliquant une transformation de Fourier, en multipliant avec un filtre dans le domaine fréquentiel et en transformant à nouveau le domaine spatial. Voici comment appliquer des filtres passe-haut ou passe-bas à une image avec Matlab:

Soit l' image l' image originale non filtrée, voici comment calculer son FFT 2D:

ft = fftshift(fft2(image));

Maintenant, pour exclure une partie du spectre, il faut définir ses valeurs de pixel sur 0. La fréquence spatiale contenue dans l'image d'origine est mappée du centre vers les bords (après avoir utilisé fftshift ). Pour exclure les basses fréquences, nous allons définir la zone circulaire centrale sur 0.

Voici comment générer un masque binaire en forme de disque de rayon D utilisant la fonction intégrée:

[x y ~] = size(ft);
D = 20;
mask = fspecial('disk', D) == 0;
mask = imresize(padarray(mask, [floor((x/2)-D) floor((y/2)-D)], 1, 'both'), [x y]);

Le masquage de l'image dans le domaine fréquentiel peut être effectué en multipliant le FFT au niveau du point par le masque binaire obtenu ci-dessus:

masked_ft = ft .* mask;

Maintenant, calculons l'inverse FFT:

filtered_image = ifft2(ifftshift(masked_ft), 'symmetric');

Les hautes fréquences d'une image sont les arêtes vives, ce filtre passe-haut peut donc être utilisé pour affiner les images.

Filtrage d'image

Disons que vous avez une image rgbImg , par exemple, lisez en utilisant imread .

>> rgbImg = imread('pears.png');
>> figure, imshow(rgbImg), title('Original Image')

entrer la description de l'image ici

Utilisez fspecial pour créer un filtre 2D:

>> h = fspecial('disk', 7);
>> figure, imshow(h, []), title('Filter')

entrer la description de l'image ici

Utilisez imfilter pour appliquer le filtre sur l'image:

>> filteredRgbImg = imfilter(rgbImg, h);
>> figure, imshow(filteredRgbImg), title('Filtered Image')

entrer la description de l'image ici

Propriétés de mesure des régions connectées

À partir d'une image binaire, bwImg , qui contient un certain nombre d'objets connectés.

>> bwImg = imread('blobs.png');
>> figure, imshow(bwImg), title('Binary Image')

entrer la description de l'image ici

Pour mesurer les propriétés (par exemple, la surface, le centroïde, etc.) de chaque objet de l'image, utilisez les regionprops :

>> stats = regionprops(bwImg, 'Area', 'Centroid');

stats est un tableau struct qui contient une structure pour chaque objet de l'image. L'accès à une propriété mesurée d'un objet est simple. Par exemple, pour afficher la zone du premier objet, simplement,

>> stats(1).Area

ans =

    35

Visualisez les centroïdes d'objet en les superposant sur l'image d'origine.

>> figure, imshow(bwImg), title('Binary Image With Centroids Overlaid')
>> hold on
>> for i = 1:size(stats)
scatter(stats(i).Centroid(1), stats(i).Centroid(2), 'filled');
end

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow