... | ... | @@ -8,8 +8,33 @@ L'objectif de ce projet est d'analyser une vidéo d'une chambre à étincelles e |
|
|
|
|
|
Après avoir reconstruit les trajectoires des particules incidentes, vous pourrez analyser certaines propriétés statistiques de cette population, par exemple la distribution angulaire de celle-ci.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
# Instructions
|
|
|
|
|
|
TBD |
|
|
\ No newline at end of file |
|
|
## Outils
|
|
|
|
|
|
1. Le package [`opencv-python`](https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html) permet de manipuler des images et des vidéos. Pour ce projet, vous devrez au minimum utiliser les outils suivants:
|
|
|
- [VideoCapture](https://docs.opencv.org/4.x/dd/d43/tutorial_py_video_display.html): classe permettant d'intéragir avec une video.
|
|
|
- Cette classe permet de charger les images de la vidéo au format BGR (blue green red). Dans ce format, chaque pixel est encodé dans une matrice (liste de liste) comme une liste de trois valeurs entre 0 et 255, chacune de ces valeurs représentent respectivement l'intensité des couleurs bleu, rouge et verte.
|
|
|
- [inRange](https://docs.opencv.org/4.x/df/d9d/tutorial_py_colorspaces.html) permet de filtrer une image au format [HSV](https://en.wikipedia.org/wiki/HSL_and_HSV) pour ne garder que certaines composantes (en fonction de leur teinte, saturation et luminosité).
|
|
|
2. Dans ce projet, vous allez devoir analyser toutes les frames d'une vidéo afin de sélectionner certaines frames contenant le passage d'une particule. Cependant, si vous tentez de charger toutes les images en mémoire (en créant une liste par exemple), vous risquez de rencontrer des problèmes de mémoire. Pour éviter ce problème, vous devrez utiliser un générateur.<br>
|
|
|
Un [générateur](https://docs.python.org/3.13/reference/datamodel.html#generator-functions) est une fonction produisant un objet iterable dont les valeurs successives sont données par la commande `yield`. Par exemple, dans le code suivant, la fonction `range_even` crée un générateur qui produira itérativement tous les entiers pairs plus petits que `n`. L'intérêt est que l'ensemble des entiers pairs n'a pas dû être calculé et ne doit donc pas être gardé en mémoire.
|
|
|
```python
|
|
|
def range_even(n):
|
|
|
num = 1
|
|
|
while num < n:
|
|
|
if num%2 == 0:
|
|
|
yield num
|
|
|
num += 1
|
|
|
|
|
|
for i in range_even(10):
|
|
|
print(i) # out: 2, 4, 6, 8
|
|
|
```
|
|
|
|
|
|
## Consignes
|
|
|
|
|
|
1. Créez un script qui, sur base de la vidéo de la chambre à étincelles en action, sauvegarde dans un dossier les frames contenant le passage d'une particule.
|
|
|
2. À l'aide d'une régression linéaire, interpolez les pixelles correspondant au passage d'une particule afin de reconstruire sa trajectoire.
|
|
|
3. Analyser la distribution angulaire des particules.
|
|
|
4. À la place d'une régression linéaire, utilisez une [transformée de Hough](https://docs.opencv.org/4.x/d6/d10/tutorial_py_houghlines.html) afin d'identifier des paternes rectilignes dans les données. Comparez ces deux approches. |
|
|
\ No newline at end of file |