l'image de fond

fr       en

Traitements d'Images en Niveau de Gris

La Détection de Changements

Méthode

Le but est de faire apparaitre les changements entre deux images. La méthode est plutôt simple puisqu'il s'agit de faire la différence entre les deux images et ce pour chaque pixel. La soustraction de deux pixels identiques donnera un résultat nul (du noir) et deux pixels différents donnera un résultat non nul, un niveau de gris qui dépendra de combien la différence de deux pixels est grande.

Programme

clear all; close all;

[filename, pathname] = uigetfile({'*.jpg;*.tif;*.PNG;*.gif;*.bmp','All Image Files';...
          '*.*','All Files' },'img1',...
          'C:\Work\myfile.jpg') % récuperation du chemin du fichier première image

img1 = imread(filename); % récuperation des données
if (length(size(img1))>2)% si l'image en niveau de gris est sur 3 composantes couleurs
    img1=img1(:,:,1);% on prend un seul plan
end
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.PNG;*.gif;*.bmp','All Image Files';...
          '*.*','All Files' },'img2',...
          'C:\Work\myfile.jpg') % récuperation du chemin du fichier seconde image

img2 = imread(filename); % recuperation des données
if (length(size(img2))>2)% si l image en niveau de gris est sur 3 composantes couleurs
    img2=img2(:,:,1);% on prend un seul plan
end


k=8;
[ligne colonne]=size(img1);%taille de la matrice


image_result=uint8(zeros(ligne,colonne));
for i = 1: ligne
    for j = 1 : colonne
        if img1(i,j)>=img2(i,j)
            image_result(i,j)= img1(i,j)-img2(i,j);
        else
            image_result(i,j)= img2(i,j)-img1(i,j);
        end
    end
end
 % affichage
 figure(1)
 subplot(221)
 imshow(img1)
 subplot(222)
 imshow(img2)
 subplot(223)
 imshow(image_result)

Exemple


soustraction de deux images
Comme nous somme en numérique, il faut faire attention aux débordements. Si nous soustrayons un pixel p1 supérieur à p2 tout va bien. En revanche, si p1 est inférieur à p2 le résultat sera un nombre négatif. Ceci pose un problème car il ne sera pas bien représenté par rapport aux bits d'origine (Gros problème si l'octet est non signé). Regardez les problèmes engendrés.

mauvaise soustraction de deux images

Copyright © 2010-2014, tous droits réservés, contact : operationpixel@free.fr