[Dcmlib] MONOCHOMRE1 feature request...

Mathieu Malaterre mathieu.malaterre at gmail.com
Tue Jul 3 13:29:11 CEST 2007


On 7/3/07, Jean-Pierre Roux <jpr at creatis.insa-lyon.fr> wrote:
> Mathieu Malaterre wrote:
> > Je savais bien que ca allait nous tomber dessus un jour ou l'autre:
> >
> > http://public.kitware.com/pipermail/insight-users/2007-July/022768.html
> >
> > Bon ben GDCM aura tenu qlq années sans ca.
> >
>
> Je devrais pouvoir ajouter de manière très simple deux méthodes:
> FileHelper::SetPhotometricInterpretationToMonochrome1() /
> FileHelper::SetPhotometricInterpretationToMonochrome2()
> (utilisables égalempent lors de la lecture, car je suppose qu'un jour,
> qq'un va nous dire  : <<de quel droit gdcm change-t-il la valeur des Pixels?
> Dans mes images le blanc est codé 0 et le noir 65535, je *veux* les
> recupérer comme ça !>>
>
> Bon.
> Ca, c'est au niveau gdcm.
> On peut aisement rajouter l'accesseur VTK.
> En ce qui concerne ITK, l'utilsateur n'a aucun moyen d'entrevoir le
> gdcm::File, c'est ça?

C'est effectivement un probleme grave dans GDCM, c'est que la
decopression arrive *toujours* en MONOCHROME2. J'avais regarder a
l'epoque l'API de la lib PNG et c'etait bien mieux fais. En gros:

  if (color_type == PNG_COLOR_TYPE_PALETTE)
    {
    png_set_palette_to_rgb(png_ptr);
    }

  // minimum of a byte per pixel
  if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
    {
    png_set_gray_1_2_4_to_8(png_ptr);
    }

  // add alpha if any alpha found
  if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
    {
    png_set_tRNS_to_alpha(png_ptr);
    }

  if (bit_depth > 8)
    {
#ifndef VTK_WORDS_BIGENDIAN
    png_set_swap(png_ptr);
#endif
    }

Donc c'est vraiment a l'utilisateur si son app veux une image RGB, ou
une image PALETTE. Si il veut du RGB ou du RGBA... c'est vraiment bien
pensé.

Une autre lib que j'ai vu passer c'est boost::GIL ca s'est superbe, merci adobe.

Quoiqu'il en soit on peux pas casser gdcm 1.x comme ca. En interne
GDCM manipule du MONOCHROME2 decompressé, c'est son API (implicit).
Tout ce que l'on peut faire c'est ce que j'ai fais pour le JPEG. On
rajoute un mode MONOCHROME1. Mais dans tous les cas l'utilisateur doit
fournir une entree en MONOCHROME2 (VTK, ITK...).

-Mathieu




More information about the Dcmlib mailing list