# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  dtection du seuil automatique

## kbazin

bonjour,

j'ai besoin d'un peu d'aide je suis dbutante en traitement d'images et je dois faire de la segmentation automatique. 
J'ai vu qu'il existait des mthodes comme Otsu dans le forum mais cela ne donne pas de rsultat satisfaisant avec mes images.

je dois isoler les trabcules d'une vertbre c'est a dire les petits segment un peut plus blanc. j'arrive a les segmenter avec un seuil que l'on choisit manuellement comme sur l'image avec du rouge. 

le problme est que le seuil va dpendre de l'utilisateur de sa vision. le programme n'est donc pas rptable. je cherche un moyen de trouver ce seuil automatiquement sans passer par l'utilisateur. le deuxime problme c'est que je ne peut pas imposer de seuil car celui varie selon l'image ou la srie de scan.

jespre tre assez claire car ce n'est pas simple d'expliquer.

je vous remercie d'avance pour vos ides

----------


## Jerome Briot

> Tout d'abord, il te faut sparer les zones minrales du reste des tissus.
> Fait une recherche avec les mot-cl "echelle+Hounsfield". Tu devrais pouvoir segmenter assez facilement tes images pour ne conserver que les structures osseuses dans un premiers temps


 :;):

----------


## neogamaes

tu peux essayer cela:



```

```

----------


## kbazin

je viens d'essayer le code avec imadjust mais cela ne donne rien j'ai mis le rsultat en pice jointe. merci quand mme

J'ai fait une recherche sur lchelle HU ils disent que l'os correspond a + 100 HU 
le problme est que lorsque je segmente a partir de 100 HU cela ne donne pas le rsultat voulu. 
si j'augmente le seuil je peut d'obtenir des rsultats plus correct pour ma segmentation mais comment faire pour choisir le seuil ?
de plus celui ci n'est pas forcement le mme pour chaque images.
merci pour l'aide

----------


## Jerome Briot

> J'ai fait une recherche sur lchelle HU ils disent que l'os correspond a + 100 HU


Pour tre plus prcis, 100HU correspond environ  la limite basse des tissus minraliss sur l'chelle de Hounsfield. Cette zone s'tend de l'os spongieux/trabculaire jusqu' l'os cortical

Donc pour une matrice contenant des valeurs exprimes en unit Hounsfield (HU), tu peux thoriquement faire :



```
tissus_mineralises = IM > 100;
```

A condition toutefois que l'image soit calibre. Sans trop rentrer dans les dtails, par exemple, si le noir correspond  l'air, la valeur des pixels correspondant doit tre -1024. Si tu as de l'eau, la valeur des pixels doit tre de 0... On utilise les champs RescaleSlope et RescaleIntersept des fichier DICOM

Une autre chose, il faut se mfier du bruit prsent sur l'image. La valeur des pixels peut tre grandement modifie par les artfacts prsents sur l'image.

----------


## kmaniche

Bonjour, 

Ne serait il pas plus intressent de faire une segmentation. Le seuillage dtruit l'information. 

Tu as aussi la possibilit de poser la question au forum Traitement d'image  ::mouarf::

----------


## Jerome Briot

> Tu as aussi la possibilit de poser la question au forum Traitement d'image


Effectivement, je viens de transfrer la discussion vers le forum Algorithmes

----------


## pseudocode

> Bonjour, 
> 
> Ne serait il pas plus intressent de faire une segmentation. Le seuillage dtruit l'information.


Hum... segmentation ca risque d'tre coton. A la rigueur avec un watershed.

Le seuillage global me parait plus simple : peut-tre un maximum d'entropie ?

----------


## kbazin

je comprend pas tout mais je vais chercher ces nouvelles ides et voir les rsultats que j'obtiens 
 :;):

----------


## Aleph69

Bonsoir,

pour pouvoir dfinir un seuil automatiquement, indpendamment de l'image, il faut que tu donnes un sens  ce seuil, c'est--dire que tu dtermines un critre de prcision/qualit de ta segmentation.
Ce critre devrait idalement dpendre des proprits numriques de ton algorithme de segmentation.

----------


## kbazin

j'ai essaye watershed mais le rsultat ne mintresse pas cf image ci joint
pour le seuillage globale avec maximum de l'entropie je trouve quelques articles mais ne comprend pas vraiment comment cela marche 
connaissez vous un site qui pourrait mieux m'expliquer en quoi cela consiste
merci  ::):

----------


## pseudocode

> j'ai essaye watershed mais le rsultat ne mintresse pas cf image ci joint


Oui, c'est sur que la segmentation directement sur l'image c'est pas terrible. Il faudrait faire cela sur le gradient ou la variance. Mais bon, je ne pense pas que les resultats seront exploitables.




> pour le seuillage globale avec maximum de l'entropie je trouve quelques articles mais ne comprend pas vraiment comment cela marche 
> connaissez vous un site qui pourrait mieux m'expliquer en quoi cela consiste
> merci


C'est un seuillage tout ce qu'il y a de normal. La particularit c'est que la valeur du seuil est calcule de manire a maximiser l'entropie = maximiser l'information contenue dans la partie basse + la partie haute par rapport au seuil. 

Je ne sais pas comment on calcule cela simplement en Matlab, mais le code java est dispo ici.

----------


## Nebulix

Il serait trs clairant de calculer l'histogramme des niveaux de  gris de tes images.(et de nous le montrer)

----------


## ToTo13

Bonjour,

je commencerai par homogniser un peu la zone de recherche, afin d'viter toutes ces petites variations : fermeture (morphologie mathmatique).
Une fois avec un grande zone homogne, les seuillages automatiques se sentiront dj beaucoup mieux, voire un watershed avec marqueur comme l'a conseill pseudocode.

----------


## kbazin

voici comme demand deux types images a traiter et les histogrammes correspondant

----------


## pseudocode

Le seuillage par maximum d'entropie donne cela :




A voir si ca te convient.

----------


## kbazin

c'est super gentil d'avoir test pour moi  ::D: 
malheureusement cela ne convient pas la premire image possde trop d'informations et l'autre pas assez  ::calim2:: 




> je commencerai par homogniser un peu la zone de recherche, afin d'viter toutes ces petites variations : fermeture (morphologie mathmatique).


TOTO 13 pourrais tu expliquer un peu plus ce que tu entends par homogniser la zone de recherche stp 
moi j'aurais plutt fait une ouverture qu'une fermeture alors je comprends pas trop. 
De plus je ne veux pas perdre d'information sur les paisseurs de mes trabecules.

merci

----------


## Nebulix

> voici comme demand deux types images a traiter et les histogrammes correspondant


J'esprais voir une structure dans les histogrammes, mais aucune n'est vidente. ::oops:: (le petit creux  -1.25 sur le 2e ?)
Peut-tre que si tu traites manuellement plusieurs images et que tu reportes le seuil optimal dans chaque histogramme une rgularit apparaitra ...

----------


## ToTo13

> TOTO 13 pourrais tu expliquer un peu plus ce que tu entends par homogniser la zone de recherche stp 
> moi j'aurais plutt fait une ouverture qu'une fermeture alors je comprends pas trop. 
> De plus je ne veux pas perdre d'information sur les paisseurs de mes trabecules.


Dans ta premire image, on voit bien que la zone d'intrt possde des variations d'intensit importantes, donc tous les seuillages n'aboutiront pas sans nettoyageS pralables.
La fermeture va boucher tous les petits trous de te zone d'intrt. Au contraire une ouverture va les agrandir.

En parlant de boucher, tu peux aussi faire un bouchage de trou morphologique en niveau de gris. C'est bas sur la reconstruction par dilatation godsique.

----------


## kbazin

je crois que j'ai trouver comment faire 
dans un article il parle de dcouper une image en une srie de 2 puissance n sous images et de calculer le seuil pour chaque sous images  
ainsi cela prend en compte les conditions locales de l'image.
vous pensez que cela peut marcher?

----------


## pseudocode

> je crois que j'ai trouver comment faire 
> dans un article il parle de dcouper une image en une srie de 2 puissance n sous images et de calculer le seuil pour chaque sous images  
> ainsi cela prend en compte les conditions locales de l'image.
> vous pensez que cela peut marcher?


C'est du seuillage local. Je ne sais pas trop si c'est adapt a ton problme car ca va faire ressortir plein de petites variations sur ton image.

----------


## Nebulix

Petit retour sur les histogrammes : Ils ont un gros pic correspondant au noir (fond de l'image)  et une structure plus large correspondant  l'objet. Si tu plaais ton seuil  une certaine fraction de cette structure (ou plus simplement  une certaine fraction de l'intensit maximale) obtiendrais-tu quelque chose d'intressant ?

----------


## kbazin

voici le code que j'ai essayer pour la dcoupe de mon image mais malheureusement cela n'affiche qu'un trait verticale et non une image  ::calim2::  


```

```

je ne vois pas trop d'ou cella vient et matlab ne ressort pas d'erreur 
merci d'avance




> Petit retour sur les histogrammes : Ils ont un gros pic correspondant au noir (fond de l'image)  et une structure plus large correspondant  l'objet. Si tu plaais ton seuil  une certaine fraction de cette structure (ou plus simplement  une certaine fraction de l'intensit maximale) obtiendrais-tu quelque chose d'intressant ?


je ne comprend pas vraiment je fais du traitement d'images que depuis 2 mois vraiment dsol 
peux tu expliquer un peu plus comment je pourrais trouver cette fraction! 
merci

----------


## Nebulix

> peux tu expliquer un peu plus comment je pourrais trouver cette fraction! 
> merci


Fixer un seuil en fraction entre le min et le max d'une image permet de s'affranchir des paramtres externes (temps de pose,etc.)
Fixer cette fraction (  0.7, 0.8 ?)ne relve plus de l'informatique mais du sens des images. C'est  toi d'essayer la mthode sur un ensemble d'images et de voir si une certaine fraction te donne des rsultats probants.

----------


## kbazin

bon je n'arrive pas a grand chose avec ces images 

j'ai trouv une option je fais galisation de l'histogramme et je dtermine un seuil qui fonctionne pour mes deux images. 
Le problme est que mes images semblent changer de format et perdre des infos? Y a t'il un moyen dviter cela? Est ce la fonction im2double qui fait cela ?
vous trouverez mon code ci dessous 
et encore merci pour votre aide



```

```

----------

