Re: Updated dicom writing plugin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



After having read up on gegl I realize that that the "proper" thing to do
with the Dicom plugin, is to port it to gegl. Is that correct?

I further wonder if it is ok to add additional readers and writers for any
format to gegl? Here is a list of file formats that I have been using for
matrix (image) data over the years:

   - npy (numerical python)
   - FITS
   - HDF5 (http://www.hdfgroup.org/HDF5/)
   - Dicom
   - Bruker files (http://imaging.mrc-cbu.cam.ac.uk/imaging/FormatBruker)

Should I just add them, or should more rare formats be kept out of gegl
tree?

Another question, which I encountered with Dicom (but is relevant to the
current gimp FITS plugin as well). I chose to support only a subset of the
standard, in order to reduce external dependencies. A much more full
coverage would e.g. rely on the external library dcmtk (
http://dicom.offis.de/dcmtk.php.en). So what is the current policy? Minimal
dependencies, or rely on external libraries.

Regards,
Dov



On Wed, May 22, 2013 at 11:13 PM, Michael Natterer <mitch@xxxxxxxx> wrote:

> On Tue, 2013-05-21 at 14:58 +0300, Dov Grobgeld wrote:
> > Thanks Mitch,
> >
> > I'll do my best to honor that role. Perhaps it will even trigger me of
> > getting into some gimp development. The prospect of a FLOAT,16- and
> > 32-bit,etc version of gimp is indeed intriguing, and I realize looking at
> > the wiki that there is still a lot of work to get there.
>
> You are most welcome to do whatever improvements on master :) We
> seriously lack manpower.
>
> > Besides running autogen.sh and see what fails, is there a list of
> > prerequisites needed to compile and run HEAD from the git repo?
>
> Just have git master of babl, gegl, gimp.
>
> > A
> > ​nother question about gegl-gimp is about the display of a float images.
> Is
> > the max intensity value always mapped to display=255 (assuming a display
> of
> > 8bit?).​
>
> Yes, in the end everything is converted to the cairo-ARGB32 babl format
> and goes thorugh an 8 bit cairo surface.
>
> > ​Or is the mapping a configurable property? Let's say a user has a pair
> of
> > float images showing an energy field where the max energy in one image is
> > 0.5 and in the second image 1.0​
> > .
> > ​ The user would like to look and compare the images one next. How can
> she
> > set the display transfer function to get a fixed image-intensity to
> display
> > gray level for the two images?
>
> There is no nondestructive display transfer function unless you count
> the "Color" tools in preview mode, you could certainly do the task like
> that. The display filters are unfortunately still working on the cairo
> surface used for rendering, so in 8 bit.
>
> Regards,
> --Mitch
>
> > On Tue, May 21, 2013 at 1:06 AM, Michael Natterer <mitch@xxxxxxxx>
> wrote:
> >
> > > On Mon, 2013-05-20 at 19:56 +0300, Dov Grobgeld wrote:
> > > > Since nobody objected, I interpreted that as a silent ok, and I
> commited
> > > > both to master and to the gimp-2-8 branch. Please let me know if you
> > > think
> > > > I was out of line and feel free to revert the commits, and let me
> know
> > > the
> > > > proper procedure.
> > >
> > > The proper procedure is that since you now touched the plugin,
> > > thou shalt henceforth maintain it for all eternity.
> > >
> > > Thanks for the patches,
> > > --mitch
> > >
> > > > On Mon, May 20, 2013 at 12:00 AM, Dov Grobgeld <
> dov.grobgeld@xxxxxxxxx
> > > >wrote:
> > > >
> > > > > Based on a user bug report, I updated the dicom file plugin. The
> patch
> > > is
> > > > > included below.
> > > > >
> > > > > I haven't done any contribution to gimp for ages, so I wonder if I
> can
> > > > > just commit it on my own? If not, should I just attach the patch
> file
> > > to a
> > > > > bug report?
> > > > >
> > > > > Is it ok if I create a version to the gimp-2-8 branch as well, so
> that
> > > it
> > > > > will reach the user quicker?
> > > > >
> > > > > Regards,
> > > > > Dov
> > > > >
> > > > > diff --git a/plug-ins/common/file-dicom.c
> > > b/plug-ins/common/file-dicom.c
> > > > > index de11b9c..d30cd34 100644
> > > > > --- a/plug-ins/common/file-dicom.c
> > > > > +++ b/plug-ins/common/file-dicom.c
> > > > > @@ -18,7 +18,7 @@
> > > > >
> > > > >  /*
> > > > >   * The dicom reading and writing code was written from scratch
> > > > > - * by Dov Grobgeld.  (dov@xxxxxxxxxxxxxxxxxxxx).
> > > > > + * by Dov Grobgeld.  (dov.grobgeld@xxxxxxxxx).
> > > > >   */
> > > > >
> > > > >  #include "config.h"
> > > > > @@ -1218,12 +1218,17 @@ dicom_ensure_required_elements_present
> (GSList
> > > > > *elements,
> > > > >      /* 0002, 0001 - File Meta Information Version */
> > > > >      { 0x0002, 0x0001, "OB", 2, (guint8 *) "\0\1" },
> > > > >      /* 0002, 0010 - Transfer syntax uid */
> > > > > -    { 0x0002, 0x0001, "UI",
> > > > > +    { 0x0002, 0x0010, "UI",
> > > > >        strlen ("1.2.840.10008.1.2.1"), (guint8 *)
> > > "1.2.840.10008.1.2.1"},
> > > > >      /* 0002, 0013 - Implementation version name */
> > > > >      { 0x0002, 0x0013, "SH",
> > > > >        strlen ("GIMP Dicom Plugin 1.0"), (guint8 *) "GIMP Dicom
> Plugin
> > > > > 1.0" },
> > > > >      /* Identifying group */
> > > > > +    /* ImageType */
> > > > > +    { 0x0008, 0x0008, "CS",
> > > > > +      strlen ("ORIGINAL\\PRIMARY"), (guint8 *)
> "ORIGINAL\\PRIMARY" },
> > > > > +    { 0x0008, 0x0016, "UI",
> > > > > +      strlen ("1.2.840.10008.5.1.4.1.1.7"), (guint8 *)
> > > > > "1.2.840.10008.5.1.4.1.1.7" },
> > > > >      /* Study date */
> > > > >      { 0x0008, 0x0020, "DA",
> > > > >        strlen (today_string), (guint8 *) today_string },
> > > > > @@ -1236,14 +1241,23 @@ dicom_ensure_required_elements_present
> (GSList
> > > > > *elements,
> > > > >      /* Content Date */
> > > > >      { 0x0008, 0x0023, "DA",
> > > > >        strlen (today_string), (guint8 *) today_string},
> > > > > -    /* Modality - I have to add something.. */
> > > > > +    /* Content Time */
> > > > > +    { 0x0008, 0x0030, "TM",
> > > > > +      strlen ("000000.000000"), (guint8 *) "000000.000000"},
> > > > > +    /* AccessionNumber */
> > > > > +    { 0x0008, 0x0050, "SH", strlen (""), (guint8 *) "" },
> > > > > +    /* Modality */
> > > > >      { 0x0008, 0x0060, "CS", strlen ("MR"), (guint8 *) "MR" },
> > > > > +    /* ConversionType */
> > > > > +    { 0x0008, 0x0064, "CS", strlen ("WSD"), (guint8 *) "WSD" },
> > > > > +    /* ReferringPhysiciansName */
> > > > > +    { 0x0008, 0x0090, "PN", strlen (""), (guint8 *) "" },
> > > > >      /* Patient group */
> > > > >      /* Patient name */
> > > > >      { 0x0010,  0x0010, "PN",
> > > > >        strlen ("DOE^WILBER"), (guint8 *) "DOE^WILBER" },
> > > > >      /* Patient ID */
> > > > > -    { 0x0010,  0x0020, "CS",
> > > > > +    { 0x0010,  0x0020, "LO",
> > > > >        strlen ("314159265"), (guint8 *) "314159265" },
> > > > >      /* Patient Birth date */
> > > > >      { 0x0010,  0x0030, "DA",
> > > > > @@ -1251,6 +1265,12 @@ dicom_ensure_required_elements_present
> (GSList
> > > > > *elements,
> > > > >      /* Patient sex */
> > > > >      { 0x0010,  0x0040, "CS", strlen (""), (guint8 *) "" /*
> unknown */
> > > },
> > > > >      /* Relationship group */
> > > > > +    /* StudyId */
> > > > > +    { 0x0020, 0x0010, "IS", strlen ("1"), (guint8 *) "1" },
> > > > > +    /* SeriesNumber */
> > > > > +    { 0x0020, 0x0011, "IS", strlen ("1"), (guint8 *) "1" },
> > > > > +    /* AcquisitionNumber */
> > > > > +    { 0x0020, 0x0012, "IS", strlen ("1"), (guint8 *) "1" },
> > > > >      /* Instance number */
> > > > >      { 0x0020, 0x0013, "IS", strlen ("1"), (guint8 *) "1" },
> > > > >
> > > > > @@ -1576,7 +1596,7 @@ add_tag_pointer (GByteArray   *group_stream,
> > > > >          */
> > > > >        if (strstr ("UI|OB", value_rep) != NULL)
> > > > >          {
> > > > > -          g_byte_array_append (group_stream, (guint8 *) 0x0000,
> 1);
> > > > > +          g_byte_array_append (group_stream, (guint8 *) "\0", 1);
> > > > >          }
> > > > >        else
> > > > >          {
> > > > >
> > > > >
> > > > _______________________________________________
> > > > gimp-developer-list mailing list
> > > > gimp-developer-list@xxxxxxxxx
> > > > https://mail.gnome.org/mailman/listinfo/gimp-developer-list
> > >
> > >
> > >
> > _______________________________________________
> > gimp-developer-list mailing list
> > gimp-developer-list@xxxxxxxxx
> > https://mail.gnome.org/mailman/listinfo/gimp-developer-list
>
>
>
_______________________________________________
gimp-developer-list mailing list
gimp-developer-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gimp-developer-list





[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux