ENSTA PARISTECH 828, Boulevard des Maréchaux, 91762 Palaiseau Cedex Laboratorio de Estudios Avanzados en Fenomenos Non lineales Depto. de Ingenieria Mecanica, FCFM, Universidad de Chile Av. Beauchef 850, Torre Central, Santiago, Chile Projet de Recherche-Deuxième Année ÉTUDE DU COUPLAGE HYDRODYNAMIQUE ENTRE DEUX CYLINDRES : ÉCOULEMENT DE TAYLOR-COUETTE HORIZONTAL AVEC UN CYLINDRE LIBRE Charlie BARRAUD-Promotion 2014 Encadrant : Rodrigo Hernandez-Universidad de Chile Tuteur : Romain Monchaux-UME-ENSTA ParisTech Stage eectué du 13 mai au 2 août 2013 à la Universidad de Chile, Santiago 2013 Note de non condentialité Le document est non condentiel. Il peut donc être communiqué à l'extérieur sous format papier mais également diusé sous format électronique. Charlie BARRAUD page 1 2013 Remerciements Je tiens à remercier le professeur Rodrigo Hernandez, pour son acceuil au laboratoire, Andres pour m'avoir fait partager sa science, ainsi que les tous les autres étudiants du laboratoire pour leur bonne humeur. Merci enn à Gloria, ma très chaleureuse colocataire à Santiago, et tous mes amis là bas avec qui j'ai pu tant partager. Charlie BARRAUD page 2 2013 Résumé Couette, Taylor, et d'autres ont étudié au début du XXe siècle le champ de vitesse d'un uide entre deux cylindres coaxiaux. Cependant, il est presque impossible de trouver des études sur un système de Taylor-Couette où les cylindres perdent leur caractère coaxiaux, c'est-à-dire que le cylindre intérieur est laissé libre. Au cours de ce projet de recherche (PRe), on est amené à étudier le comportement d'un cylindre à l'intérieur d'un autre plus grand, couplés exclusivement par des forces hydrodynamiques. On veut étudier l'écoulement du uide intérieur, le mouvement induit sur le cylindre et inversement dans le cas d'un ux laminaire et stable. L'objectif nal de ces travaux est de trouver un moyen d'immobiliser un cylindre dans un écoulement de Taylor-Couette, en jouant sur les propriétés du uide et du cylindre intérieur. Le forçage extérieur lui sera gardé constant. Nous verrons donc quelle expérience a été créée ainsi que les outils qui ont été constuits pour étudier l'écoulement : une fonction de PIV, une fonction pour suivre la trajectoire du cylindre et une autre pour déterminer sa rotation. Mots clés : Écoulement à symétrie cylindrique, écoulement de Taylor-Couette, corrélation, PIV. Abstract Couette, Taylor and others studied in the beginning of the 20th century the speed eld of a uid between two coaxial cylinders. However, it is mostly impossible to nd papers on a Taylor-Couette system where the cylinders lose their coaxiality, that is to say that the inner cylinder is left free in its movements. During this project (PRe), we focuse on the behaviour of a cylinder into another full of uid, exclusively coupled by hydrodynamique forces. We want to study the inner ow, the movement inducted on the inner cylinder and inversely, in the case of a laminary and stable ow. The nal goal is to nd a way to immobilize the inner cylinder in a Taylor-Couette ow, playing with the uid properties and the inner cylinder properties. The outer forcing will be kept constant. We will see which experiment was designed and the tools built for this study : a PIV program, a mean to follow the inner cylinder trayectory and an other to determine the inner cylinder rotation. Key words : Cylindrical ow, Taylor-Couette ow, correlation, PIV. Charlie BARRAUD page 3 2013 Charlie BARRAUD page 4 2013 Préambule Ce travail est l'÷uvre de recherches au laboratoire LEAF-NL (Laboratorio de Estudios Avanzados en Fenomenos Non Lineales) 1 de la Univesidad de Chile à Santiago du Chili. Ce laboratoire de thermouide, comme son nom l'indique, est spécialisé dans les phénomènes non-linéaires. Il accueille de nombreux étudiants chiliens qui durant 10 mois chaque année y viennent réaliser leur travaux de n d'études. Mon maître de stage, Rodrigo Hernandez, est diplômé du titre d'ingénieur civil mécanique de la Universidad de Chile. Il est également diplômé de l'ENS Lyon. Il m'accueille au sein de son laboratoire pour réaliser des travaux de recherches en mécanique, en compagnie d'Andrés Vial, étudiant ingénieur, qui écrit son mémoire de n d'étude sur ce sujet. Figure 1 Andrés, mon dèle compagnon de travail Dans le cadre de ce travail, j'ai été amené à : Travailler en équipe avec un étudiant étranger qui ne parle pas ma langue natale Utiliser mes connaissances en mécanique du solide et des uides Me documenter sur les phénomènes d'hydrodynamique connée Utiliser des logiciels de simulation numérique (Fluent 2 ou Matlab 3 ) Concevoir et construire une expérience Rédiger un rapport scientique 1. http ://www.leafnl.uchile.cl/ 2. http ://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+Fluent 3. http ://www.mathworks.com/products/matlab/ Charlie BARRAUD page 5 2013 Charlie BARRAUD page 6 Table des matières Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé/Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Étude du couplage hydrodynamique entre deux cylindres : écoulement de Taylor-Couette horizontal avec un cylindre libre 1.1 1.2 1.3 1.4 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le problème du cylindre tournant 2.1.1 Dénition du problème . . 2.1.2 Équations du problème . . 2.1.3 Résolution des équations . 2.1.4 Étude de la couche limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le problème . . . . . . . . . . . . Équations du problème . . . . . . Résolution des équations . . . . . Simulation numérique et résultats Instabilité de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 17 17 17 18 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 22 23 23 27 Le montage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Hypothèses de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 La fonction de corrélation, base de la détection 5.1 13 14 15 15 21 L'Expérience 4.1 4.2 5 . . . . Problème de Taylor-Couette 3.1 3.2 3.3 3.4 3.5 4 Introduction . . . . . . . . . . . Conditions de forçage . . . . . Objectifs des recherches . . . . Tâches qui m'ont été imparties 13 Le cylindre tournant : vers le test expérimental 2.1 3 5 5 5 31 La fonction correl2d, de la PIV à la détection du cylindre . . . . . . . . . 31 5.1.1 Détails du programme . . . . . . . . . . . . . . . . . . . . . . . . . 31 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7 TABLE DES MATIÈRES 6 Méthode de mesure du champ de vitesse par PIV 6.1 6.2 6.3 6.4 6.5 7 . . . . . . . . . . . . . . . . . . . . . . . . observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 53 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Mesure de la vitesse de rotation du cylindre intérieur 9.1 9.2 9.3 37 37 39 40 41 43 44 46 47 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Le programme de mesure de la vitesse . . . . . . . . . . . . . . . . . . . . 49 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Détection de la trajectoire du cylindre intérieur 8.1 8.2 8.3 9 Principe . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Le principe physique . . . . . . . . . . . . . . 6.1.2 Le traitement d'image . . . . . . . . . . . . . 6.1.3 Conditions expérimentales, ensemencement et 6.1.4 Traitement d'image . . . . . . . . . . . . . . . Premiers pas . . . . . . . . . . . . . . . . . . . . . . Résultats . . . . . . . . . . . . . . . . . . . . . . . . Limites . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 37 Mesure de la vitesse de rotation du cylindre extérieur 7.1 7.2 7.3 8 2013 57 Présentation du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Algorithme de résolution-Méthode du "glissement" . . . . . . . . . . . . . 57 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 10 Bilan 61 10.1 Bilan du travail eectué . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 10.2 Bilan personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 A Les fonctions matlab utilisées tout au long de la construction des programmes 65 A.1 Le programme correl2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Programmes de chargement des images . . . . . . . . . . . . . . . . . . . A.2.1 Le programme de chargement des videos en .bin . . . . . . . . . A.2.2 Programme de correction des videos (puisqu'une image sur deux subissait des décalages de quelques pixels lors de la gravation de la video) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 PIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.1 Le programme de PIV avec moyenne . . . . . . . . . . . . . . . . A.3.2 Le programme de traitement d'image bpass . . . . . . . . . . . . A.3.3 Le petit programme de calcul de la vitesse utilisant correl2d . . A.3.4 Le programme d'achage de toutes les fenêtres d'interrogation découpée pour vérier si l'image est entièrement recouverte . . . . . Charlie BARRAUD . 65 . 66 . 66 . . . . . 67 69 69 73 76 . 77 page 8 TABLE DES MATIÈRES A.4 Détermination de la vitesse de rotation du cylindre extérieur . . . . A.5 Détermination de la trajectoire du cylindre . . . . . . . . . . . . . A.5.1 Détermination de la trajectoire . . . . . . . . . . . . . . . . A.5.2 Traitement d'image . . . . . . . . . . . . . . . . . . . . . . . A.5.3 Création d'une image articielle : cercle blanc sur fond noir A.5.4 Création d'un lm à partir des images articielles (spirale) . A.5.5 Calcul des erreurs entre trajectoire articielle et calculée . . A.6 Détermination de la vitesse de rotation du cylindre intérieur . . . . Charlie BARRAUD 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 79 79 81 83 84 85 86 page 9 TABLE DES MATIÈRES Charlie BARRAUD 2013 page 10 Table des gures 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1 1.2 Problème posé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Schéma du système vue de prol . . . . . . . . . . . . . . . . . . . . . . . 14 2.1 Schéma du cylindre tournant . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1 3.2 3.3 3.4 Schéma du problème posé . . . . . . . . . . . . Simulation d'un écoulement de Taylor-Couette Illustration de l'instabilité de Taylor . . . . . . Tracé de l'instabilité de Taylor . . . . . . . . . 4.1 4.2 4.3 Schéma du montage expérimental . . . . . . . . . . . . . . . . . . . . . . . 28 Photo du montage expérimental . . . . . . . . . . . . . . . . . . . . . . . . 29 Zoom sur le cylindre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1 5.2 5.3 Tracé de la corrélation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 images articielles pour tester la corrélation . . . . . . . . . . . . . . . . . 34 Le maximum de corrélation . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 Schéma explicatif de la méthode de visualisation d'un champ de par PIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schéma explicatif de la méthode de visualisation de l'écoulement Déroulement de la recherche de vitesse des particules . . . . . . . Image pour appliquer la PIV . . . . . . . . . . . . . . . . . . . . Image découpée en feêtres d'interrogation . . . . . . . . . . . . . Exclusion de valeurs calculées lors de la PIV . . . . . . . . . . . . Image articielle pour tester la PIV . . . . . . . . . . . . . . . . . Champ de vitesse lors de l'expérience du cylindre tournant . . . . Prol de vitesse lors de l'expérience du cylindre tournant . . . . . vitesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 40 41 42 43 44 45 46 7.1 7.2 7.3 7.4 Photo du cylindre avec sa marque noire . . . . . . . . Photo de l'image composée de la soustraction des deux L'image de la soustraction en binaire . . . . . . . . . . Vitesse de rotation instantanée du cylindre extérieur . . . . . . . . . 49 50 50 51 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 23 24 25 TABLE DES FIGURES 2013 7.5 Graphique d'équivalence entre voltage et vitesse de rotation du cylindre . 52 8.1 8.2 8.3 Traitement d'image pour la détection du cylindre intérieur . . . . . . . . . 53 Vitesse à tout instant du cylindre intérieur . . . . . . . . . . . . . . . . . . 54 Trajectoire du cylindre intérieur . . . . . . . . . . . . . . . . . . . . . . . . 55 9.1 9.2 9.3 9.4 Photo du cylindre intérieur . . . . . . . . . . . . . . . . . Image de référence pour le calcul de la rotation . . . . . . Photo du cylindre trouvé par la méthode du "glissement" La référence transformée en image binaire . . . . . . . . . Charlie BARRAUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 58 59 page 12 1. Étude du couplage hydrodynamique entre deux cylindres : écoulement de Taylor-Couette horizontal avec un cylindre libre 1.1 Introduction Nous étudions le comportement d'un solide situé dans une cavité cylindrique remplie d'un uide. L'objectif est que le solide, quelque soit le forçage extérieur de la cavité, évite tout contact solide avec les parois. Le mouvement imposé pourra être un mouvement de rotation, ou un mouvement de vibration de haut en bas (voir 1.1 et 1.2). Les paramètres sur lesquels nous pourrons jouer sont la forme du solide en question, le matériaux dans lequel il est fait, la répartition de la masse dans le solide, le uide dans lequel il est plongé, ou en encore une stratication de uides. Nous cherchons donc un moyen d'immobiliser le cylindre : à première approximation, comme le minimum de pression dans le cylindre tournant se trouve au centre, nous nous attendons à ce que le cylindre se mette au centre. 13 1.2. CONDITIONS DE FORÇAGE 2013 Figure 1.1 Schéma de l'expérience dans le cas d'un solide cylindrique de masse volu- mique ρi et plongé dans un liquide de masse volumique ρf . Le cylindre extérieur peut induire un forçage rotatif ou de vibration verticale sur le liquide Figure 1.2 Schéma du système vue de prol. Le cylindre intérieur a un rayon Ri celui extérieur Rext . et 1.2 Conditions de forçage 1. Pour éviter tout eet de la gravité, nous chercherons à nous placer dans un uide de masse volumique similaire à celle du cylindre intérieur, de sorte que la poussée d'Archimède et le poids se compensent. Pour cela, on pourra mélanger de l'eau et de la glycérine. 2. Le forçage extérieur devra être contrôlé de manière à ce que le uide reste stable Charlie BARRAUD page 14 1.3. OBJECTIFS DES RECHERCHES 2013 et laminaire à l'intérieur du cylindre. 3. La vitesse de forçage du cylindre extérieur devra rester constante. 1.3 Objectifs des recherches Modéliser le mouvement du cylindre intérieur libre Comparer ce résultat à la réalité expérimentale Trouver une combinaison qui permet au cylindre intérieur de ne toucher à aucun moment le cylindre extérieur 1.4 Tâches qui m'ont été imparties Construire l'expérience Construire un programme de PIV pour être capable de déterminer le champ de vitesse dans le cylindre Construire un programme permettant de suivre la trajectoire du cylindre intérieur Construire un programme permettant de suivre la vitesse de rotation du cylindre intérieur Charlie BARRAUD page 15 1.4. TÂCHES QUI M'ONT ÉTÉ IMPARTIES Charlie BARRAUD 2013 page 16 2. Le cylindre tournant : vers le test expérimental 2.1 Le problème du cylindre tournant 2.1.1 Dénition du problème Nous étudions un cylindre tournant horizontal de rayon Rext et contenant un uide de masse volumique ρ. La gure 2.1.1 décrit le système : Figure 2.1 Schéma du problème posé 2.1.2 Équations du problème Les équations de Navier-Stokes pour un uide incompressible donnent en cylindrique : 1 ∂ 1 ∂uθ ∂uz (rur ) + + =0 r ∂r r ∂θ ∂z 17 (2.1) 2.1. LE PROBLÈME DU CYLINDRE TOURNANT 2013 u2 ∂ur ∂ur ∂ur uθ ∂ur + ur + + uz − θ ∂t ∂r r ∂θ ∂z r ∂ur 1 ∂ 2 ur ∂ 2 ur ur 2 ∂uθ 1 ∂p 1 ∂ r + 2 + − − + fr (2.2) =− +ν ρ ∂r r ∂r ∂r r ∂θ2 ∂z 2 r2 r2 ∂θ ∂uθ ∂uθ uθ ∂uθ ∂uθ ur uθ + ur + + uz + ∂t ∂r r ∂θ ∂z r 1 ∂p ∂uθ 1 ∂ 2 uθ 1 ∂ ∂ 2 uθ 2 ∂ur uθ =− r + 2 +ν + + 2 − 2 + fθ (2.3) ρr ∂θ r ∂r ∂r r ∂θ2 ∂z 2 r ∂θ r ∂uz ∂uz 1 ∂ 2 uz ∂uz uθ ∂uz ∂uz 1 ∂p 1 ∂ ∂ 2 uz r + 2 + fz + ur + + uz =− +ν + ∂t ∂r r ∂θ ∂z ρ ∂z r ∂r ∂r r ∂θ2 ∂z 2 (2.4) ∂ Dans notre cas, il n'y a pas de mouvement selon uz , le régime est stationnaire ( ∂t = 0), la force volumique du poids est négligeable (fr = fθ = fz = 0), il n'y a pas de vitesse ∂ = 0). selon er (ur = 0) et le système est invariant par rotation ( ∂θ Les équations se simplient donc : u2θ 1 ∂p =− r ρ ∂r 1 ∂ ∂uθ uθ 0= r − 2 r ∂r ∂r r − (2.5) (2.6) 2.1.3 Résolution des équations Une solution du problème est uθ = A · r + vitesse est continue (donc B = 0). On a alors nalement A = Ω. L'écoulement est donc le suivant : B r. En r = Rext , uθ = Ω · R et en r = 0, la uθ = Ω · r (2.7) 2.1.4 Étude de la couche limite On étudie dans ce paragraphe la couche limite qui se forme sur la paroi cylindrique. On pose : uθ uˆθ = Ω·R ext Charlie BARRAUD page 18 2.1. LE PROBLÈME DU CYLINDRE TOURNANT 2013 uˆr = Vur0 r̂ = Rextr −δ avec δ << Rext θ θ̂ = 2·π p p̂ = p0 V0 1 ∂ 1 ∂ uˆθ ΩRext (r̂uˆr ) + =0 Rext − δ r̂ ∂ r̂ 2π(Rext − δ) r̂ ∂ θ̂ (2.8) On adimensionalise le reste des équations de Navier-Stokes : Rext − δ ∂ uˆr ∂ p̂ uˆθ 2 uˆθ ∂ uˆr uˆr + 4π 2 + − Rext Ω 2πRext ∂ r̂ r̂ ∂ θ̂ ∂ r̂ r̂ 1 1 ∂ ∂ uˆr 1 ∂ 2 uˆr 2 ∂ uˆθ uˆr = r̂ + 2 2 (2.9) − 2 − 2 Re r̂ ∂ r̂ ∂ r̂ 4π r̂ ∂ θ̂2 r̂ r̂ ∂ θ̂ V0 uˆr uˆθ Rext − δ ∂ uˆθ uˆθ ∂ uˆθ ∂ p̂ + uˆr + + Rext Ω 2πRext ∂ r̂ r̂ ∂ θ̂ r̂ ∂ θ̂ 1 1 ∂ ∂ uˆθ 1 ∂ 2 uˆθ 2 ∂ uˆr uˆθ = r̂ + 2 2 (2.10) + 2 2 − 2 Re r̂ ∂ r̂ ∂ r̂ 4π r̂ ∂ θ̂2 4π r̂ ∂ θ̂ r̂ V0 Or, d'après le principe de moindre dégénérescence, d'après [1, page 206], V0 = ΩRext 2π (2.11) Rext − δ 2πRext (2.12) 1 (2πRext )2 =1 Re Rext − δ 2 (2.13) 2πRext δ = Rext − √ Re (2.14) V0 Rext Ω = On a donc : √ ext . Dans notre cas, typiquement, le La couche limite a donc une épaisseur typique de 2πR Re cylindre extérieur a un diamètre de 6 cm, et la vitesse de rotation de 1 tour/s. On aura donc un Re = ρ·L·v = 32000 et donc une couche limite de l'ordre de δ = 1mm. Nous η tacherons donc de le vérier lors de la mise en place de l'expérience. Charlie BARRAUD page 19 2.1. LE PROBLÈME DU CYLINDRE TOURNANT Charlie BARRAUD 2013 page 20 3. Problème de Taylor-Couette 3.1 Le problème On plonge un cylindre xe dans le cylindre tournant à la vitesse Ω. Les deux cylindres sont concentriques (voir gure 3.1). Re Ri Ω Figure 3.1 Schéma du problème posé : un cylindre tournant à la vitesse angulaire Ω contient un uide de masse volumique ρf et un autre cylindre : c'est l'écoulement de Taylor-Couette 3.2 Équations du problème Les équations de Navier-Stokes pour un uide incompressible donnent en cylindrique : 21 3.3. RÉSOLUTION DES ÉQUATIONS 1 ∂ 1 ∂uθ ∂uz (rur ) + + =0 r ∂r r ∂θ ∂z 2013 (3.1) u2 ∂ur ∂ur uθ ∂ur ∂ur + ur + + uz − θ ∂t ∂r r ∂θ ∂z r ∂ur 1 ∂ 2 ur ∂ 2 ur ur 2 ∂uθ 1 ∂ 1 ∂p r + 2 + − 2 − 2 + fr (3.2) +ν =− ρ ∂r r ∂r ∂r r ∂θ2 ∂z 2 r r ∂θ ∂uθ ∂uθ ∂uθ uθ ∂uθ ur uθ + ur + + uz + ∂t ∂r r ∂θ ∂z r 1 ∂p ∂uθ 1 ∂ 2 uθ ∂ 2 uθ 2 ∂ur 1 ∂ uθ =− r + 2 + + + fθ (3.3) +ν − ρr ∂θ r ∂r ∂r r ∂θ2 ∂z 2 r2 ∂θ r2 ∂uz ∂uz uθ ∂uz ∂uz 1 ∂p 1 ∂ ∂uz 1 ∂ 2 uz ∂ 2 uz + ur + + uz =− +ν r + 2 + + fz ∂t ∂r r ∂θ ∂z ρ ∂z r ∂r ∂r r ∂θ2 ∂z 2 (3.4) ∂ Dans notre cas, il n'y a pas de mouvement selon uz , le régime est stationnaire ( ∂t = 0), la force volumique du poids est négligeable (fr = fθ = fz = 0), il n'y a pas de vitesse ∂ selon er (ur = 0) et le système est invariant par rotation ( ∂θ = 0). Les équations se simplient donc : u2θ 1 ∂p =− r ρ ∂r 1 ∂ ∂uθ uθ 0= r − 2 r ∂r ∂r r − (3.5) (3.6) 3.3 Résolution des équations Une solution du problème est uθ = A · r + Br . En r = Rint , uθ = 0 tandis qu'en r = Rext , uθ = Ω · R. 2 2 Rext Rext 2 (1 − On a alors nalement A = R2 −R · Ω et B = Ω · Rext 2 2 −R2 ) Rext ext int int L'écoulement est donc le suivant : 2 uθ = Rext · Ω( Charlie BARRAUD 2 Rext r 1 R2 + (1 − 2 ext 2 )) 2 Rext − Rint − Rint r (3.7) page 22 3.4. SIMULATION NUMÉRIQUE ET RÉSULTATS 2013 3.4 Simulation numérique et résultats Nous eectuons une simulation numérique avec le logiciel uent 1 avec les paramètres suivants : Rext = 0.05m Rint = 0.02m ρf = ρ(eau) = 1000kg/m3 ν = ν(eau) = 1.007 · 10−6 m2 /s Ω = 2πs−1 Le résultat conduit à la courbe 3.2 : Figure 3.2 La vitesse Uθ est tracé en fonction du rayon. En rouge sont les résultats de la simulation de uent et en bleu, le tracé de vitesse théorique. Si les résultats sont plus ou moins éloignés, l'origine en est les nombreuses simplications et la non prise en compte des couches limites. 3.5 Instabilité de Taylor Nous résumons dans cette partie les résultats exprimés par Taylor[2]. En utilisant un montage similaire à celui de Couette, il analyse la formation de petites perturbations 1. http ://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+Fluent Charlie BARRAUD page 23 3.5. INSTABILITÉ DE TAYLOR 2013 dans le ux de Couette, en s'intéressant aux 3 dimensions du problème, et non plus au problème bidimensionnel comme auparavant (voir 3.3). Figure 3.3 Illustration de l'instabilité de Taylor : des "rouleaux" toroïdaux se forment sous certaines conditions(explicitées plus bas) En utilisant les fonctions de Bessel, il a déterminé une représentation mathématique des vorticités toroïdales qui se forment, même si par manque de possibilités de calcul informatique, il ne calcule que quelques lignes de courants pour certaines congurations. Taylor a tout de même réussi à calculer la courbe 3.4, qui relie le rapport de vitesses des cylindres nécessaire à créer l'instabilité pour un uide non-visqueux, qu'il a vérié ensuite expérimentalement. Charlie BARRAUD page 24 3.5. INSTABILITÉ DE TAYLOR 2013 Figure 3.4 Tracé de l'instabilité de Taylor : en rouge, la zone d'instabilité, en vert, ext 2 celle de stabilité. En bleu, la droite d'équation Ω1 = Ω2 · ( R Rint ) vers laquelle converge la limite d'instabilité. On observe que la courbe converge vers une droite décrite par l'équation suivante : Ω1 Rext 2 =( ) Ω2 Rint (3.8) On cherchera donc à se placer dans les conditions de stabilité de Taylor, soit Ω1 Rext 2 >( ) Ω2 Rint (3.9) ce qui nous donne un premier critère de dimensionnement du système. Charlie BARRAUD page 25 3.5. INSTABILITÉ DE TAYLOR Charlie BARRAUD 2013 page 26 4. L'Expérience 4.1 Le montage Le montage est constitué d'un cylindre et du support le faisant tourner. Le cylindre est constitué de plexiglas, et est transparent pour permettre l'observation des phénomènes physiques. D'un coté, un couvercle transparent lui aussi est collé au cylindre. De l'autre, un couvercle amovible (avec joint et un trou qui permet de le remplir sans trop d'eort) permet de fermer le cylindre. Le cylindre est alors posé sur deux barres en plastique selon la gure 3.1. L'une des barres est reliée à un moteur, alimenté par un générateur de tension, qui la fait tourner et permet d'en contrôler sa vitesse. On place des anneaux de caoutchouc autour des barres pour faciliter l'entraînement du cylindre par les barres. Le tout est alors posé sur une table. Pour eectuer la PIV, une caméra est placée en face du cylindre et un LASER ainsi qu'un miroir à sa perpendiculaire. 27 4.1. LE MONTAGE 2013 Figure 4.1 Schéma du montage expérimental Charlie BARRAUD page 28 4.2. HYPOTHÈSES DE TRAVAIL 2013 Figure 4.2 Photo légendée du montage expérimental 4.2 Hypothèses de travail Nous nous situons dans un souterrain, à l'abri du bruit urbain et des variations de température On remplit le cylindre d'eau (ou d'un mélange eau/glycérine pour avoir un liquide et un objet de masse volumique similaire an de limiter l'eet du poids), à l'aide d'une seringue pour éliminer toute présence de bulles qui pourraient aecter l'écoulement. Avant toute mesure, nous laissons le champ de vitesse stationnaire s'établir en laissant tourner le cylindre durant 20 minutes au préalable. Comme vu précédemment, le Reynolds typique de l'expérience sera Re=30 000, avec une vitesse de de rotation d'un tour par seconde. Charlie BARRAUD page 29 4.2. HYPOTHÈSES DE TRAVAIL 2013 Figure 4.3 Photo du montage expérimental Charlie BARRAUD page 30 5. La fonction de corrélation, base de la détection 5.1 La fonction correl2d, de la PIV à la détection du cylindre Le programme correl2d.m, créé par mon tuteur, permet d'eectuer la corrélation entre 2 images et de donner le déplacement moyen dans une image. 5.1.1 Détails du programme Voici le programme en entier : pour des raisons évidentes, ce sera le seul à apparaître explicitement car il est à la base de tout le traitement d'image, les autres seront mis en annexe. 1 %********************************************************** % FUNCTION c o r r e l 2 d .m % Usage : [ l a g , x , y ,C] = c o r r e l 2 d ( matrix1 , matrix2 ) % S e a r c h i n g P a t t e r n in Matrix1 . % Compute 2D Cross C o r r e l a t i o n w i t h f f t 2 and i f f t 2 6 % l a g =[x , y ] a t max(C) ; C=C( x , y ) % Dimensiones son t a l e s que : A( x , y )=A(N,M) ; % rhp , 24 Junio 2002 %********************************************************* 11 f u n c t i o n [ l a g , X, Y,C ] = c o r r e l 2 d (A, B) S = s i z e (A) ; N=S ( 1 ) ; M=S ( 2 ) ; % Matrix s i z e ; %X = l i n s p a c e (−N/2 ,N/2 ,N) ; %Y = l i n s p a c e (−M/2 ,M/2 ,M) ; %X=0:1:N− 1; % X Axis t o g i v e z e r o l a g a t o r i g i n o f (N, M) 16 %Y=0:1:M− 1; % Y Axis t o g i v e z e r o l a g a t o r i g i n o f (N,M) A = A − mean2 (A) ; % g e t out mean i n t e n s i t y B = B − mean2 (B) ; % g e t out mean i n t e n s i t y 31 5.2. EXEMPLE 2013 normA = sum ( sum (A. ^ 2 ) ) ; normB = sum ( sum (A. ^ 2 ) ) ; % t o n o r m a l i z e c r o s s −c o r r . 21 Co = ( f f t s h i f t ( i f f t 2 ( f f t 2 (A) . * c o n j ( f f t 2 (A) ) ) ) ) ; % Corr 2D s h i f t i n g DC t o o r i g i n . C = Co/ ( s q r t ( normA*normB ) ) ; % Corr 2D max i s 1 [ r , Xo]=max(max( abs (C) ' ) ) ; [ r , Yo]=max(max( abs (C) ) ) ; 26 X= 1 : 1 :N; Y= 1 : 1 :M; o r i g i n o f (N,M) X=X−Xo ; Y=Y−Yo ; M) % f i n d mean x− l a g % f i n d mean y− l a g % Y Axis t o g i v e z e r o l a g a t % X Axis t o g i v e z e r o l a g a t o r i g i n o f (N, 31 normA = sum ( sum (A. ^ 2 ) ) ; normB = sum ( sum (B. ^ 2 ) ) ; % t o n o r m a l i z e c r o s s −c o r r . Co = f f t s h i f t ( i f f t 2 ( f f t 2 (B) . * c o n j ( f f t 2 (A) ) ) ) ; % Corr 2D s h i f t i n g DC t o o r i g i n . C = Co/ ( s q r t ( normA*normB ) ) ; % Corr 2D max i s 1 [ r , x]=max(max( abs (C) ' ) ) ; 36 [ r , y]=max(max( abs (C) ) ) ; l a g =[X( x ) ,Y( y ) ] ; % f i n d mean x− l a g % f i n d mean y− l a g %i f abs ( l a g ( 1 ) )> 8 ; l a g ( 1 )=M+l a g ( 1 ) ; end %l a g=l a g * 2 * p i / 1 7 ; 41 %l a g=unwrap ( l a g ) ; 5.2 Exemple Prenons le cas d'une matrice A, carrée de 10 par 10 de zéros dont on remplit un carré de 5 par 5 avec des 1. On décale ensuite ce carré dans la matrice B. On lui applique enn le programme. A = Charlie BARRAUD page 32 5.2. EXEMPLE 4 9 2013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 B = 19 24 29 [ l a g , ~ , ~ ,C]= c o r r e l 2 d (A, B) ; lag = −2 −3 Le "lag" donne le décalage des "1", ce qui est bien conforme. La matrice C est la matrice de corrélation dont le maximum est un. Les coordonnées de son maximum donne le décalage détecté (voir gure 5.1). Charlie BARRAUD page 33 5.2. EXEMPLE 2013 Figure 5.1 Tracé de la matrice de corrélation : son maximum (ici en rouge) donne le décalage détecté (il faut regarder le décalage du pic par rapport au centre de la gure). Ainsi, dans notre cas, le décalage ou "lag" est de (-2 ;-3). Créons maintenant articiellement deux images avec un carré qui se déplace. On rajoute du bruit, ce qui donne les images de la gure 5.3 : Figure 5.2 Les deux images créées articiellement présentent un décalage de (12,20) entre elles Le programme sort alors la matrice de corrélation suivante : Charlie BARRAUD page 34 5.2. EXEMPLE 2013 Figure 5.3 La matrice de corrélation présente un maximum (en rouge) dont le déplacement par rapport au centre de l'image donne le décalage du carré blanc : (12,20) Charlie BARRAUD page 35 5.2. EXEMPLE Charlie BARRAUD 2013 page 36 6. Méthode de mesure du champ de vitesse par PIV 6.1 Principe La mesure de champs de vitesses par PIV (Particle Image Velocimetry) est très commune dans l'étude des écoulements. Il s'agit d'observer, dans le plan, le déplacement de traceurs (des particules de petites tailles et de même densité que le uide) pour en déduire le champ de vitesse de l'écoulement. Cette technique permet de connaître un champ de vitesse en 2D presque instantanément et est donc très attractif. 6.1.1 Le principe physique La gure 6.1 (tiré de [3, page 185]) nous interpelle sur le principe de la méthode : On ensemence le uide de particules ultra-nes (de l'ordre de 10 microns) et de même masse volumique que le uide étudié. On projette une nappe laser sur l'écoulement, an d'avoir un plan de uide éclairé (voir 6.2). Les particules, passant dans le plan laser, diusent la lumière dans toutes les directions. Elles sont alors lumineuses et observables. On prend des images en haute résolution à intervalle de temps connu. On découpe les images en sous-images contenant plusieurs particules puis on traite les images par paires, par corrélation, an d'obtenir le déplacement moyen de quelques particules. On récupère le champ de vitesse connaissant le vecteur déplacement et l'intervalle de prise entre chaque photographie. 37 6.1. PRINCIPE 2013 Figure 6.1 Schéma explicatif de la méthode de visualisation d'un champ de vitesse par PIV Charlie BARRAUD page 38 6.1. PRINCIPE 2013 Figure 6.2 Schéma explicatif de la méthode de visualisation de l'écoulement : une nappe laser éclaire un plan de particules suivant le uide. Celles-ci diusent alors la lumière dans toutes les directions. Une caméra récupère alors les images de l'écoulement plan. 6.1.2 Le traitement d'image Pour déterminer le déplacement moyen des particules de chaque sous-image, les fenêtres d'interrogations, on eectue une corrélation de deux images consécutives (à t et t + ∆t). Le maximum de corrélation est alors obtenu pour le déplacement moyen des particules. La vitesse est alors obtenue tout simplement en divisant de déplacement moyen par ∆t. Charlie BARRAUD page 39 6.1. PRINCIPE 2013 Figure 6.3 Une image est constituée de a x b pixels. Elle est découpée en fenêtre d'interrogations plus petites (en rouge). On eectue alors une recherche de maximum de corrélation entre deux même fenêtres de deux images consécutives ce qui nous donne le déplacement moyen dans chaque fenêtre. La vitesse est alors donnée par ce déplacement moyen divisé par l'intervalle de temps entre les images ∆t. 6.1.3 Conditions expérimentales, ensemencement et observations Pour l'ensemencement du uide, nous utilisons des particules SPHERICEL®110P8 1 . L'ensemencement, pour le cas de notre cylindre de 500 cm3 environ, est eectué au moyen du couvercle, après pesée de 0,020 g de particules. Ce nombre a été obtenu après plusieurs tests sur le programme construit (voir 6.1.4). La nappe LASER est eectuée à l'aide d'un LASER Melles Griot, Model 58GCS (High Performance Diode Pumped Solid State Laser). À noter qu'il peut être nécessaire d'en mettre un peu plus lorsque l'on eectue un zoom sur une partie du uide avec la caméra. La caméra est une COHU progressive scan 6600 Model 3000 et le lentille une NIKON AF micro nikkor 60 mm 1 :2.8 D. De plus, pour que la PIV donne un résultat extrêmement satisfaisant, on peut moyenner les résultats sur plusieurs images (on prendra typiquement plus tard des lms de 250 images). Mais pour cela, il faut avoir à faire à un régime stationnaire : nous attendrons donc avant toute prise de lm une trentaine de minutes. À noter aussi que le laboratoire est situé dans un souterrain ce qui limite le bruit extérieur et les variations de température d'une expérience à l'autre. 1. Voir www.pottersbeads.com pour plus d'informations Charlie BARRAUD page 40 6.1. PRINCIPE 2013 6.1.4 Traitement d'image Nous expliquons ici quelles sont les étapes de notre programme de piv (voir A.3). Traitement d'image par la fonction bpass An de supprimer le bruit du lm et de retenir les objets d'une certaine longueur, nous ltrons nos images avec la fonction bpass 2 , un ltre spatial mis à disposition gratuitement. Nous traitons ainsi chaque image par cette fonction. Dans notre cas, la longueur du bruit est de 1 pixel, tandis que les particules, selon le zoom, ont une longueur variable, comprise entre 3 et 50 pixels. Voici les images avant et après traitement : Figure 6.4 L'image prise par la caméra (à gauche) puis l'image obtenue après traitement par le ltre spatial bpass (à droite) Découpage en fenêtre d'interrogations An de mesurer la vitesse du uide en tout point, il est nécessaire de découper chaque image en diérentes fenêtres d'interrogation, plus petites, dans lesquelles nous déterminerons la vitesse moyenne. Le programme n'étant pas très intéressant, nous ne le montrerons pas (mais est accessible en annexe A.3). Le résultat donne : 2. pour plus d'information, lire la page suivante : http ://www.mathworks.com/matlabcentral/leexchange/15765sptrack1-0/content/bpass.m Charlie BARRAUD page 41 6.1. PRINCIPE 2013 Figure 6.5 Chaque image est découpée en fenêtres d'interrogation. Dans chacune d'elle, on pourra y déterminer la vitesse moyenne. Dans cet exemple, l'image est partagée en 13x13 fenêtres. Calcul de la vitesse moyenne dans chaque fenêtre L'étape suivante est le calcul entre deux fenêtres identiques de deux images consécutives de la vitesse moyenne des particules. Pour cela, nous utilisons la fonction correl2d (voir 5). Ainsi, dans chaque fenêtre nous l'appliquons. Moyenne sur un grand nombre d'images Pour améliorer les résultats de la PIV, dans le cas d'un régime stationnaire, on eectue cette PIV sur un lm comportant un grand nombre d'images. En eet, nos vitesses mesurées sont réparties selon une gaussienne : Charlie BARRAUD page 42 6.2. PREMIERS PAS 2013 Figure 6.6 Comme certaines vitesses mesurées sont irréelles dû par exemple à une mauvaise qualité d'image, nous ne garderons que les vitesses mesurées comprises entre v − σ2 et v + σ2 En répétant l'opération, nous obtenons ainsi une moyenne améliorée, puisque les valeurs irréelles ont été supprimées. 6.2 Premiers pas Pour tester le programme et en l'absence temporaire de toute caméra opérationnelle, on a créé des images articielles pour y appliquer notre PIV. Puis on leur applique la fonction imrotate qui permet de leur faire faire une rotation articielle. Ceci fut très pratique pendant un mois, mois durant lequel il aurait impossible de travailler sans caméra. Voici une exemple d'image articielle : Charlie BARRAUD page 43 6.3. RÉSULTATS 2013 Figure 6.7 On crée des images articielles telles que celle-ci pour tester notre PIV 6.3 Résultats Champ de vitesse En eectuant les opérations décrites ci-dessus, nous sommes capables de déterminer le champ de vitesse plan dans le cylindre tournant. Typiquement, voici le genre de résultat qu'on est maintenant capable de trouver grâce à ce logiciel : Charlie BARRAUD page 44 6.3. RÉSULTATS 2013 Figure 6.8 Le cylindre extérieur tourne à la vitesse de 80 mm/s ; le calcul a été eectué à l'aide de 15x15 fenêtres d'interrogations. Comparaison avec la théorie dans le cas du cylindre tournant Nous avons vu ci-dessus que le champ de vitesse était à symétrie cylindrique avec un champ de vitesse selon eθ comme ce que prédit le chapitre 2. Nous pouvons aller plus loin : la théorie prédit un champ de vitesse linéaire uθ = Ω · r. On retrouve bien ce résultat : Charlie BARRAUD page 45 6.4. LIMITES 2013 Figure 6.9 Pour le même cas que plus haut, le prol est linéaire : on a bien un prol de vitesse similaire à ce que prédit la théorie 6.4 Limites L'écoulement dans la couche limite étant rapide et instable, il nous est impossible de la mesurer par cette méthode. Il est impossible d'avoir une résolution très ne (>40 pixels par fenêtre d'interrogation) car sinon, les particules sortent des fenêtres d'une image à l'autre et on ne peut donc pas mesurer leur vitesse. Si l'écoulement est trop rapide, il nous est impossible d'en mesurer la vitesse pour la même raison que précédemment : les particules sortiraient des fenêtres d'interrogation. Pour remédier à ce problème, il nous faudrait une caméra ultra rapide Charlie BARRAUD page 46 6.5. CONCLUSION 2013 avec une fréquence supérieure à 60Hz. Certaines ombres masquent une partie de l'écoulement et empêchent le calcul de vitesse. Le montage est donc à améliorer avec un circuit optique pour la nappe LASER. 6.5 Conclusion Cet outil est assez puissant : le laboratoire n'ayant que peu de moyens, il n'a pas fait l'acquisition de logiciel professionnel de PIV. Avec cette fonction et ce protocol expérimental, on est maintenant capable de déterminer un champ de vitesse plan hors couche limite. De légères modications dans le montage (utilisation d'une caméra ultra-rapide et d'un meilleur éclairage) permettrait de déterminer parfaitement l'écoulement stationnaire, et partiellement tout écoulement. Charlie BARRAUD page 47 6.5. CONCLUSION Charlie BARRAUD 2013 page 48 7. Mesure de la vitesse de rotation du cylindre extérieur 7.1 Objectif Le cylindre extérieur étant mis en mouvement par un un autre cylindre puis par un moteur, on met en place un système de mesure de la vitesse de rotation. Pour cela, on aura besoin d'une simple marque noire sur le cylindre : Figure 7.1 Photo du cylindre avec sa marque noire 7.2 Le programme de mesure de la vitesse 1. On dispose une marque noire sur le cylindre. On grave un lm avec beaucoup d'images an de pouvoir y faire une moyenne. 2. On eectue la diérence entre l'image i et i+2 pour éliminer le fond des images : 49 7.3. RÉSULTATS 2013 Figure 7.2 Photo de l'image composée de la soustraction des deux autres 3. On transforme l'image en image binaire à l'aide de im2bw et de la map de l'image "trees" de matlab Figure 7.3 Photo de l'image composée de la soustraction des deux autres et transfor- mée en binaire : il ne reste alors que la marque (en blanc) 4. Il ne reste plus qu'à appliquer le programme correl2d entre les images consécutives et on obtient la vitesse du cylindre à tout instant. 7.3 Résultats Voici la courbe de vitesse instantanée du cylindre extérieur : Charlie BARRAUD page 50 7.3. RÉSULTATS 2013 Figure 7.4 La vitesse de rotation instantanée du cylindre extérieur On se rend compte sur la gure 7.4 qu'il y a des variations de vitesses dues aux imperfections du montage : le cylindre n'est donc pas tout à fait cylindrique. Cependant, les variations représentent 10% de la vitesse moyenne ; on peut donc penser que celles-ci n'aecterons pas l'écoulement. On peut ainsi établir une table de conversion entre le voltage d'entrée et la vitesse de sortie selon : Charlie BARRAUD page 51 7.3. RÉSULTATS 2013 Figure 7.5 Graphique d'équivalence entre voltage et vitesse de rotation du cylindre Charlie BARRAUD page 52 8. Détection de la trajectoire du cylindre intérieur 8.1 Objectif Pour l'étude du régime instationnaire ou d'un régime de cascade, il est nécessaire de déterminer la trajectoire du cylindre intérieur ainsi que sa vitesse en tout temps. 8.2 Le programme 1. On applique un programme de traitement d'image pour passer de la video à des images binaires : Figure 8.1 Le traitement d'image permet de séparer l'image du cylindre (en blanc) du reste : on cherche déjà les bords de l'image grâce à la fonction edge, puis on dilate l'image par application de imdilate, ensuite on remplit les "trous" grâce à imll, on nettoie les bords par imclearboarder, et on lisse les contours grâce à imerode. Enn, on applique un ltre medlt2 qui remplit un pixel de la couleur de la moyenne des 20 autours 2. On détermine le centre de masse de lumière de l'image par application de la commande regionprops ce qui nous donne le centre du cylindre. 53 8.2. LE PROGRAMME 2013 3. Connaissant la position de tous les centres du cylindre et le temps entre chaque image, on est capable de déterminer la trajectoire du cylindre. Figure 8.2 Trajectoire du cylindre : chaque èche représente la vitesse du cylindre à un temps donner et la position du cylindre Charlie BARRAUD page 54 8.3. RÉSULTAT 2013 Figure 8.3 Photo du montage avec en bleu la trajectoire du centre du cylindre au cours du temps 8.3 Résultat Même si le programme fonctionne relativement bien (on fera attention tout de même à avoir un contraste de couleur fort entre le cylindre intérieur et le reste de l'image, donc que celui-ci soit peint en noir), il est très lent. En eet, le traitement d'image est lourd. C'est pourquoi une alternative serait d'utiliser une nouvelle fonction matlab (sur la version 2013) : imndcircles. Charlie BARRAUD page 55 8.3. RÉSULTAT Charlie BARRAUD 2013 page 56 9. Mesure de la vitesse de rotation du cylindre intérieur 9.1 Présentation du problème Nous cherchons ici à mesurer la vitesse de rotation du cylindre interne. Pour cela, on eectue des calculs des images du cylindre dont on on a laissé volontairement une marque blanche sur fond noire. Figure 9.1 Photo du cylindre intérieur dont on veut déterminer sa vitesse de rotation à tout moment 9.2 Algorithme de résolution-Méthode du "glissement" 1. On alloue une image comme image de référence du cylindre intérieur au temps t telle que sur la gure suivante : 57 9.2. ALGORITHME DE RÉSOLUTION-MÉTHODE DU "GLISSEMENT" 2013 Figure 9.2 Photo de l'image prise comme référence an de débusquer le cylindre aux temps suivants 2. On parcoure avec cette image la gure 9.1 au temps t + ∆t, d'abord de 10 pixels en 10 pixels, puis de pixel en pixel, comme si on parcourait un échiquier, passant de case en case et eectuant le parcours sur toutes les cases. À chaque fois, on calcule la corrélation entre l'image de référence de la gure 9.3 et le bout de l'image de départ 9.1 de même taille . Le maximum de tous les maximum de corrélation donnera alors la position du cylindre. Figure 9.3 Photo du cylindre trouvé par la méthode présentée ci-dessus 3. On transforme l'image de référence et l'image trouvée précédemment (celle au temps t + ∆t) en images binaires : Charlie BARRAUD page 58 9.3. CONCLUSION 2013 Figure 9.4 La référence (à gauche) et l'image trouvée (à droite) transformée en binaire 4. On fait une boucle pour faire faire une rotation à l'image de référence tout en mesurant sa corrélation avec l'autre image. La meilleure corrélation donne alors l'angle avec lequel a tourné le cylindre entre t et t + ∆t. 5. Finalement, on met à jour l'image de référence en la remplaçant par celle trouvée précédemment puis on recommence l'opération et ainsi de suite 9.3 Conclusion Si le programme fonctionne bien, et qu'il donne des résultats satisfaisants, il est cependant très lent et donc dicile d'utilisation. Charlie BARRAUD page 59 9.3. CONCLUSION Charlie BARRAUD 2013 page 60 10. Bilan 10.1 Bilan du travail eectué Il m'avait été demandé d'exécuter les tâches suivantes : Construire l'expérience : celle-ci a été construite de manière correcte, même si quelques imperfections persistent. On est capable de déterminer précisément la vitesse du forçage du cylindre extérieur. Déterminer le champ de vitesse par PIV : le programme fonctionne très bien pour un écoulement stationnaire avec une faible vitesse. Par contre, en couche limite et lors d'un écoulement instationnaire, on est incapable de déterminer le champ de vitesse. Pouvoir suivre le cylindre intérieur : le programme fonctionne bien, même si le traitement d'image peut être lourd. Pouvoir mesurer la rotation sur lui même du cylindre intérieur : le programme fonctionne mais très lentement. Il faudrait le reprendre si on envisage de l'utiliser souvent. 10.2 Bilan personnel Si le travail eectué m'a permis de m'enrichir personnellement dans des domaines aussi variés que la PIV, le traitement d'image ou encore le maniement de matlab qui me seront forts utiles pour la suite de mes études, je peux regretter peut-être le manque de moyen par moment, et de ne pas continuer l'étude physique des phénomènes que l'on commençait à observer à la n de mon stage. 61 10.2. BILAN PERSONNEL Charlie BARRAUD 2013 page 62 Bibliographie [1] C. François J.-S. Darrozes. Mécanique des uides incompressibles. Service édition de l'École Nationale Supérieure de Techniques Avancées, 32, boulevard Victor, 75739 Paris Cedex 15, 1998. [2] G. I. Taylor. Stability of a Viscous Liquid Contained between Two Rotating Cylinders. PhD thesis, Phil. Trans. R. Soc. Lond. A, 1923. [3] Mathieu Gibert. Convection thermique turbulente : Panaches et Fluctuations. PhD thesis, École Normale Supérieure de Lyon, 2007. 63 BIBLIOGRAPHIE Charlie BARRAUD 2013 page 64 A. Les fonctions matlab utilisées tout au long de la construction des programmes A.1 Le programme correl2d %********************************************************** % FUNCTION c o r r e l 2 d .m 3 % Usage : [ l a g , x , y ,C] = c o r r e l 2 d ( matrix1 , matrix2 ) % S e a r c h i n g P a t t e r n in Matrix1 . % Compute 2D Cross C o r r e l a t i o n w i t h f f t 2 and i f f t 2 % l a g =[x , y ] a t max(C) ; C=C( x , y ) % Dimensiones son t a l e s que : A( x , y )=A(N,M) ; 8 % rhp , 24 Junio 2002 %********************************************************* f u n c t i o n [ l a g , X, Y,C ] = c o r r e l 2 d (A, B) S = s i z e (A) ; N=S ( 1 ) ; M=S ( 2 ) ; % Matrix s i z e ; 13 %X = l i n s p a c e (−N/2 ,N/2 ,N) ; %Y = l i n s p a c e (−M/2 ,M/2 ,M) ; %X=0:1:N− 1; % X Axis t o g i v e z e r o l a g a t o r i g i n o f (N, M) %Y=0:1:M− 1; o r i g i n o f (N,M) A = A − mean2 (A) ; 18 B = B − mean2 (B) ; % Y Axis t o g i v e z e r o l a g a t % g e t out mean i n t e n s i t y % g e t out mean i n t e n s i t y normA = sum ( sum (A. ^ 2 ) ) ; normB = sum ( sum (A. ^ 2 ) ) ; % t o n o r m a l i z e c r o s s −c o r r . Co = ( f f t s h i f t ( i f f t 2 ( f f t 2 (A) . * c o n j ( f f t 2 (A) ) ) ) ) ; % Corr 2D s h i f t i n g DC t o o r i g i n . C = Co/ ( s q r t ( normA*normB ) ) ; 23 % Corr 2D max i s 1 65 A.2. PROGRAMMES DE CHARGEMENT DES IMAGES [ r , Xo]=max(max( abs (C) ' ) ) ; [ r , Yo]=max(max( abs (C) ) ) ; X= 1 : 1 :N; Y= 1 : 1 :M; o r i g i n o f (N,M) 28 X=X−Xo ; Y=Y−Yo ; M) 2013 % f i n d mean x− l a g % f i n d mean y− l a g % Y Axis t o g i v e z e r o l a g a t % X Axis t o g i v e z e r o l a g a t o r i g i n o f (N, normA = sum ( sum (A. ^ 2 ) ) ; normB = sum ( sum (B. ^ 2 ) ) ; % t o n o r m a l i z e c r o s s −c o r r . Co = f f t s h i f t ( i f f t 2 ( f f t 2 (B) . * c o n j ( f f t 2 (A) ) ) ) ; % Corr 2D s h i f t i n g DC t o o r i g i n . 33 C = Co/ ( s q r t ( normA*normB ) ) ; % Corr 2D max i s 1 [ r , x]=max(max( abs (C) ' ) ) ; [ r , y]=max(max( abs (C) ) ) ; l a g =[X( x ) ,Y( y ) ] ; % f i n d mean x− l a g % f i n d mean y− l a g A.2 Programmes de chargement des images A.2.1 Le programme de chargement des videos en .bin %********************************************************* 2 %** %** LOAD BINARY DATA IMAGES FROM PIXCI− D %** RUN AS : %** %** [X,Y,N,A] = load_ccd2 ( ' F i l e . bin ' ,M) ; 7 %** %** A: image matrix in form A(X,Y,M) %** N: # a v a i l a b l e frames %** M: # frames t o l o a d (N>=M) %** X/Y: x− s i z e /y− s i z e ( p i x e l s ) 12 %** rhp 2002 %********************************************************* f u n c t i o n [ X, Y, N,A] = load_ccd2 ( file_name , M) ; Charlie BARRAUD page 66 A.2. PROGRAMMES DE CHARGEMENT DES IMAGES 2013 f p = f o p e n ( file_name , ' rb ' ) ; 17 N X Y dT File = = = = f r e a d ( fp f r e a d ( fp f r e a d ( fp f r e a d ( fp frames ,1 , ,1 , ,1 , ,1 , ' int32 ' ) ; ' int32 ' ) ; ' int32 ' ) ; ' int32 ' ) ; 22 A=z e r o s (X, Y,M) ; f o r k=1:M, A ( : , : , k ) = f r e a d ( fp , [ X,Y] , ' i n t 1 6 ' ) ; Image from F i l e %% Open Image %% Load %% %% Load %% Load N images ( a v a i l a b l e ) Load X s i z e ( p i x e l s ) Y size ( pixels ) d e l a y (ms) between %% Load a t l e a s t f i r s t end ; f c l o s e ( fp ) ; A.2.2 Programme de correction des videos (puisqu'une image sur deux subissait des décalages de quelques pixels lors de la gravation de la video) %** [X,Y,N,A, B,C] =load_CCD2_2( file_name , M, evenoddx , evenoddy , cx , cy ) %********************************************************* 3 %** %** LOAD BINARY DATA IMAGES FROM PIXCI− D %** RUN AS : %** %** [X,Y,N,A, B,C] = load_CCD2_2 ( ' F i l e . bin ' ,M, evenodd , cx , cy ) ; 8 %** %** A: image matrix in form A(X,Y,M) %** N: # a v a i l a b l e frames %** M: # frames t o l o a d (N>=M) %** X/Y: x− s i z e /y− s i z e ( p i x e l s ) 13 %** rhp 2002 %** %** 2013: There i s an image d i s p l a c e m e n t e v e r y 2 images . %** t h i s new f u n c t i o n c o r r e c t s t h i s e r r o r on t h e v i d e o l o a d i n g %** 18 %** %** B: image matrix in form B(X,Y,M) , c o r r e c t i o n o f %** %** %** the A C: the A Charlie BARRAUD matrix in cy p i x e l s . image matrix in form C(X,Y,M) , c o r r e c t i o n o f matrix in cx and cy p i x e l s . page 67 A.2. PROGRAMMES DE CHARGEMENT DES IMAGES 2013 23 %** evenoddx : 0 − 1: 1 i f t h e odd images are d i s p l a c e d ( x ) , 0 else . %** evenoddy : 0 − 1: 1 i f t h e odd images are d i s p l a c e d ( y ) , 0 else . %** cx : p i x e l s t o c o r r e c t on d i s p l a c e d images %** cy : p i x e l s t o c o r r e c t on d i s p l a c e d images %** 28 %** eg : [X,Y,N,A, B,C] = load_CCD2_2 ( ' Movie . bin ' , 2 0 , 1 , 0 , 1 , 4 ) ; %** %** C o r r e c t s 1 p i x e l on t h e odd images in t h e x d i r e c t i o n and %** c o r r e c t s 4 p i x e l s on t h e even images in t h e y direction . %** 33 %** %** cbarraud & a v i a l 2013 %********************************************************* f u n c t i o n [ X, Y, N, A, B, C] =load_CCD2_2 ( file_name , M, evenoddx , evenoddy , cx , cy ) 38 [ X, Y, N,A]= load_ccd2 ( file_name ,M) ; % The c o r r e c t i o n i s made i n t two s t a g e s , f i r s t y then x f o r k=1: s i z e (A, 3 ) % % 43 end An a u x i l i a r matrix i s c r e a t e d , i t s s i z e i s s l i g t h l y b i g g e r than A ( i t has cy rows o f z e r o s on t h e bottom o f each frame . Z ( : , : , k ) =[A ( : , : , k ) ; z e r o s ( cy , s i z e (A, 2 ) ) ] ; B=A; 48 f o r i=1+evenoddy : 2 : s i z e (A, 3 ) % B s a v e s t h e y− c o r r e c t i o n o f t h e matrix ( o n l y t a k e s t h e % % 53 end odd ( even ) d i s p l a c e d images , t h e r e a s t are t h e same as in t h e o r i g i n a l matrix A) B ( : , : , i )=Z ( cy +1: s i z e (A, 1 )+cy , : , i ) ; clear Z; % Now a t r a n s p o s i t i o n o f t h e matrix a l l o w s t o r e p e a t t h e process of Charlie BARRAUD page 68 A.3. PIV 58 % 2013 c o r r e c t i o n , t h i s time u s i n g cx f o r k=1: s i z e (B, 3 ) aux ( : , : , k )=B ( : , : , k ) ' ; end c l e a r B; B=aux ; 63 c l e a r aux ; 68 f o r k=1: s i z e (A, 3 ) Z ( : , : , k ) =[B ( : , : , k ) ; z e r o s ( cx , s i z e (B, 2 ) ) ] ; end C=B ; f o r i=1+evenoddx : 2 : s i z e (A, 3 ) C ( : , : , i )=Z ( cx +1: s i z e (B, 1 )+cx , : , i ) ; end A.3 PIV A.3.1 Le programme de PIV avec moyenne %** [ B1 , v_moy , v_moy2 ] = moyennepiv ( video , f e n e t r e , d e l t a _ t , diam , lnoise , lo bj ec t ) ; 2 % ************************************************************************** %** FUNCTION moyennepiv %** %** [ B1 , v_moy , v_moy2 ] = moyennepiv ( video , f e n e t r e , d e l t a _ t , diam , lnoise , lo bj ec t ) ; %** 7 %** moyennepiv c a l c u l e l a v i t e s s e moyenne sur un p a r t i t i o n d ' images de %** v i d e o en decoupant chaque image en f e n e t r e x f e n e t r e f e n e t r e s %** d ' i n t e r r o g a t i o n e t en l e s comparant par c o r r e l a t i o n %** %** B1 : v e c t e u r des p o s i t i o n s des c e n t r e s des f e n e t r e s 12 %** v_moy : v i t e s s e moyenne sur chaque f e n e t r e %** v_moy2 : v i t e s s e a b s o l u e sur chaque f e n e t r e %** diam : diametre du c y l i n d r e ( px ) %** %** cbarraud 2013 Charlie BARRAUD page 69 A.3. PIV 17 % 2013 ************************************************************************ f u n c t i o n [ B1 , v_moy , v_moy2 ] = moyennepiv ( video , f e n e t r e , delta_t , diam , l n o i s e , l o b j e c t ) 22 %MOYENNE : l ' ecoulement e t a n t s t a t i o n n a i r e , on e f f e c t u e une mesure de l a %v i t e s s e de l ' ecoulement sur un c e r t a i n nombre d ' images e t on en fai t la %moyenne %a l l o c a t i o n memoire t o t _ l a g t o t=z e r o s ( 2 , f e n e t r e , f e n e t r e , s i z e ( video , 3 ) −1) ; 27 %Traitement des images : p a r t i c l e s t r a c k i n g f o r i =1: s i z e ( video , 3 ) % F i l t r e passe −bas % b p a s s ( image , Longueur − b r u i t , Longueur − o b j e t ) 32 end f o r i =1: s i z e ( video , 3 ) −1 % on c a l c u l e l a v i t e s s e moyenne dans chaque f e n e t r e . % L a g t o t e s t un v e c t e u r contenant l e s v i t e s s e s moyennes % l e u r c e n t r e B1 . 37 end 42 v i d e o b ( : , : , i )=bp ass ( v i d e o ( : , : , i ) , l n o i s e , l o b j e c t ) ; [ l a g t o t , B1 ] = v e l o c i d a d _ s y n t h e s e ( v i d e o b ( : , : , i ) , v i d e o b ( : , : , i +1) , f e n e t r e , d e l t a _ t ) ; t o t _ l a g t o t ( : , : , : , i )=l a g t o t ; media_ventana_1=f l o o r ( s i z e ( video , 1 ) / f e n e t r e ) / 2 ; f o r i =1: f e n e t r e m u l t i p l i c a d o r=i *2 − 1; f o r j =1: f e n e t r e C e n t r o s ( 1 , i , j )=media_ventana_1 * m u l t i p l i c a d o r ; 47 end end media_ventana_2=f l o o r ( s i z e ( video , 2 ) / f e n e t r e ) / 2 ; f o r i =1: f e n e t r e m u l t i p l i c a d o r=i *2 − 1; 52 f o r j =1: f e n e t r e C e n t r o s ( 2 , j , i )=media_ventana_2 * m u l t i p l i c a d o r ; Charlie BARRAUD page 70 A.3. PIV end 2013 end 57 B1=C e n t r o s ; % On supprime l e s v a l e u r s q u i s o n t p l u s grandes ( ou p e t i t e s ) que l a moyenne % p l u s ( ou moins ) l a d e v i a t i o n s t a n d a r d . 62 67 f o r i =1: f e n e t r e f o r k=1: f e n e t r e f o r l =1: s i z e ( video , 3 ) −1 sigma1 = std ( tot_lagtot (1 , i , k , : ) ) ; moy1 = mean ( t o t _ l a g t o t ( 1 , i , k , : ) ) ; sigma2 = std ( tot_lagtot (2 , i , k , : ) ) ; moy2 = mean ( t o t _ l a g t o t ( 2 , i , k , : ) ) ; i f abs ( t o t _ l a g t o t ( 1 , i , k , l )−moy1 )>sigma1 t o t _ l a g t o t ( 1 , i , k , l )=moy1 ; moy1=mean ( t o t _ l a g t o t ( 1 , i , k , : ) ) ; end 72 i f abs ( t o t _ l a g t o t ( 2 , i , k , l )−moy2 )>sigma2 t o t _ l a g t o t ( 2 , i , k , l )=moy2 ; moy2=mean ( t o t _ l a g t o t ( 2 , i , k , : ) ) ; end 77 82 end end end v_moy( 1 , i , k )=mean ( t o t _ l a g t o t ( 1 , i , k , : ) ) ; v_moy( 2 , i , k )=mean ( t o t _ l a g t o t ( 2 , i , k , : ) ) ; % V i t e s s e a b s o l u e sur chaque f e n e t r e 87 v_moy2=z e r o s ( f e n e t r e , f e n e t r e ) ; f o r i =1: f e n e t r e f o r k=1: f e n e t r e v_moy2( i , k )=s q r t (v_moy( 1 , i , k )^2+v_moy( 2 , i , k ) ^2) ; end 92 end s c r s z = get (0 , ' ScreenSize ' ) ; figure ( ' Position ' ,[1 scrsz (4) scrsz (3) scrsz (4) ] ) ; Charlie BARRAUD page 71 A.3. PIV 2013 97 s 1=s u b p l o t ( 2 , 2 , 1 ) ; imagesc ( video ( : , : , 1 ) ) ; colormap gray ; daspect ( [ 1 1 1 ] ) ; h o l d on ; 102 f o r i =1: f e n e t r e −1 l i n e ( [ i * f l o o r ( s i z e ( video , 2 ) / f e n e t r e ) i * f l o o r ( s i z e ( video , 2 ) / f e n e t r e ) ] , [ 1 s i z e ( video , 1 ) ] , ' Color ' , [ 1 0 0 ] ) end 107 112 117 122 127 f o r i =1: f e n e t r e −1 l i n e ( [ 1 s i z e ( video , 2 ) ] , [ i * f l o o r ( s i z e ( video , 1 ) / f e n e t r e ) i * f l o o r ( s i z e ( video , 1 ) / f e n e t r e ) ] , ' Color ' , [ 1 0 0 ] ) end hold o f f s 2=s u b p l o t ( 2 , 2 , 2 ) ; s e t ( gca , ' F o n t Si z e ' , 2 0 ) ; p l o t ( l i n s p a c e ( − 30 ,30 , s i z e (v_moy2 , 1 ) ) , 6 0 / diam*v_moy2( f l o o r ( f e n e t r e /2) +1 ,:) , ' * ' ) ; s e t ( s2 , ' YGrid ' , ' on ' ) ; s e t ( g e t ( s2 , ' XLabel ' ) , ' S t r i n g ' , ' D i s t a n c i a a l Centro [mm] ' , ' F o nt S i z e ' , 2 0 ) ; s e t ( g e t ( s2 , ' YLabel ' ) , ' S t r i n g ' , ' V e l o c i d a d Media [mm/ s ] ' , ' F o n t Si z e ' ,20) ; t i t l e ( ' V e l o c i d a d A b s o l u t a en Linea C e n t r a l H o r i z o n t a l ' ) ; s 3=s u b p l o t ( 2 , 2 , 3 ) ; s e t ( gca , ' F o n t Si z e ' , 2 0 ) ; p l o t ( l i n s p a c e ( − 30 ,30 , s i z e (v_moy2 , 2 ) ) , 6 0 / diam*v_moy2 ( : , f l o o r ( f e n e t r e / 2 ) +1) , ' * ' ) ; s e t ( s3 , ' YGrid ' , ' on ' ) ; s e t ( g e t ( s3 , ' XLabel ' ) , ' S t r i n g ' , ' D i s t a n c i a a l Centro [mm] ' , ' F o nt S i z e ' , 2 0 ) ; s e t ( g e t ( s3 , ' YLabel ' ) , ' S t r i n g ' , ' V e l o c i d a d Media [mm/ s ] ' , ' F o n t Si z e ' ,20) ; t i t l e ( ' V e l o c i d a d A b s o l u t a en Linea C e n t r a l V e r t i c a l ' ) ; s 4=s u b p l o t ( 2 , 2 , 4 ) ; imagesc ( video ( : , : , 1 ) ) ; daspect ( [ 1 1 1 ] ) ; h o l d on ; Charlie BARRAUD page 72 A.3. PIV 132 2013 q u i v e r ( C e n t r o s ( 2 , : , : ) , C e n t r o s ( 1 , : , : ) ,v_moy ( 2 , : , : ) ,v_moy ( 1 , : , : ) , ' g ') ; s e t ( gca , ' YDir ' , ' r e v e r s e ' ) ; % % 137 % % % % % 142 % % % % % 147 % figure ; l o n g e u r f e n e t r e x=f l o o r ( s i z e ( video , 2 ) / f e n e t r e ) ; l o n g e u r f e n e t r e y=f l o o r ( s i z e ( video , 1 ) / f e n e t r e ) ; [ x y z ]= meshgrid ( l o n g e u r f e n e t r e x / 2 : l o n g e u r f e n e t r e x : ( f e n e t r e −1) * l o n g e u r f e n e t r e x+l o n g e u r f e n e t r e x / 2 , . . . l o n g e u r f e n e t r e y / 2 : l o n g e u r f e n e t r e y : ( f e n e t r e −1) * l o n g e u r f e n e t r e y+l o n g e u r f e n e t r e y / 2 , [ 0 1 ] ) ; u ( : , : , 1 )=v_moy ( 2 , : , : ) ; v ( : , : , 1 )=v_moy ( 1 , : , : ) ; w ( : , : , 1 )=z e r o s ( s i z e ( v ) ) ; u ( : , : , 2 ) =0; v ( : , : , 2 ) =0; w ( : , : , 2 ) =0; c o n e p l o t ( x , y , z , u , v , w, x , y , z , s q r t ( u.^2+v . ^ 2 ) , 1 ) ; s h a d i n g i n t e r p ; colorbar end A.3.2 Le programme de traitement d'image bpass 1 f u n c t i o n r e s = bp as s ( a r r , l n o i s e , l o b j e c t ) % % % 6 % % % % % 11 % % % % % ; NAME: ; bpass ; PURPOSE: ; Implements a r e a l −space bandpass f i l t e r which suppress ; p i x e l n o i s e and long −w a v e l e n g t h image variations while ; retaining information of a c h a r a c t e r i s t i c s i z e . ; ; CATEGORY: ; Image P r o c e s s i n g ; CALLING SEQUENCE: ; r e s = b p a s s ( image , l n o i s e , l o b j e c t ) ; INPUTS : Charlie BARRAUD page 73 A.3. PIV 16 % ; % ; % ; % ; % ; 21 % ; % % % % 26 % % % % % 31 % % % % % 36 % % % % % 41 % % % filtered . pixels . length should f l o a t i n g value . than a t y p i c a l 2013 image : The two−d i m e n s i o n a l array t o be l n o i s e : C h a r a c t e r i s t i c l e n g t h s c a l e o f n o i s e in A d d i t i v e n o i s e a v er a g e d over t h i s v a n i s h . MAy assume any p o s i t i v e l o b j e c t : A l e n g t h in p i x e l s somewhat l a r g e r o b j e c t . Must be an odd v a l u e d i n t e g e r . ; OUTPUTS: ; res : f i l t e r e d image . ; PROCEDURE: ; simple ' wavelet ' convolution y i e l d s s p a t i a l bandpass f i l t e r i n g . ; NOTES: ; MODIFICATION HISTORY: ; Written by David G. Grier , The U n i v e r s i t y o f Chicago , 2/93. ; G r e a t l y r e v i s e d v e r s i o n DGG 5/95. ; Added / f i e l d keyword JCC 12/95. ; Memory o p t i m i z a t i o n s and f i x e d n o r m a l i z a t i o n , DGG 8/99. Converted t o Matlab by D. B l a i r 4/2004 − i s h Fixed some bugs w i t h conv2 t o make s u r e t h e e d g e s are removed D.B. 6/05 Removed i n a d v e r t e n t image s h i f t ERD 6/05 Added t h r e s h o l d t o o u t p u t . Now s e t s a l l p i x e l s with n e g a t i v e v a l u e s e q u a l t o z e r o . Gets r i d o f r i n g i n g which was d e s t r o y i n g sub − p i x e l accuracy , u n l e s s window s i z e in c n t r d was p i c k e d p e r f e c t l y . Now c e n t r d g e t s sub − p i x e l accuracy much more r o b u s t l y ERD 8/24/05 ; ; This code ' b p a s s . pro ' i s c o p y r i g h t 1997 , John C. Crocker and ; David G. Grier . I t s h o u l d be c o n s i d e r e d ' freeware ' − and may be Charlie BARRAUD page 74 A.3. PIV % ; % 46 % 51 56 2013 d i s t r i b u t e d f r e e l y in i t s o r i g i n a l form when p r o p e r l y attributed . b = double ( l n o i s e ) ; w = round ( l o b j e c t ) ; N = 2*w + 1 ; % Gaussian C on vo l ut io n k e r n e l sm = 0 :N− 1; r = (sm − w) / ( 2 * b ) ; gx = exp ( − r . ^ 2 ) / ( 2 * b * s q r t ( p i ) ) ; gy = gx ' ; %Boxcar a v e r a g e k e r n e l : background 61 bx = z e r o s ( 1 ,N) by = bx ' ; + 1/N; % Do some c o n v o l u t i o n s w i t h t h e matrix and our k e r n e l s 76 res = arr ; g = conv2 ( r e s , gx , ' v a l i d ' ) ; tmpg = g ; g = conv2 ( tmpg , gy , ' v a l i d ' ) ; tmpres = r e s ; r e s = conv2 ( tmpres , bx , ' v a l i d ' ) ; tmpres = r e s ; r e s = conv2 ( tmpres , by , ' v a l i d ' ) ; tmpg= 0 ; tmpres =0; a r r _ r e s=z e r o s ( s i z e ( a r r ) ) ; arr_g = z e r o s ( s i z e ( a r r ) ) ; 81 a r r _ r e s ( ( l o b j e c t +1) : end− l o b j e c t , ( l o b j e c t +1) : end− l o b j e c t ) = r e s ; arr_g ( ( l o b j e c t +1) : end− l o b j e c t , ( l o b j e c t +1) : end− l o b j e c t ) = g ; %r e s = arr_g−arr_res ; r e s=max( arr_g −a r r _ r e s , 0 ) ; 66 71 end Charlie BARRAUD page 75 A.3. PIV 2013 A.3.3 Le petit programme de calcul de la vitesse utilisant correl2d 1 %** [ l a g t o t , B1 ] = v e l o c i d a d _ s y n t h e s e (A, B, ventanas , time ) % ************************************************************************ %** %** VELOCIDAD_SYNTHESE C a l c u l a t e in each window t h e speed o f t h e fluid %** u s i n g a c o r r e l a r ? t i o n method o f a two image sequence 6 %** %** Run as : %** [ l a g t o t , B1 , B2 ] = v e l o c i d a d _ s y n t h e s e (A, B, ventanas , time ) %** %** 11 %** A : f i r s t image %** B : second image %** ventanas : number o f windows t o s h a r e in t h e image %** time : time between t h e s h o t o f t h e images %** l a g t o t : c o n t a i n s t h e speed o f p a r t i c l e s in a l l t h e interrogation 16 %** windows %** B1 : c e n t e r s o f a l l windows %** %** cbarraud 2013 % ************************************************************************ 21 f u n c t i o n [ l a g t o t , B1 ] = v e l o c i d a d _ s y n t h e s e (A, B, ventanas , time ) %c u t o f a l l windows in t h e two images 26 [ F1 , B1]= v e n t a n a c y l i n d r e (A, v e n t a n a s ) ; [ F2 ,~]= v e n t a n a c y l i n d r e (B, v e n t a n a s ) ; %memory a l l o c a t i o n l a g t o t=z e r o s ( 2 , ventanas , v e n t a n a s ) ; 31 %c a l c u l a t i o n o f t h e speed in each window f o r i =1: v e n t a n a s f o r k=1: v e n t a n a s Charlie BARRAUD page 76 A.3. PIV 36 end end 2013 [ l a g ,~ ,~ ,~]= c o r r e l 2 d ( F1 ( : , : , i , k ) , F2 ( : , : , i , k ) ) ; l a g t o t ( : , i , k )=l a g / time ; end A.3.4 Le programme d'achage de toutes les fenêtres d'interrogation découpée pour vérier si l'image est entièrement recouverte %** f u n c t i o n [ ] = l e e r v e n t a n a (F) % ************************************************************************** 3 %** %**LEERVENTANA d i s p l a y a l l t h e i n t e r r o g a t i o n windows on t h e same image t o %make v e r i f i c a t i o n %** %** Run as : 8 %** [ ] = l e e r v e n t a n a (F) %** %** F : matrix c o n t a i n i n g a l l t h e windows ( i , i n d e x o f t h e v e r t i c a l window %** number , k , i n d e x o f t h e h o r i z o n t a l window number ) %** 13 %** cbarraud 2013 % ************************************************************************** f u n c t i o n [ ] = l e e r v e n t a n a (F) 18 A=z e r o s ( s i z e (F , 1 ) , s i z e (F , 2 ) ) ; f o r k=1: s i z e (F , 3 ) f o r i =1: s i z e (F , 3 ) A=A+F ( : , : , i , k ) ; end 23 i m a g e s c (A) ; colormap ( gray ) ; end Charlie BARRAUD page 77 A.4. DÉTERMINATION DE LA VITESSE DE ROTATION DU CYLINDRE EXTÉRIEUR 2013 A.4 Détermination de la vitesse de rotation du cylindre extérieur %** [A, v , s ] = s p e e d c y l i n d e r ( video , d e l t a _ t , c on v er si on , mult ) % ************************************************************************ %** 4 %** CALCULATE THE ROTATION SPEED OF THE OUTER CYLINDER %** %** RUN AS : %** [A, v , s ] = s p e e d c y l i n d e r ( video , d e l t a _ t , c on ve r si on , mult ) %** 9 %** v : mean speed %** s : standard deviation %** v i d e o : v i d e o sequence t o p r o c e s s ( matrix 3D (M,N, I ) : MxN p i x e l s , %** I frames , gray , not r g b ) %** d e l t a _ t : time between two frames 14 %** c o n v e r s i o n : c o n v e r s i o n p x l −mm (1mm=c o n v e r s i o n s p i x e l s ) %** %** cbarraud 2013 % ************************************************************************ 19 f u n c t i o n [ A, v , s ] = s p e e d c y l i n d e r ( video , delta_t , c o n v e r s i o n , mult ) %memory a l l o c a t i o n 24 BW=z e r o s ( s i z e ( v i d e o ) ) ; D=z e r o s ( s i z e ( v i d e o ) ) ; %Load o f t h e map load t r e e s %Image p r o c e s s i n g : we d e l e t e t h e backgrounds e l e m e n t s by s u b t a c t i n g each 29 %time two c o n s e c u t i v e images , t h e we change t h e t h e images in binary %images . Charlie BARRAUD page 78 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE 34 2013 f o r i =1: s i z e ( video , 3 ) −mult D ( : , : , i )=v i d e o ( : , : , i )− v i d e o ( : , : , i+mult ) ; BW( : , : , i )= im2bw (D ( : , : , i ) ,map , 0 . 9 9 9 9 9 9 ) ; end 39 44 A=z e r o s ( s i z e ( video , 3 ) −mult − 1 ,1) ; f o r j =1: s i z e ( video , 3 ) −mult −1 [ l a g , ~ , ~ , ~ ] = c o r r e l 2 d (BW( : , : , j ) ,BW( : , : , j +1) ) ; A( j )=s q r t ( l a g ( 1 ) ^2+ l a g ( 2 ) ^2) / d e l t a _ t / c o n v e r s i o n ; end % % % % 49 % % % % % 54 a=max(A) ; b=s i z e (A, 1 ) ; f i g u r e (1) ; [AX, H1 , H2 ] = p l o t y y ( 1 : s i z e (A) ,A, 1 : s i z e (A) ,A/(60 * p i ) , ' p l o t ' ) x l a b e l ( ' Numero de l image ' ) s e t ( g e t (AX( 1 ) , ' Y l a b e l ' ) , ' S t r i n g ' , 'mm/s ' ) s e t ( g e t (AX( 2 ) , ' Y l a b e l ' ) , ' S t r i n g ' , ' t o u r s /s ' ) s e t (AX( 1 ) , 'YLim ' , [ 0 a +20]) s e t (AX( 2 ) , 'YLim ' , [ 0 a /(60 * p i ) + 0 . 3 ] ) v=mean (A) ; s=s t d (A) ; 59 % F=( f f t (A) ) ; % f=l i n s p a c e ( 0 , s i z e ( video , 3 ) , l e n g t h (F) ) ; % f i g u r e (3) ; % p l o t ( f , abs (F) ) 64 end A.5 Détermination de la trajectoire du cylindre A.5.1 Détermination de la trajectoire %** [A, B,C] = t r a j e c t o r y c e n t e r o f l i g h t m a s s (F , d e l t a _ t ) % ************************************************************************** Charlie BARRAUD page 79 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE 2013 %** C a l c u l a t e t h e i n n e r c y l i n d e r t r a j e c t o r y by doing t h e calculation , after 4 %** a s e r i e o f image p r o c e s s i n g , o f t h e c e n t e r o f l i g h t mass %** %** RUN as : %** [A,B] = t r a j e c t o r y c e n t e r o f l i g h t m a s s (F , d e l t a _ t ) %** 9 %** A : speed o f t h e i n n e r c y l i n d e r %** B : c e n t e r c o o r d i n a t e s f o r a l l sequence %** C : c e n t e r s o f t h e i n n e r c y l i n d e r among time %** F : v i d e o sequence t o t r e a t ( matrix 3D (M,N, I ) : MxN p i x e l s , I frames , %** gray , not r g b ) 14 %** d e l t a _ t : time betwenn each frame %** %** cbarraud 2013 % ************************************************************************ 19 24 f u n c t i o n [ A, B,C] = t r a j e c t o r y c e n t e r o f l i g h t m a s s (F , d e l t a _ t ) %Memory a l l o c a t i o n A=z e r o s ( s i z e (F , 3 ) − 1 ,2) ; B=z e r o s ( s i z e (F , 3 ) − 1 ,2) ; C=z e r o s ( s i z e (F , 3 ) − 1 ,2) ; %f i l t r a t i o n o f t h e p i c t u r e s [ F ] = f i l t e r s (F) ; %c a l c u l a t i o n o f t h e i n i t i a l c e n t e r ( c e n t e r o f l u z mass ) 29 s = r e g i o n p r o p s ( l o g i c a l (F ( : , : , 1 ) ) , ' c e n t r o i d ' ) ; c = [ s . Centroid ] ; new_centre =[ c ( 2 ) c ( 1 ) ] ; 34 39 %c a l c u l o f t h e speed f o r i =1: s i z e (F , 3 ) −1 [ l a g ,~ ,~ ,~]= c o r r e l 2 d (F ( : , : , i ) ,F ( : , : , i +1) ) ; A( i , : ) =l a g *1/ d e l t a _ t ; %update o f t h e c e n t e r s = r e g i o n p r o p s ( l o g i c a l (F ( : , : , i +1) ) , ' c e n t r o i d ' ) ; c = [ s . Centroid ] ; Charlie BARRAUD page 80 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE 2013 new_centre1 =[ c ( 2 ) c ( 1 ) ] ; 44 %B c o n t a i n t h e c e n t e r o f t h e segment between t h e i n n e r c y l i n d e r centers of %two c o n s e c u t i v e frames B( i , : ) =(new_centre1+new_centre ) / 2 ; C( i , : ) =new_centre1 ; 49 end 54 %d i s p l a y o f t h e speed in each frame q u i v e r (B ( : , 1 ) ,B ( : , 2 ) ,A( : , 1 ) ,A( : , 2 ) ) ; 59 %d i s p l a y c y l i n d e r path . figure ; p l o t (C ( : , 2 ) ,C ( : , 1 ) ) ; a x i s ( [ 1 s i z e (F , 2 ) 1 s i z e (F , 1 ) ] ) ; s e t ( gca , ' YDir ' , ' r e v e r s e ' ) ; end A.5.2 Traitement d'image %** [BW2s] = f i l t e r s ( v i d e o ) % ************************************************************************** %** %** IMAGE PROCESSING TO TRACK THE INNER CYLINDER 5 %** %** RUN AS : %** [BW2s] = f i l t e r s ( v i d e o ) %** %** BW2s : p r o c e s s e d v i d e o sequence 10 %** v i d e o : v i d e o sequence t o p r o c e s s ( matrix 3D (M,N, I ) : MxN p i x e l s , %** I frames , gray , not r g b ) %** %** cbarraud 2013 Charlie BARRAUD page 81 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE % 15 2013 ************************************************************************ f u n c t i o n [ BW2s ] = f i l t e r s ( v i d e o ) %memory a l l o c a t i o n BWs=z e r o s ( s i z e ( v i d e o ) ) ; 20 BWsdil=z e r o s ( s i z e ( v i d e o ) ) ; BWdfill=z e r o s ( s i z e ( v i d e o ) ) ; BWnobord=z e r o s ( s i z e ( v i d e o ) ) ; BWfinal=z e r o s ( s i z e ( v i d e o ) ) ; BW2s=z e r o s ( s i z e ( v i d e o ) ) ; 25 %d e f i n i t i o n o f t h e fudgeFactor , se90 , se0 : parameters f o r t h e image %p r o c e s s i n g 30 fudgeFactor =0.8; se90 = s t r e l ( ' l i n e ' , 3 , 90) ; se0 = s t r e l ( ' l i n e ' , 3 , 0) ; %We a p p l y t h i s f i l t e r t o t h e v i d e o : 35 f o r i =1: s i z e ( video , 3 ) %d e t e c t i o n o f t h e contour [ ~ , t h r e s h o l d ] = edge ( v i d e o ( : , : , i ) , ' s o b e l ' ) ; BWs ( : , : , i ) = edge ( v i d e o ( : , : , i ) , ' s o b e l ' , t h r e s h o l d * f u d g e F a c t o r ) ; 40 %d i l a t a t i o n o f t h e p i c t u r e BWsdil ( : , : , i ) = i m d i l a t e (BWs ( : , : , i ) , [ s e 9 0 s e 0 ] ) ; %we f i l l in t h e h o l e s 45 BWdfill ( : , : , i ) = i m f i l l ( BWsdil ( : , : , i ) , ' h o l e s ' ) ; %we g e t r i d o f t h e o b j e c t s on t h e s i d e s BWnobord ( : , : , i )= i m c l e a r b o r d e r ( BWdfill ( : , : , i ) , 4 ) ; 50 % Smooth o f t h e c o n t o u r s seD = s t r e l ( ' diamond ' , 1 ) ; BWfinal ( : , : , i ) = imerode ( BWnobord ( : , : , i ) , seD ) ; BWfinal ( : , : , i ) = imerode ( BWfinal ( : , : , i ) , seD ) ; Charlie BARRAUD page 82 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE 55 60 2013 end %We g e t r i d o f t h e n o i s e t h a n k s t o t h e m e d f i l t 2 f o n c t i o n f o r i =1: s i z e ( video , 3 ) BW2s ( : , : , i ) = m e d f i l t 2 ( BWfinal ( : , : , i ) , [ 2 0 2 0 ] ) ; end end A.5.3 Création d'une image articielle : cercle blanc sur fond noir %** [A] = c r e a t i o n c y l i n d e r ( c e n t r e , rayon , s i z e ) % ************************************************************************** 3 %** %** CREATIONCYLINDER c r e a t e a w h i t e c y l i n d e r on a b l a c k %** %** %** 8 %** %** %** %** %** 13 %** %** % 18 23 background Run as : [A] = c r e a t i o n c y l i n d e r ( c e n t r e , rayon , s i z e ) centre : center of the cylinder rayon : r a d i u s o f t h e c y l i n d e r s i z e : s i z e o f t h e image A : f i n a l image cbarraud 2013 ************************************************************************** f u n c t i o n [A] = c r e a t i o n c y l i n d e r ( c e n t r e , rayon , s i z e ) A=z e r o s ( s i z e , s i z e ) ; f o r a =1: s i z e f o r b=1: s i z e i f s q r t ( ( a− c e n t r e ( 1 ) ) ^2+(b− c e n t r e ( 2 ) ) ^2)<rayon A( a , b ) =255; end end Charlie BARRAUD page 83 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE 2013 28 end end A.5.4 Création d'un lm à partir des images articielles (spirale) %** % [A,C] = t r a j _ a r t i f i c i a l ( a , b , rayon , s i z e , nb_image ) ************************************************************************ %** 4 %** TRAJ_ARTIFICIELLE c r e a t e a v i d e o sequence ( w i t h n o i s e ) where t h e i n n e r c y l i n d e r does %** a s p i r a l as t r a j e c t o r y %** %** Run as : %** [A,C] = t r a j _ a r t i f i c i a l ( a , b , rayon , s i z e , nb_image ) 9 %** %** a : a m p l i t u d e %** b : " time " a m p l i t u d e %** rayon : c y l i n d e r r a d i u s %** s i z e : s i z e o f t h e image 14 %** nb_image : number o f p i c t u r e s in t h e v i d e o %** %** A : v i d e o sequence o f t h e s p i r a l %** C : c o n t a i n s t h e c e n t e r s o f each i n n e r c y l i n d e r in a l l t h e sequence %** 19 %** %** cbarraud 2013 % ************************************************************************ 24 f u n c t i o n [ A, C] = t r a j _ a r t i f i c i a l ( a , b , rayon , s i z e , nb_image ) B=z e r o s ( s i z e , s i z e , nb_image ) ; A=z e r o s ( s i z e , s i z e , nb_image ) ; centre_image =[ s i z e /2 s i z e / 2 ] ; 29 C=z e r o s ( 2 , nb_image ) ; f o r i =1: nb_image Charlie BARRAUD page 84 A.5. DÉTERMINATION DE LA TRAJECTOIRE DU CYLINDRE t=i * 3 . 1 4 / 6 ; x=f l o o r ( a * exp ( b* t ) * c o s ( t ) ) ; y=f l o o r ( a* exp ( b* t ) * s i n ( t ) ) ; 34 39 2013 B ( : , : , i )=c r e a t i o n c y l i n d r e ( [ y x]+ centre_image , rayon , s i z e ) ; A ( : , : , i )=i m n o i s e (B ( : , : , i ) , ' g a u s s i a n ' ) ; C ( : , i ) =[y x]+ centre_image ; end end A.5.5 Calcul des erreurs entre trajectoire articielle et calculée %** [ e ] = e r r o r s (A,B) 2 % ************************************************************************** %** ERROR c a l c u l a t e t h e e r r o r between t h e images o f s i n t h e s i s and t h e ones %** c a l c u l a t e d w i t h t h e c o r r e l a t i o n method %** %** Run as : 7 %** [ e ] = e r r o r s (A,B) %** %** A : matrix o f r e f e r e n c e %** B : matrix o f t h e c a l c u l a t i o n %** 12 %** e : e r r o r %** cbarraud 2013 % ************************************************************************** 17 f u n c t i o n [ e ] = e r r o r s (A, B) n b _ c a l c u l=s i z e (A, 2 ) ; e=z e r o s ( 2 , n b _ c a l c u l ) ; 22 f o r i =1: n b _ c a l c u l e ( 1 , i ) =(A( 1 , i )−B( 1 , i ) ) /A( 1 , i ) ; %e r r e u r s e l o n y e ( 2 , i ) =(A( 2 , i )−B( 2 , i ) ) /A( 2 , i ) ; %e r r e u r s e l o n x Charlie BARRAUD page 85 A.6. DÉTERMINATION DE LA VITESSE DE ROTATION DU CYLINDRE INTÉRIEUR 27 32 2013 end figure (1) ; p l o t ( 1 : nb_calcul , e ( 1 , : ) , ' * ' ) ; t i t l e ( ' y ' ) ; figure (2) ; p l o t ( 1 : nb_calcul , e ( 2 , : ) , ' * ' ) ; t i t l e ( ' x ' ) ; end A.6 Détermination de la vitesse de rotation du cylindre intérieur 1 %** [ omega ] = r o t a t i o n ( video ,R, d e l t a _ t , l ) % %** %** %** 6 %** %** %** %** %** 11 %** %** %** %** %** 16 % ************************************************************************ CALCULATE t h e mean r o t a t i o n o f t h e i n n e r c y l i n d e r . [ omega ] = r o t a t i o n ( video ,R, d e l t a _ t , l ) v i d e o : v i d e o sequence t o a n a l y s e R : r e f e r e n c e image , t h e i n n e r c y l i n d e r C a r e f u l : R must be a s qu a re d matrix d e l t a _ t : time between each frame l : l a g between each i t e r a t i o n omega : mean r o t a t i o n speed 2013 cbarraud ************************************************************************ f u n c t i o n [ omega ] = r o t a t i o n ( video , R, delta_t , l ) 21 %memory a l l o c a t i o n s=s i z e (R, 1 ) ; a=s i z e ( video , 1 ) ; a2=s i z e ( video , 2 ) ; maximo=z e r o s ( a , a ) ; omega=z e r o s ( 1 , s i z e ( video , 3 ) −1) ; Charlie BARRAUD page 86 A.6. DÉTERMINATION DE LA VITESSE DE ROTATION DU CYLINDRE INTÉRIEUR 26 2013 l 1 =10;%l a g o f t h e f i r s t d e t e c t i o n ( must be between 5 and 10) f u d g e F a c t o r = 0 . 6 ; %parameter f o r t h e edge f u n c t i o n %i t e r a t i o n : we s l i p t h e r e f e r e n c e image on t h e whole p i c t u r e t o t e s t with 31 % a l a g o f l1 , which i s a c o a r s e s e a r c h . Then , we r e f i n e i t w i t h the l lag . f o r j =1: s i z e ( video , 3 ) −1 %Image p r o c e s s i n g f o r R t o a l l o w i t a r o t a t i o n w i t h o u t b l a c k edge 36 % appearance . [ ~ , t h r e s h o l d ] = edge (R, ' s o b e l ' ) ; Rbin= edge (R, ' s o b e l ' , t h r e s h o l d * f u d g e F a c t o r ) ; 41 %Each time , we c a l c u l a t e t h e c o r r e l a t i o n between b o t h o f them %( t h e c o r r e l a t i o n i s k e p t in t h e C matrix ) . Then , we t a k e i t s maximum which %i s p l a c e d in t h e matrix maimo . 46 51 f o r i =1: f l o o r ( ( a−s ) / l 1 )+1 f o r k=1: f l o o r ( ( a2−s ) / l 1 )+1 [ ~ , ~ , ~ ,C] = c o r r e l 2 d (R, v i d e o ( l 1 * ( i − 1)+1: l 1 * ( i − 1)+s , l 1 * ( k − 1)+1: l 1 * ( k − 1)+s , j +1) ) ; maximo ( i , k )=max(C ( : ) ) ; end end %We s e a r c h f o r t h e maximum o f c o r r e l a t i o n between a l l t h e maximum %( which c o r r e s p o n d s t o t h e r e f e r e n c e image ) , t h e we f i n d i t s position . 56 [ ~ , p o s i t i o n ] = max( maximo ( : ) ) ; [m, n ] = i n d 2 s u b ( s i z e ( maximo ) , p o s i t i o n ) ; %Update o f t h e image in which we have t o f i n d t h e r e f e r e n c e v i d e o p r i m e=v i d e o ( l 1 * (m− 1)+1: l 1 * (m− 1)+s , l 1 * ( n − 1)+1: l 1 * ( n − 1)+s , j +1) ; Charlie BARRAUD page 87 A.6. DÉTERMINATION DE LA VITESSE DE ROTATION DU CYLINDRE INTÉRIEUR 2013 61 %We r e f i n e t h e s e a r c h aprime=s i z e ( videoprime , 1 ) ; a2prime=s i z e ( videoprime , 2 ) ; f o r i =1: f l o o r ( ( aprime −s ) / l )+1 f o r k=1: f l o o r ( ( a2prime −s ) / l )+1 [ ~ , ~ , ~ ,C ] = c o r r e l 2 d (R, v i d e o p r i m e ( l * ( i − 1)+1: l * ( i − 1)+ s , l * ( k − 1)+1: l * ( k − 1)+s ) ) ; maximo ( i , k )=max(C ( : ) ) ; 66 71 end end [ ~ , p o s i t i o n ] = max( maximo ( : ) ) ; [m, n ] = i n d 2 s u b ( s i z e ( maximo ) , p o s i t i o n ) ; 76 %update o f t h e r e f e r e n c e image Rprime=v i d e o p r i m e ( l * (m− 1)+1: l * (m− 1)+s , l * ( n − 1)+1: l * ( n − 1)+s ) ; %Image p r o c e s s i n g f o r new R t o a l l o w i t t o be compared w i t h t h e r o t a t e d R. 81 maximo=z e r o s ( 1 , 9 0 ) ; [ ~ , t h r e s h o l d ] = edge ( Rprime , ' s o b e l ' ) ; Rprimebin= edge ( Rprime , ' s o b e l ' , t h r e s h o l d * f u d g e F a c t o r ) ; 86 %Ro t a t i o n o f t h e r e f e r e n c e image f o r i =1:90 %c a r e f u l : t h e v a l u e o f end o f t h e r o t a t i o n has t o be adjusted ! 91 Rrot=i m r o t a t e ( Rbin , i , ' b i l i n e a r ' , ' crop ' ) ; [ ~ , ~ , ~ ,C ] = c o r r e l 2 d ( Rprimebin , Rrot ) ; maximo ( i )=max(max( abs (C) ) ) ; end %We s e a r c h f o r t h e maximum o f c o r r e l a t i o n [ ~ , p o s i t i o n ] = max( maximo ) ; 96 omega ( j )=p o s i t i o n / d e l t a _ t ; %update o f t e h r e f e r e n c e image R=Rprime ; i m a g e s c ( Rprimebin ) Charlie BARRAUD page 88 A.6. DÉTERMINATION DE LA VITESSE DE ROTATION DU CYLINDRE INTÉRIEUR 2013 101 end %p l o t o f t h e r o t a t i o n speed between each p i c t u r e 106 figure (1) ; p l o t ( omega , ' * ' ) a x i s ( [ 0 120 200 9 0 0 ] ) end Charlie BARRAUD page 89