LucasJacquier / LumIn-microscopie-fluorescence

GNU General Public License v3.0
1 stars 1 forks source link

Normalisation du fond #7

Open LucasJacquier opened 2 years ago

LucasJacquier commented 2 years ago

Dans la thèse de Nicolas, il est proposé une méthode pour normaliser le fond. Deux méthodes sont proposées pour l'estimation du fond : le rolling-ball et la moyenne locale (après la moyenne sur un carré de 49 pixels, une convolution centrée sur ce pixel peut être réalisée). Il y a deux différences entre ces méthodes, le RB suit les minimums alors que le ML suit la moyenne du fond. L'autre différence est le traitement des maximums d'intensité. La ML dilue le maximum dans le fond, donc en retranchant le fond le voisinage des pics se retrouve avec une faible intensité, ce qui permet d'isoler les fluorophores.

La thèse s'intéresse plus spécifiquement à ML, je vais commencer par ça.

LucasJacquier commented 2 years ago

J'ai testé la méthode de ML pour estimer le fond. L'image obtenue ressemble à celle obtenue par celle de la thèse de Nicolas. J'ai tenté d'éliminer le fond par une soustraction arithmétique du fond mais je suis pas convaincu par le résultat. Je vais essayer de trouver une seconde méthode.

En attendant, j'ai aussi commencé à mettre à jour le README.

LucasJacquier commented 2 years ago

utiliser la librairie opencv

Essayer avec différentes valeurs 7, 25, 50. Soustraire arithmétiquement les valeurs du fond devrait suffire. Trouver une fonction pour faire une convolution gaussienne.

LucasJacquier commented 2 years ago

mettre les images avec les trois critères de taille : image brute, fond, image nette.

LucasJacquier commented 2 years ago

si c'est facile à faire, essayer rolingball

LucasJacquier commented 2 years ago

tester aussi une méthode de convolution gaussienne (3ème méthode à part). pas faire de feat gaussien sur toute l'image, ca c'est inutile Il existe une fonction toute faite pour faire les convolutions. Tester les trois types de convolutions.

LucasJacquier commented 2 years ago

@deepcharles

LucasJacquier commented 2 years ago

J'ai commencé par me renseigner sur les convolutions et les filtres convolutifs. Ce site donne des infos pas mal : 'https://www.f-legrand.fr/scidoc/docmml/image/filtrage/convolution/convolution.html' Il explique ce qu'est le filtre par convolution et il donne une fonction pour les faire.

https://docs.opencv.org/4.x/d4/d13/tutorial_py_filtering.html Ce lien là donne différentes fonctions de filtrage par convolution. je vais utiliser ces fonctions je pense. Il suggère aussi la fonction de convolution par médiane qui peut être utilisée pour éliminer le bruit en poivre et sel.

LucasJacquier commented 2 years ago

Je viens de tester la fonction filter2D. Je suis pas sur de savoir précisément ce qu'elle fait, à vérifier. Je sais pas non plus le rôle du -1 : "kernel = np.ones((51,51),np.float32)/2601 dst = cv.filter2D(img_init['R'][1], -1,kernel)"

Mais la fonction donne des résultats intéressants. Pour un carré de taille 25, on voit toujours la forme des carrés, ce n'est pas uniforme. Mais pour des carrés de taille 51, ca donne un résultat qui a pas l'air trop mal.

Je vais essayer les autres fonctions, moyenne, médiane et gaussienne parce que celles là, on sait ce qu'elles font.

LucasJacquier commented 2 years ago

La fonction rolling ball fait des trucs bizarres. Je pense qu'il faudra éviter de l'utiliser. Cependant les images produites sont jolies. Mais j'ai l'impression qu'en plus elle modifie l'image d'origine par un effet de bord ou qqch du genre.

LucasJacquier commented 2 years ago

De plus, j'ai l'impression qu'avec les autres fonctions, même lorsqu'on enlève le fond, il reste beaucoup de bruit.

Mais en appliquant ces fonctions, on obtient vraiment un fond plus uniforme.

LucasJacquier commented 2 years ago

@deepcharles tu veux que je dépose toutes les images ( j'ai 3 techniques, 3 tailles de filtre donc 9 estimation du fond + 9 corrigées + 1 initiale) ?

deepcharles commented 2 years ago

Si c'est trop lourd, tu peux m'envoyer par mail, sinon ici c'est bien. Merci

LucasJacquier commented 2 years ago

Image initiale : initial_image_print_with_plt_verified

LucasJacquier commented 2 years ago

Moyenne locale

Estimation du fond : Taille du filtre : 7*7 average_blurring_7_print_with_plt

51*51: average_blurring_51_print_with_plt

101*101: average_blurring_101_print_with_plt

Images après soustraction du fond: 7*7: average_blurring_7_background_substracted_print_with_plt

51*51: average_blurring_51_background_substracted_print_with_plt

101*101: average_blurring_101_background_substracted_print_with_plt

LucasJacquier commented 2 years ago

Convolution gaussienne

Estimation du fond: Taille du filtre : 7*7: gaussian_blurring_7_print_with_plt

51*51: gaussian_blurring_51_print_with_plt

101*101: gaussian_blurring_101_print_with_plt

full image: gaussian_blurring_full_img_print_with_plt

Images après soustraction du fond: 7*7: gaussian_blurring_7_background_substracted_print_with_plt

51*51: gaussian_blurring_51_background_substracted_print_with_plt

101*101: gaussian_blurring_101_background_substracted_print_with_plt

full image: gaussian_blurring_full_img_background_substracted_print_with_plt

LucasJacquier commented 2 years ago

Médiane locale

Fonction intéressante, mais j'ai pas réussi à la faire tourner, un des paramètres bloquait

LucasJacquier commented 2 years ago

Rolling-ball

Estimation du fond: Taille du filtre : 7*7: rolling_ball_7_print_with_plt

51*51: rolling_ball_51_print_with_plt

101*101: rolling_ball_101_print_with_plt

Images après soustraction du fond: 7*7: rolling_ball_7_background_substracted_print_with_plt

51*51: rolling_ball_51_background_substracted_print_with_plt

101*101: rolling_ball_101_background_substracted_print_with_plt

LucasJacquier commented 2 years ago

@deepcharles Voilà toutes les images obtenues avec les différentes méthodes

deepcharles commented 2 years ago

Ok merci, le code associé est en ligne ? Notamment celui pour la convolution gaussienne.

LucasJacquier commented 2 years ago

image obtenue avec la librairie PIL.Image Auto-contraste avec ImageJ

average_blurring_101_background_substracted_print_with_PIL_adjusted-png