Ceci est une ancienne révision du document !
function [ image_fais ] = faisceau( im, min )
%FAISCEAU Mat(int*int*int) * Mat(int) -> Mat(int*int*int)
% Retourne une image ne selectionnant "theoriquement" que le faisceau du
% laser grace a la coueur rouge
n= size(im,1)
p= size(im,2)
im = uint8(im); %convertit l'image pour que l'intensite
%varie de 0 a 255 au lieu de 0 a 1
image_fais= zeros(n,p,3); %initialise l'image en noir complet
image_fais = uint8(image_fais);
I = 1:n;
J = 1:p;
for i = I
for j = J
if im(i,j,1)>min(1)-1 %selection de la couleur rouge
image_fais(i,j,1)=im(i,j,1);
end
end
end
Im = imread('exp_glo.jpg');
mint = [135 29 69]
imf = faisceau(Im, mint);
image(Im)
figure
image(imf)
figure
[imf2, zx] = affinage(imf);
image(imf2)
figure
plot(0:size(zx,2)-1, zx)
function [ imf, xm ] = affinage( im )
%AFFINAGE Mat(int*int*int) -> Mat(int*int*int) * Mat(int)
% Retourne l'image en moyennant les positions verticales des pixels rouges
%pour avoir un trait fin et le tableau contenant ces valeurs
n= size(im,1);
p= size(im,2);
im = uint8(im);
xm=zeros(1,p);
I = 1:n;
J = 1:p;
for j = J
s=0;
x=0;
for i = I
if im(i,j, 1) > 0
x = x+i;
s=s+1;
end
xm(j)=floor(x/s);%un pixel doit être un entier
end
end
imf = zeros(n,p,3);
%
x=xm(p-1);
xm(p)=x;
test = xm(p);
for j=2:p
if abs(xm(p+1-j)-test)>8
xm(p+1-j)=NaN;
else
test = xm(p+1-j);
end
end
% entre les deux signes : Elimination des valeurs tres aberantes
imf = uint8(imf);
for j = J
if xm(j)>0
imf(xm(j), j,1)=255;
end
end