• Non ci sono risultati.

C Appendice al Capitolo 5

N/A
N/A
Protected

Academic year: 2021

Condividi "C Appendice al Capitolo 5"

Copied!
9
0
0

Testo completo

(1)

A

A

P

P

P

P

E

E

N

N

D

D

I

I

C

C

E

E

A

A

L

L

C

C

A

A

P

P

I

I

T

T

O

O

L

L

O

O

5

5

In questa appendice vengono dapprima riassunte le condizioni di flusso caratteristiche dei vari filmati registrati. Vengono inoltre riportati i programmi Matlab che implementano gli algoritmi di elaborazione e analisi deifilmati digitali descritti nel Capitolo 5. Per alcune parti dei programmi verranno anche fornite informazioni più dettagliate; per le parti in cui

(2)

C.1 Condizioni di flusso dei filmati

Coefficiente di flusso (

Φ

)

0.003 0.009

0.016

0.024

0.034

0.042

0.051

0.063

0.45 0.37 0.27 0,22 0.26 0.23 0.22 0.19

0,50 0.42 0.35 0.29 0.30 0.28 0.27 0.22

0,57 0.48 0.41 0.34 0.34 0.33 0.30 0.27

0,62 0.53 0.45 0.38 0.39 0.37 0.34 0.30

0.62 0.54 0.44 0.43 0.40 0.38 0.32

063 0.51 0.51 0.47 0.42 0.37

0.55 0.52 0.48 0.47

Numero di cavitazione ( )

0.51

0.52

Tabella C.1 – Condizioni di flusso per i filmati laterali relativi all’induttore FIP162

Coefficiente di flusso (

Φ

)

0.010

0.040

0.065

0.070

0.083

0.090

0.105

0.24 0.11 0.05 0.06 0.14 0.14 0.14

0.27 0.15 0.09 0.07 0.15 0.15 0.15

0.31 0.16 0.13 0.10 0.16 0.17 0.16

0.35 0.17 0.19 0.12

0.38 0.20 0.14

Numero di cavitazione ( )

0.43 0.23

Tabella C.2 – Condizioni di flusso per i filmati laterali relativi all’induttore FAST2

Coefficiente di flusso (

Φ )

0.008 0.017 0.029

0.034

0.040

0.053 0.057

0.060

0.44

0.41 0.41 0.41 0.40 0.39 0.38 0.29

0.50

0.46 0.46 0.45 0.45 0.45 0.44 0.39

0.51

0.48 0.50 0.50 0.48 0.48 0.49 0.45

0.57

0.50 0.60 0.61 0.61 0.57 0.59 0.48

0.60

0.60

0.59

Numero di cavitazione ( )

Tabella C.3 – Condizioni di flusso per i filmati frontali relativi all’induttore FIP162

(

Ω =

1500 rpm

)

C.2 Elaborazione dei filmati

Questo programma implementa l’algoritmo di elaborazione semi-automatico e ne permette l’applicazione a tutti o a parte dei fotogrammi di un intero filmato digitale (frontale). Questo stesso programma, se opportunamente modificato nella parte relativa alla “Modifica dei fotogrammi memorizzati” (righe dalla 41 alla 70), può essere utilizzato per l’implementazione dell’algoritmo manuale (Figura 4.17). Se, inoltre, viene privato

(3)

della parte relativa alla “Selezione dell’asse di rotazione dell’induttore” (righe dalla 31 alla 39) può essere utilizzato per l’elaborazione dei filmati laterali.

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Programma che permette di modificare tutti i frames di

3 % un filmato digitale

4 %---

5 % USCITE:

6 % 1. Salvataggio sia dei fotogrammi elaborati, sia

7 % dei relativi confronti con l’immagine originale

8 % 2. F_norm = array che definisce i valori assunti

9 % dai pixels dei fotogrammi elaborati non ruotati

10 % 3. F_rot = array che definisce i valori assunti

11 % dai pixels dei fotogrammi elaborati e ruotati

12 %---

13 % NOTE: deve essere usato insieme ai seguenti files

14 % 1. elaborazione_aut.m 15 % 2. elaborazione_man.m 16 % 3. confronto.m 17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 clear all 19 close all 20 clc 21

22 % Importazione del filmato

23 vidname=input('Inserire il nome del file video tra apici(senza

... estensione)'); 24 fr_in=181;

25 fr_fin=200;

26 M=aviread(vidname,fr_in:fr_fin); 27

28 % Creazione della directory in cui verranno salvati i

29 % fotogrammi modificati e gli altri files di output del

30 %programma 31 dir=cd; 32 path(path,dir); 33 suff='_dir'; 34 newdir=strcat(vidname,suff); 35 mkdir(newdir); 36 new_curdir=strcat(dir,'\',newdir); 37 cd(new_curdir); 38

39 % Selezione dell'asse di rotazione dell'induttore

40 I=frame2im(M(1)); 41 figure

42 axis ij

43 title('Selezionare l''asse di rotazione dell''induttore ...

(doppio click)') 44 hold on 45 [x_c y_c P]=impixel(I); 46 hold off 47 close all 48

49 % Modifica dei fotogrammi memorizzati

50 j=1;

51 for i=fr_in:fr_fin

52 I=frame2im(M(j)); % trasformazione del fotogramma in

immagine a colori

53 I=imcrop(I,[x_c-85 y_c-85 170 170]); % spostamento del

(4)

54 I=rgb2gray(I); % trasformazione dell'immagine a colori in immagine in scala di grigio

55 [I2]=elaborazione_aut(I); % elaborazione automatica

dell'immagine

56 h=confronto(I,I2);

57 opz=menu('vuoi modificare manualmente

qualcosa?','Si','No');

58 while opz==1 % elaborazione manuale dell'immagine

59 mask=roipoly(I2); 60 mask=not(mask); 61 I2=immultiply(I2,mask); 62 I3=elaborazione_man(I); 63 I2=I2+I3; 64 h=confronto(I,I2);

65 opz=menu('vuoi modificare manualmente qualcosa?',...

'Si' ,'No'); 66 end

67 ang_rot=0.006*1500; % angolo di rotazione dell'induttore

tra due fotogrammi successivi [°]

68 I3=imrotate(I2,-ang_rot*(i-1),'crop'); % rotazione del

fotogramma di un angolo pari ad ang_rot

69 fmt='.jpg';

70 nome=num2str(i);

71 nomefile=strcat(nome,fmt);

72 saveas(h,nomefile); % salvataggio del confronto tra

immagine originale e immagine modificata

73 imwrite(I2,strcat(nome,'.bmp'))

74 F_norm(:,:,j)=I2; % variabile che definisce i valori dei

pixels per i vari fotogrammi (non ruotati)

75 F_rot(:,:,j)=I3; % variabile che definisce i valori dei

pixels per i vari fotogrammi (ruotati)

76 j=j+1;

77 end

78

79 % Salvataggio delle variabili che definiscono i valori dei

80 % pixels in ogni fotogramma modificato

81 suff3='_fun';

82 filename2=strcat(vidname,suff3);

83 save(filename2,'F_norm','F_rot');

84 cd(dir);

85 close all

86 clc

87

%---C.3 Calcolo dell’area frontale media delle cavità

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Programma per il calcolo dell'area totale media delle

3 % cavità nei filmati frontali

4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

5 clc

6 clear all

7 close all

8

9 % Caricamento delle variabili contenenti i valori dei pixels

10 load('phi0_053sig0_39_fun.mat');

11

12 % Calcolo aree cavitanti col comando bwarea

13 [m n j]=size(F_norm);

(5)

15 aree1(k)=bwarea(F_norm(:,:,k));

16 end

17

18 Calcolo aree cavitanti contando i pixels bianchi

19 ll=size(F_norm);

20 for nnn=1:ll(3)

21 [kk,gg,vv]=find(F_norm(:,:,nnn)); 22 aree2(nnn)=sum(vv);

23 end

24 area1=mean(aree1);% media delle aree dei vari fotogrammi di un

filmato

25 area2=mean(aree2);%

26 standard_dev1=std(aree1); 27 standard_dev2=std(aree2); 28

29 % Stampa dei risultati sul display

30 disp('---');

31 disp(sprintf('area media 1: %f',area1))

32 disp(sprintf('area media 2: %f',area2))

33 disp(sprintf('dev std 1: %f',standard_dev1))

34 disp(sprintf('dev std 2: %f',standard_dev2))

35 disp('---');

36 %---

C.4 Rilevamento della cavitazione

Questo programma permette, dato un fotogramma elaborato (binario) di calcolare una funzione (che altro non è che la matrice calcolata in uscita dal programma) che, per ogni posizione dell’immagine in coordinate polari

( )

r

,

θ

, assume valore unitario se in quella posizione è presente la cavitazione, altrimenti assume valore nullo.

Questo programma è molto importante in quanto proprio grazie a questa matrice è stato possibile automatizzare il rilevamento degli angoli di inizio e fine cavità (

θ

i e

θ

f in Figura 5.22) che viene effettuato dal programma presentato nel prossimo paragrafo.

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Programma per il calcolo della posizione della cavitazione

3 % (ovvero dei pixels bianchi in funzione di r (coordinata

4 % radiale) e theta (coordinata azimutale)

5 %---

6 % SINTASSI:

7 % c=scansione(I)

8 % INPUT:

9 % I=fotogramma modificato (immagine binaria)

10 % OUTPUT:

11 % c=matrice che definisce i valori dei pixels in

12 % funzione di r(righe) e theta (colonne)

13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

14 function val=scansione(I) 15

16 r=85; % numero di valori di r per cui viene calcolata la

matrice 17 18 % Scansione dell'immagine 19 i=1; 20 for ang=pi/180:pi/180:2*pi 21 x=[86 1+r*(1-cos(ang))];

(6)

22 y=[86 1+r*(1+sin(ang))]; 23 c=improfile(I,y,x,r); 24 val(:,i)=c; 25 i=i+1; 26 end 27 %---

C.5 Calcolo della lunghezza e dell’area delle cavità

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Programma per il calcolo della lunghezza e dell'area delle

3 % cavità su ogni pala

4 %---

5 % SINTASSI:

6 % [cav_len,aree_pale]=angoli(c)

7 % INPUT:

8 % c = matrice calcolata tramite il programma

9 % scansione.m

10 % OUTPUT:

11 % cav_len = matrice 3xn° frames contenente i

12 % valori delle lunghezze delle cavità

13 % aree_pale = matrice 3xn° frames contenente i

14 % valori delle aree delle cavità

15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

16 function [cav_len,aree_pale]=angoli(c) 17

18 R_t=81; % Raggio di estremità dell'induttore FIP162 [mm]

19 S_flow=19115; %Superficie frontale dell'induttore FIP162

[Pixels] 20

21 % Costruzione dei vettori ang_in e ang_fin (vengono registrati

22 % >>tutti<< i valori degli angoli di inzio e fine cavitazione)

23 [m n]=size(c); 24 c(:,361)=c(:,1); 25 i=1; 26 j=1; 27 for ang=1:n 28 if c(:,ang)==0 29 for ind=1:m 30 if c(ind,ang+1)==1 31 ang_in(i)=ang; 32 i=i+1; 33 break 34 end 35 end 36 elseif c(:,ang+1)==0 37 for ind=1:m 38 if c(ind,ang)==1 39 ang_fin(j)=ang; 40 j=j+1; 41 break 42 end 43 end 44 end 45 end

46 a=length(ang_in); % lunghezza del vettore ang_in e del vettore

ang_fin 47

48 % Aggiustamento dei vettori ang_in e ang_fin in caso di

(7)

50 if a>3 51 i=1;

52 for ind=1:a

53 if c(:,1)==0 % caso in cui gli elementi della prima colonna di c sono tutti neri

54 ang_in(length(ang_in)+1)=ang_in(1)+360;

55 if ang_in(i+1)-ang_fin(i)<10 % vaolre al di sotto del quale le piccole cavità vengono considerate

56 ang_in(i+1)=[]; 57 ang_fin(i)=[]; 58 i=i-1; 59 end 60 else 61 if ang_in(i)-ang_fin(i)<10 62 ang_in(i)=[]; 63 ang_fin(i)=[]; 64 i=i-1; 65 end 66 end 67 i=i+1; 68 end 69 end 70 71 %---

72 % Calcolo dell'area cavitante su ogni pala

73 %---

74 if ang_in(1)<ang_fin(1)

75 % calcolo area pala 1

76 [i1,j1,v1]=find(c(:,ang_in(1):ang_fin(1))); 77 area1=sum(v1);

78 % calcolo area pala 2

79 [i2,j2,v2]=find(c(:,ang_in(2):ang_fin(2))); 80 area2=sum(v2);

81 % calcolo area pala 3

82 [i3,j3,v3]=find(c(:,ang_in(3):ang_fin(3))); 83 area3=sum(v3);

84 else

85 % calcolo area pala 1

86 [i1,j1,v1]=find(c(:,ang_in(1):ang_fin(2))); 87 area1=sum(v1);

88 % calcolo area pala 2

89 [i2,j2,v2]=find(c(:,ang_in(2):ang_fin(3))); 90 area2=sum(v2);

91 % calcolo area pala 3

92 [i31,j31,v31]=find(c(:,1:ang_fin(1))); 93 [i32,j32,v32]=find(c(:,ang_in(3):360)); 94 area3=sum(v31)+sum(v32); 95 end 96 aree_pale=[area1,area2,area3]/S_flow; 97 %--- 98

99 % calcolo della lunghezza della zona cavitante sulle tre pale

100 for i=1:length(ang_fin) 101 if c(:,1)==0 102 ang(i)=ang_fin(i)-ang_in(i); 103 else 104 ang_fin(length(ang_fin)+1)=ang_fin(1)+360; 105 ang(i)=ang_fin(i+1)-ang_in(i); 106 end 107 pos_trasd(i)=((ang_fin(i)-ang_in(i))/2)+ang_in(i); 108

(8)

109 cav_len=ang*(pi/180)*R_t;

110 %---

C.6 Programmi ausiliari

C.6.1 Creazione dei filmati a partire dai fotogrammi modificati

Questo programma è stato sviluppato in quanto alcuni filmati sono stati elaborati in maniera frammentata. Esso permette infatti, a partire dai vari fotogrammi modificati tramite il programma già visto nella Sezione C.1.

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Programma che costruisce un filmato digitale a partire

3 % dai fotogrammi che costituiscono il filmato

4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 clear all 6 close all 7 clc 8 9 k=1;

10 for i=1:200 % numero di fotogrammi

11 nome=num2str(i);

12 fmt='.bmp';

13 nomefile=strcat(nome,fmt);

14 I=imread(nome,'bmp');

15 I=logical(I);

16 ang_rot=0.006*1500; % angolo di rotazione dell'induttore

tra due fotogrammi successivi [°]

17 I3=imrotate(I,-ang_rot*(i-1),'crop');

18 F_norm(:,:,k)=I; % variabile che definisce i

valori dei pixels per i vari fotogrammi(non ruotati)

19 F_rot(:,:,k)=I3; % variabile che definisce i

valori dei pixels per i vari fotogrammi(ruotati) 20 [X1 map1]=gray2ind(I);

21 [X2 map2]=gray2ind(I3);

22 N1(i)=im2frame(X1,map1); % creazione del filmato con i

frames modificati

23 N2(i)=im2frame(X2,map2); % creazione del filmato con i

frames modificati e ruotati 24 k=k+1;

25 end

26

27 % Nome del file da dare al filmato

28 vidname='phi0_057sig0_409';

29

30 % Salvataggio del nuovo filmato in formato .avi

31 suff2='_mod';

32 filename=strcat(vidname,suff2);

33 movie2avi(N1,filename,'fps',5);

34

35 % Salvataggio del nuovo filmato ruotato in formato .avi

36 suff4='_rot';

37 filename3=strcat(vidname,suff4);

38 movie2avi(N2,filename3,'fps',5);

39

40 % Salvataggio della funzione ke definisce i valori dei pixels

41 % in ogni frame

(9)

43 filename2=strcat(vidname,suff3);

44 save(filename2,'F_norm','F_rot');

45 clc

Figura

Tabella C.2 – Condizioni di flusso per i filmati laterali relativi all’induttore FAST2

Riferimenti

Documenti correlati

sviluppo di nuove professioni e di un nuovo mercato del lavoro); b) potenziamento della governance partecipata in tutti i territori, definendo obiettivi SMART

giunte negli strati superfciali del bulbo olfattivo, le cellule assumono le caratteristiche dei neuroni in via di diferenziamento: emettono prolungamenti e acquistano una morfologia

• l’ultima ipotesi, analoga alla precedente, è che anche il time-out sia scelto esattamente uguale al tempo minimo che la stazione sorgente deve aspettare per ottenere il riscontro

Per quanto riguarda gli insegnamenti opzionali a scelta dello studente, gli studenti potranno scegliere tra tutti gli insegnamenti attivati nel Corso di Studi non

Per quanto riguarda gli insegnamenti opzionali a scelta dello studente, gli studenti potranno scegliere tra tutti gli insegnamenti attivati nel Corso di Studi non

Per fortuna l’informatore decide di aiutare ancora l’ispettore fornendogli indizi proprio attraverso il computer. Il numero

Finalmente arrivano informazioni sul complice della Signora Violet, l’abilissima ladra arrestata da Numerik.. Gli indizi sono contenuti in una busta chiusa: l’ispettore Numerik la

Abbiamo in questo modo spiegato, credo, la portata del secondo comma e precisato il carattere di limiti che la libertà economica incontra nella nostra Costituzione come in genere