Dans cette section, nous allons faire une inversion sur une image. Le calcul est assez simple
puisqu'il suffit de rendre les pixels sombres clairs et vice versa. Afin de donner une équation mathématique
juste, nous faisons :
exemple si une image sur k = 8 donc 256 niveaux de gris, le blanc qui est de 255 passent à zéro, 254->1, 253->2 ...
clear all; close all;
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.PNG;*.gif;*.bmp','All Image Files';...
'*.*','All Files' },'mytitle',...
'C:\Work\myfile.jpg')
x = imread(filename);
% image sur un plan
if (length(size(x))>2)
x=x(:,:,1);% on prend une seul plan image noir et blanc chaque plan sont egaux
end
% nombre de bit
info = whos('x');
if strcmp(info.class,'uint8')
k=8;
elseif strcmp(info.class,'uint16')
k=16;
elseif strcmp(info.class,'uint32')
k=32;
elseif strcmp(info.class,'uint64')
k=64;
end
%taille de la matrice
[ligne colonne]=size(x);
% on crée une matrice résultat de la même cast que l'image
inverse= zeros(ligne,colonne);
if strcmp(info.class,'uint8')
inverse=uint8(inverse);
elseif strcmp(info.class,'uint16')
inverse=uint16(inverse);
elseif strcmp(info.class,'uint32')
inverse=uint32(inverse);
elseif strcmp(info.class,'uint64')
inverse=uint64(inverse);
end
% algorithme de l'inversion
for i=1:ligne
for j=1:colonne
inverse(i,j) = 2^k - x(i,j);
end
end
% on affiche le résultat
figure(1)
subplot(121)
imshow(x)
subplot(122)
imshow(inverse)
Copyright © 2010-2014, tous droits réservés, contact : operationpixel@free.fr