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