Appendice
Codici Matlab
Calibrazione
L=imread('calibra.bmp'); % inserire il nome del file di calibrazione
L=wiener2(L,[5,5]); imshow(L) [ix,iy,mis]=improfile; figure plot(mis) figure plot(mis(2:end)-mis(1:end-1)) pause
mssx=input('margine superiore picco sinistro:'); misx=input('margine inferiore picco sinistro:'); msdx=input('margine superiore picco destro:'); midx=input('margine inferiore picco destro:');
c=5*input('numero celle:');
sx=[ix(mssx)+ix(misx)]/2; dx=[ix(msdx)+ix(midx)]/2;
unita=(dx-sx)/c;
save unita unita
Trazione
Inseguimento della posizione dei marker
% cambiare nome al file filmato % salvare
function misura=spostamento_traz
mov=aviread('traz3_100X.avi'); %nome file filmato
L=wiener2(mov(1).cdata,[5 5]); imshow(L) [ix,iy,mis]=improfile; [vali,pos,posinv]=multiple_position_image1(L,ix,iy,length(ix)); posinv(1) posinv(2) pos(1) pos(2) figure plot (mis(2:end)-mis(1:end-1)) i0in=1; mark1(1)=ix(posinv(i0in)); i0in=i0in+1; mark2(1)=ix(posinv(i0in)); val=abs(mark1-mark2);i0=i0in; while val<15 i0=i0+1; mark2=ix(posinv(i0)); val=abs(mark1-mark2); end i0in=1; mark11(1)=ix(pos(i0in)); i0in=i0in+1; mark22(1)=ix(pos(i0in)); val=abs(mark11-mark22);i0=i0in; while val<15 i0=i0+1; mark22=ix(pos(i0)); val=abs(mark11-mark22); end if(abs(mark11-mark1)>100) duffy=mark11; mark11=mark22; mark22=duffy; end misura(1,:)=[min(mark1+mark11,mark2+mark22) max(mark1+mark11,mark2+mark22)]*0.5; for ll=2:length(mov); L=wiener2(mov(ll).cdata,[5 5]); [vali,pos,posinv]=multiple_position_image1(L,ix,iy,length(ix)); multiple_position_image1 function [c,pos1,pos2]=multiple_position_image(ima,xi,yi,num) c=improfile(ima,xi,yi,num); [val1,pos1]=sort(c(2:end)-c(1:end-1)); [val2,pos2]=sort(c(2:end)-c(1:end-1),'descend'); return
i0in=1; while(abs(mark1(ll-1)-ix(posinv(i0in)))>5) ll i0in=i0in+1; end mark1(ll)=ix(posinv(i0in)); i0in=1; while(abs(mark2(ll-1)-ix(posinv(i0in)))>5) i0in=i0in+1; end mark2(ll)=ix(posinv(i0in)); val=abs(mark1(ll)-mark2(ll));i0=i0in; while val<60 i0=i0+1; mark2(ll)=ix(posinv(i0)); val=abs(mark1(ll)-mark2(ll)); end i0in=1; while(abs(mark11(ll-1)-ix(pos(i0in)))>5) i0in=i0in+1; end mark11(ll)=ix(pos(i0in)); i0in=1; while(abs(mark22(ll-1)-ix(pos(i0in)))>5) i0in=i0in+1; end mark22(ll)=ix(pos(i0in)); val=abs(mark11(ll)-mark22(ll));i0=i0in; while val<60 i0=i0+1; mark22(ll)=ix(pos(i0)); val=abs(mark11(ll)-mark22(ll)); end if(abs(mark11(ll)-mark1(ll))>100) duffy=mark11(ll); mark11(ll)=mark22(ll); mark22(ll)=duffy(ll); end misura(ll,:)=[min(mark1(ll)+mark11(ll),mark2(ll)+mark22(ll)) max(mark1(ll)+mark11(ll),mark2(ll)+mark22(ll))]*0.5; end return
Calcolo della deformazione in trazione
% caricare unita
% modificare spostamento_traz
% modificare il nome per il salvataggio
u=input('risoluzione unita:'); f=input('risoluzione immagine:'); h=u/f;
figure
plot(posizioni)
title('Posizione dei marker') xlabel('frame')
ylabel('posizione(mm)')
legend('marker sx','marker dx')
distanza=[(posizioni(:,2)-posizioni(:,1))./unita]*h; figure
plot(distanza)
title('Distanza tra i marker') xlabel('frame')
ylabel('distanza(mm)')
save traz3
Compressione
Valutazione dell’area del provino
% cambiare nome immagine % caricare unità
% cambiare nome salvataggio
L=imread('area_compr3_50X.bmp'); L=wiener2(L,[5 5]); imshow(L); [ix,iy,mis]=improfile; figure plot(mis) figure plot(mis(2:end)-mis(1:end-1)) pause
p1=input('picco destro:'); p2=input('picco sinistro:');
u=input('risoluzione unita:'); f=input('risoluzione immagine:'); H=u/f;
area=pi*((((p2/unita-p1/unita)/2)*H)^2);
save area_compr3 area
Valutazione dello spessore iniziale del provino
% caricare unità
% cambiare nome salvataggio
L=imread('spess_compr3_150X.bmp'); L=wiener2(L,[5 5]); imshow(L); [ix,iy,mis]=improfile; figure plot(mis) figure plot(mis(2:end)-mis(1:end-1)) pause
pd=input('picco destro:'); ps=input('picco sinistro:');
u=input('risoluzione unita:'); f=input('risoluzione immagine:'); H=u/f;
thick=(sqrt((ix(pd)-ix(ps))^2+(iy(pd)-iy(ps))^2)/unita)*H;
save thick_compr3 thick
Inseguimento dei punti di riferimento
% cambiare nome al file filmato % salvare
% mettere pointbreak in 19
function misura=spostamento_compr
mov=aviread('compr3_50X.avi') % nome file filmato
L=wiener2(mov(1).cdata,[5 5]); imshow(L) [ix,iy,mis]=improfile; [vali,pos,posinv]=multiple_position_image1(L,ix,iy,length(ix)); posinv(1) pos(1) figure plot (mis(2:end)-mis(1:end-1)) i0in=1; mark1(1)=ix(posinv(i0in)); i0in=1; mark11(1)=ix(pos(i0in)); misura(1,:)=[mark1(1) mark11(1)]; for ll=2:length(mov); ll
L=wiener2(mov(ll).cdata,[5 5]); [vali,pos,posinv]=multiple_position_image1(L,ix,iy,length(ix)); i0in=1; while(abs(mark1(ll-1)-ix(posinv(i0in)))>5) i0in=i0in+1; end mark1(ll)=ix(posinv(i0in)); i0in=1; while(abs(mark11(ll-1)-ix(pos(i0in)))>5) i0in=i0in+1; end mark11(ll)=ix(pos(i0in)); misura(ll,:)=[mark1(ll) mark11(ll)]; end return
Calcolo della deformazione in compressione
% caricare unita
% caricare thick corrispondente % modificare spostamento_compr
% modificare il nome per il salvataggio
posizioni=spostamento_compr;
u=input('risoluzione unita:'); f=input('risoluzione immagine:'); h=u/f;
figure
plot(posizioni)
title('Posizione dei marker') xlabel('frame')
ylabel('posizione')
legend('marker sx','marker dx')
tip=(((posizioni(1,2)-posizioni(1,1))/unita)*h-thick);
spessore=[(((posizioni(:,2)-posizioni(:,1))/unita)*h-tip)]; figure
plot(spessore)
title('Spessore campione') xlabel('frame')
ylabel('spessore(mm)')