1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| clear
clc
close all
myImage=imread('test.JPG');
% Filtre gaussien
y = double(myImage(:,100)); % Une ligne
gaussWin = gausswin(50); % Fenêtre de lissage pour le filtre
gaussWin = gaussWin/sum(gaussWin); % Normalisation
ySmooth = conv(y, gaussWin, 'same'); % Smoothing
mvAvg = conv(y, ones(101,1)/101, 'same'); % moyenne glissante
plot(y,'b'); hold on
plot(ySmooth,'r')
plot(mvAvg,'g')
legend('Signal brut','Signal lissé','Moyenne glissante')
% Différence entre lissage et moyenne glissante
idBlack=find(ySmooth<mvAvg);
plot(idBlack,ySmooth(idBlack),'.k')
isBlack=ySmooth<mvAvg;
% Id des bandes noires
idxAfter = strfind([isBlack'== 0 true], [false true]);
idxBefore = strfind([true isBlack'== 0], [true false]);
% Largeur des bandes noires
widthBlackStripes = (idxAfter- idxBefore)*3.93+3.93;
fprintf('Bande noire %i, largeur de %f nm\n',[1:numel(widthBlackStripes);widthBlackStripes]); |
Partager