# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  O tlcharger des images IRM du crne ?

## Hedidams

Bonsoir,

O puis-je tlcharger les images IRM, ci-jointes, reprsentant le crne d'un cerveau humain, afin de faire une segmentation ? Car celles-ci, je les ai rcupres d'un document pdf !

----------


## larimoise

http://www.bic.mni.mcgill.ca/brainweb/

----------


## millie

C'est normal que ce soit toujours avec des mauvaises rsolutions (a tient  chaque fois sur un timbre poste) ? C'est les appareils qui ne peuvent pas faire mieux ?

----------


## pseudocode

> O puis-je tlcharger les images IRM, ci-jointes, reprsentant le crne d'un cerveau humain, afin de faire une segmentation ? Car celles-ci, je les ai rcupres d'un document pdf !


http://www.med.harvard.edu/AANLIB/home.html




> C'est normal que ce soit toujours avec des mauvaises rsolutions (a tient  chaque fois sur un timbre poste) ? C'est les appareils qui ne peuvent pas faire mieux ?


Le format DICOM n'est pas spcialement fait pour stocker des grandes images... Quand en plus on sait que les transmissions de donnes se font encore par ligne srie, ca n'incite pas a stocker des images hautes rsolutions.  ::?: 

Brain image

----------


## souviron34

disons que je suppose que c'est pour la publication..

Sur les machines, les images sont au minimum de 512*512, et souvent de 2500*2500...

----------


## Hedidams

> http://www.med.harvard.edu/AANLIB/home.html


-> Ces images-l, est-ce qu'elles sont prtes  tre utilises (segmentes) ou bien elles ncessitent une phase de prtraitement (filtrage) ?

-> Sous quel format d'image, faut prendre ces images ? 

-> Est-ce que je peux exploiter directement ces images en chargeant une dans une matrice d'entiers int image[MAX_HAUTEUR][MAX_LARGEUR] ou bien elles sont comprimes et comment charger une image ?  ::(:

----------


## pseudocode

Ce sont des images au format PNG:

http://www.med.harvard.edu/AANLIB/cases/caseNA/gr/axl

----------


## Hedidams

> Ce sont des images au format PNG:


Donc, ce sont des images en niveaux de gris compresses !

Comment puis-je les exploiter : les transformer en .bmp ou bien... ? Car mon but est de stocker l'image dans une matrice d'entiers pour pouvoir la segmenter.  ::(:

----------


## souviron34

euh..

Deja suffit de la lire dans des bytes (des char en C), car en general sur 8 bits...

D'autre part la libpng devrait contenir toutes les routines necessaires....

----------


## Hedidams

Me voici de retour...

J'ai lu l'article segmentation en rgions, et je voudrais appliquer la mthode croissance de rgions pour segmenter les images en niveaux de gris disponibles ici : http://www.med.harvard.edu/AANLIB/cases/caseNA/gr/axl

Est-ce que l'algorithme propos est complet ? Et est-ce que cette mthode procure de bons rsultats ? 

Aidez-moi s'il vous plat !  ::(:

----------


## pseudocode

> Est-ce que l'algorithme propos est complet ?


L'algorithme propos est trs basique mais il est fonctionnel.




> Et est-ce que cette mthode procure de bons rsultats ?


Voila ce que donne l'algo propos avec l'image 080.png

----------


## Hedidams

> L'algorithme propos est trs basique mais il est fonctionnel.


En ce qui concerne l'tape de croissance de rgions, il faut bien calculer le critre de similarit, dans notre cas c'est une image en niveaux de gris. Donc, est-ce qu'on va :

1- Comparer la valeur du pixel choisi comme seed avec celle de son voisin (voisinage 8 bien entendu) et dans ce cas-l comment dterminer le seuil ou bien le fixer arbitrairement (en tous les cas, pour ces images-l) ?


```

```

2- Ou bien, calculer la similarit entre la valeur de la rgion en cours de croissance avec celle du pixel voisin du pixel seed ?

3- Ou bien, fixer le seuil  zro si j'ai bien compris sur cette page (ligne 221) : https://jaistuff.dev.java.net/code/a...onGrowing.html ?

----------


## pseudocode

> 1- Comparer la valeur du pixel choisi comme seed avec celle de son voisin (voisinage 8 bien entendu) et dans ce cas-l comment dterminer le seuil ou bien le fixer arbitrairement (en tous les cas, pour ces images-l) ?
> 
> 
> ```
> 
> ```
> 
> 2- Ou bien, calculer la similarit entre la valeur de la rgion en cours de croissance avec celle du pixel voisin du pixel seed ?


Gnralement on prend la mthode 2, c'est plus rsistant au bruit.

Pour le calcul du seuil, le plus efficace c'est de le fixer manuellement (bref faire des essais). Sinon on peut tenter de l'estimer a partir de l'image (trace de la matrice de covariance, caracteristiques d'Haralick, ...)




> 3- Ou bien, fixer le seuil  zro si j'ai bien compris sur cette page (ligne 221)


ici le seuil est a zero car les images sont binaires (noir&blanc).  :;):

----------


## Hedidams

> Gnralement on prend la mthode 2, c'est plus rsistant au bruit.
> 
> Pour le calcul du seuil, le plus efficace c'est de le fixer manuellement (bref faire des essais). Sinon on peut tenter de l'estimer a partir de l'image (trace de la matrice de covariance, caracteristiques d'Haralick, ...)


Pour le critre de similarit entre la rgion courante et le pixel voisin, est-ce qu'il faudra maintenir la somme des couleurs des pixels de la rgion et au moment du test avec le pixel voisin il faudra diviser par leur nombre ?


```

```

Est-ce correct a ? Mais on ne risquera pas de dpasser la valeur maximale du type entier si on maintient pour chaque rgion la variable sommeCouleur ?
Normalement, l'intrt de sommeCouleur intervient dans le recalcul de la nouvelle couleur moyenne de la rgion !

Tout mon problme est comment recalculer la couleur moyenne de la rgion aprs l'ajout d'un nouveau pixel ?


```
couleurMoyenneRegion = (sommeCouleur + couleurPixelAAjouter) / nombrePixels + 1;
```

Ou bien :


```

```

Lequel de ces deux codes est correct ?



> Voila ce que donne l'algo propos avec l'image 080.png


J'aimerais bien savoir comment avez-vous dessin les contours des rgions car logiquement dans la mthode de croissance de rgions on n'aura pas les contours !  ::roll::

----------


## pseudocode

> Lequel de ces deux codes est correct ?




```

```




> J'aimerais bien savoir comment avez-vous dessin les contours des rgions car logiquement dans la mthode de croissance de rgions on aura pas les contours !


j'ai juste dessin en rouge les pixels  la frontiere de 2 rgions.

----------


## Hedidams

> ```
> 
> ```


Donc, ni l'un ni l'autre ! Merci.



> j'ai juste dessin en rouge les pixels  la frontiere de 2 rgions.


Pourriez-vous me donner de plus amples explications ! 

Car je devrai montrer l'excution de mon programme en exhibant les diffrentes rgions constituant l'image : est-ce qu'il est prfrable de colorer chaque rgion extraite par une couleur ou bien faire comme vous en dessinant les frontires entre les rgions voisines, dans ce cas je ne sais pas trop comment faire ? 

Dans les articles traitant de la segmentation, ils dessinent souvent les frontires au lieu de colorer chaque rgion  part (cf. pice jointe) !

----------


## pseudocode

> Donc, ni l'un ni l'autre ! Merci.


si, c'etait ta 2eme mthode. Celle que j'ai donne est juste un poil plus precise car on garde le "rsidu" de la partie entiere. 




> Car je devrai montrer l'excution de mon programme en exhibant les diffrentes rgions constituant l'image : est-ce qu'il est prfrable de colorer chaque rgion extraite par une couleur ou bien faire comme vous en dessinant les frontires entre les rgions voisines, dans ce cas je ne sais pas trop comment faire ?


C'est trs complexe... Non, je plaisante !  ::mouarf:: 

Une fois que tu as la carte des regions, tu parcours chaque pixel de la carte: si un des pixels voisin n'est pas dans la meme region que le pixel courant, alors le pixel courant est a la frontiere d'une region. Et donc, on colore en rouge ce pixel sur l'image d'origine.




> Dans les articles traitant de la segmentation, ils dessinent souvent les frontires au lieu de colorer chaque rgion  part (cf. pice jointe) !


Oui, c'est parceque le but de la segmentation c'est quand meme de sparer des regions de l'image d'origine, et pas de faire du coloriage.  ::aie::

----------


## Hedidams

Comment puis-je savoir si mes images sont bien segmentes, car vous savez que l'tape de segmentation est cruciale pour la suite... Ci-joint les images segmentes 079.png et 080.png avec un seuil de 128 ! 

Sur quelle base, je vais changer le seuil afin d'obtenir une segmentation convenable ?

Avec la premire image (079.png), j'obtiens 115 rgions et avec la deuxime (080.png), 97 rgions !

----------


## pseudocode

> Sur quelle base, je vais changer le seuil afin d'obtenir une segmentation convenable ?


La dfinition de "convenable" est trs subjective.  ::?: 

Un bon point de dpart, c'est de faire une analyse statistique des rgions trouves (variance, entropie, ...). Bien sur, ca oblige de choisir des seuils d'acceptation pour ces informations statistiques, donc ca repousse le problme.

Cela dit, il est plus simple de choisir un seuil statistique qu'un seuil de niveau de gradient.  :;):

----------


## Hedidams

> La dfinition de "convenable" est trs subjective.


Dsol pour le mauvais choix du terme !  ::oops:: 




> Un bon point de dpart, c'est de faire une analyse statistique des rgions trouves (variance, entropie, ...). Bien sur, ca oblige de choisir des seuils d'acceptation pour ces informations statistiques, donc ca repousse le problme.
> 
> Cela dit, il est plus simple de choisir un seuil statistique qu'un seuil de niveau de gradient.


Je n'ai pas bien compris ce que tu voulais dire, car je ne vois pas comment intgrer dans mon algorithme un seuil statistique ?

Au fait, aprs cette tape de segmentation, je vais calculer des attributs de morphologie et texture sur les rgions : surface, compacit, niveau de gris moyen, variance, longation, continuit et homognit. Ces attributs vont dtecter la prsence d'une tumeur et spcifier sa nature.

 ::fleche::  Article [html]: interprtation des images mdicales... (page 4 : 5. Rsultats exprimentaux)

----------


## pseudocode

> Je n'ai pas bien compris ce que tu voulais dire, car je ne vois pas comment intgrer dans mon algorithme un seuil statistique ?


Quand tu fais crotre une rgion, tu utilises un critre (avec un seuil) pour dcider si un pixel doit tre ajoute  la rgion. Le problme est de choisir ce seuil. Donc l'ide c'est, pour chaque rgion:

1. Choisir un seuil de dpart "s"
2. Faire crotre la rgion avec le seuil "s"
3. Analyser la rgion obtenue (variance, ...)
4. Dcider si la rgion est "convenable". 
4a. Si c'est "non", on diminue le seuil "s" et on recommence au 2
4b. Si c'est "oui", on conserve la rgion et on passe  la suivante

----------

