Hi Luis,<div><br></div><div>we&#39;ve tried the beta version of the new ubuntu 9.10, which comes with itk version 3.14 linked against external gdcm 2.0.x, and now the problem has disappeared. </div><div>Maybe the problem was with the built-in gdcm version that came with itk? But, well, it&#39;s only a supposition... </div>
<div>Do you know which is the exact gdcm built-in version that comes with itk 3.10,.12,.14,...?</div><div><br></div><div>Regarding point 4), ubuntu 9.04 has already the pathch 3.10.1 version<br><br></div><div><br></div><div>
Thanks a lot for your help!</div><div><br><div class="gmail_quote">On Mon, Oct 19, 2009 at 7:32 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Jesus,<br>
<br>
Thanks for your detailed answer.<br>
<br>
1) Yes, it make sense to use the ITK packages for Ubuntu  first.<br>
<br>
2) It really seems that this was a bug fixed before ITK 3.16.<br>
<br>
3) I don&#39;t know exactly what but it is.<br>
    Good places to look for it would be:<br>
<br>
    itkImageBase<br>
    itkImage<br>
    itkImageFileReader<br>
    itkGDCMImageIO<br>
<br>
    It may take several hours to track that down...<br>
    So... we probably need a good justification (motivation)<br>
    for tracking the exact bug...<br>
<br>
<br>
4) I don&#39;t know in what exact version this behavior was<br>
    fixed, although I would suspect that it relates to the<br>
    release of ITK 3.10, which is the first one in which<br>
    we made the itkImage behave as an itkOrientedImage.<br>
<br>
    If you go for ITK 3.10, then you should probably use<br>
    the patch ITK 3.10.1:<br>
<br>
    Release 3.10.1 (patch 1) (December 8 2008)<br>
<a href="http://www.itk.org/ITK/resources/legacy_releases.html" target="_blank">http://www.itk.org/ITK/resources/legacy_releases.html</a><br>
<br>
<br>
5) However,... I&#39;ll still suggest that if you are not<br>
    using the specific Ubuntu package, you may<br>
    as well update to the most recent release of ITK.<br>
<br>
<br>
6) It still doesn&#39;t make much sense for the behavior<br>
    of the ITK class to change when you introduce<br>
    the QApplication.<br>
<br>
    (again,... unless there is some shared library confusion...).<br>
<br>
<br>
<br>
<br>
<br>
  Regards,<br>
<br>
<br>
       Luis<br>
<br>
<br>
-------------------------------------------------------------------<br>
<div><div></div><div class="h5">On Tue, Oct 13, 2009 at 7:13 AM, Jesús Spí­nola &lt;<a href="mailto:jspinola@gmail.com">jspinola@gmail.com</a>&gt; wrote:<br>
&gt; Hi Luis,<br>
&gt;<br>
&gt; thanks for your detailed explanations. I&#39;ll ask to your questions and ask<br>
&gt; you some more questions to the points you stated<br>
&gt;<br>
&gt; On Mon, Oct 12, 2009 at 9:14 PM, Luis Ibanez &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Jesús,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thanks for the detailed description of your problem.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 1)  ITK 2.8.1 is certainly an old version.<br>
&gt;&gt;     It is great that you are updating.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2)  Why have you decided to update to 3.10.1<br>
&gt;&gt;     instead of adopting the most recent release<br>
&gt;&gt;     of ITK 3.16 ?<br>
&gt;&gt;<br>
&gt;<br>
&gt; Under linux, we are using ubuntu 9.04, and that&#39;s the official itk version<br>
&gt; that comes with this distribution, so we first try to use the version of the<br>
&gt; libraries that comes in the common repositories. If we see the provided<br>
&gt; packages are wrong or causes any problem, we then consider to make our own<br>
&gt; packages to solve that problems. So, before building new packages for a more<br>
&gt; recent library version, we want to be sure in which side the problem is. We<br>
&gt; want to discard if that&#39;s a problem of us or that&#39;s because some bug in the<br>
&gt; library.<br>
&gt;<br>
&gt; We also tried itk 3.14 (we used the packages found on<br>
&gt; <a href="http://apt.paulnovo.org/ubuntu/pool/main/i/insighttoolkit/" target="_blank">http://apt.paulnovo.org/ubuntu/pool/main/i/insighttoolkit/</a> which are built<br>
&gt; for this linux distribution too), and we had unfortunately the same errors.<br>
&gt;<br>
&gt; So the question is, are we doing something wrong? or we can just put the<br>
&gt; blame on this itk versions?<br>
&gt; Before building a more recent version, we want to be sure what&#39;s the real<br>
&gt; problem.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 3)  Thanks for posting the minimal example for<br>
&gt;&gt;      replicating the problem.<br>
&gt;&gt;<br>
&gt;&gt;      I downloaded your .tar.gz file, and adapted<br>
&gt;&gt;      the <a href="http://bug.pro" target="_blank">bug.pro</a> file in order to provide all the<br>
&gt;&gt;      necessary libraries.<br>
&gt;&gt;<br>
&gt;<br>
&gt; I used your <a href="http://bug.pro" target="_blank">bug.pro</a> file, but I had to change the location of the libraries<br>
&gt; for ours (/usr/lib/.. /usr/include/Insight...), and remove the linking to<br>
&gt;<br>
&gt; -litkpng \<br>
&gt;<br>
&gt; -litktiff \<br>
&gt;<br>
&gt; -litkzlib \<br>
&gt;<br>
&gt; but I guess this has to do with the way the libraries are built and has no<br>
&gt; influence in the final result<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; 4)  I build it against our current CVS version,<br>
&gt;&gt;     and Qt 4.5.0 and didn&#39;t received any error<br>
&gt;&gt;     message when running:<br>
&gt;&gt;<br>
&gt;&gt;             ./bug-3.10.1          ./data<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 5)  To make the program more informative,<br>
&gt;&gt;      I added:<br>
&gt;&gt;<br>
&gt;&gt;    ImageType::ConstPointer image = reader-&gt;GetOutput();<br>
&gt;&gt;<br>
&gt;&gt;    image-&gt;Print( std::cout );<br>
&gt;&gt;<br>
&gt;&gt;    and got the following (excerpt):<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;           Direction:<br>
&gt;&gt;                    1 0 0<br>
&gt;&gt;                    0 0.956305 0.292372<br>
&gt;&gt;                    0 -0.292372 0.956305<br>
&gt;&gt;<br>
&gt;<br>
&gt; This is the right direction because that&#39;s the one we get with 2.8.1, and<br>
&gt; that&#39;s the matrix you can compute from &quot;Image Orientation Patient&quot; dicom<br>
&gt; tag. In our case, we get the exception error I mentioned and the whole<br>
&gt; result of image-&gt;Print(std::cout) is<br>
&gt;<br>
&gt;<br>
&gt; Image (0x872edb0)<br>
&gt;   RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;   Reference Count: 2<br>
&gt;   Modified Time: 7<br>
&gt;   Debug: Off<br>
&gt;   Observers:<br>
&gt;     none<br>
&gt;   Source: (0x876cfb8)<br>
&gt;   Source output index: 0<br>
&gt;   Release Data: Off<br>
&gt;   Data Released: False<br>
&gt;   Global Release Data: Off<br>
&gt;   PipelineMTime: 24<br>
&gt;   UpdateMTime: 0<br>
&gt;   LargestPossibleRegion:<br>
&gt;     Dimension: 3<br>
&gt;     Index: [0, 0, 0]<br>
&gt;     Size: [0, 0, 0]<br>
&gt;   BufferedRegion:<br>
&gt;     Dimension: 3<br>
&gt;     Index: [0, 0, 0]<br>
&gt;     Size: [0, 0, 0]<br>
&gt;   RequestedRegion:<br>
&gt;     Dimension: 3<br>
&gt;     Index: [0, 0, 0]<br>
&gt;     Size: [0, 0, 0]<br>
&gt;   Spacing: [1, 1, 1]<br>
&gt;   Origin: [0, 0, 0]<br>
&gt;   Direction:<br>
&gt; 1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt;   IndexToPointMatrix:<br>
&gt;   1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt; PointToIndexMatrix:<br>
&gt;   1 0 0<br>
&gt; 0 1 0<br>
&gt; 0 0 1<br>
&gt;<br>
&gt;   PixelContainer:<br>
&gt;     ImportImageContainer (0x9fe0328)<br>
&gt;       RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;       Reference Count: 1<br>
&gt;       Modified Time: 4<br>
&gt;       Debug: Off<br>
&gt;       Observers:<br>
&gt;         none<br>
&gt;       Pointer: 0<br>
&gt;       Container manages memory: true<br>
&gt;       Size: 0<br>
&gt;       Capacity: 0<br>
&gt;<br>
&gt;<br>
&gt; As you can see, we get a &quot;blank&quot; Image completely void.<br>
&gt;<br>
&gt; If I run the program without the QApplication it works ok and we get the<br>
&gt; right direction matrix and the resulting image is filled (Pointer, Size and<br>
&gt; Capacity are not null)<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; 6) It would seem that you are being affected by<br>
&gt;&gt;    a bug that may now been fixed in ITK 3.16.<br>
&gt;&gt;<br>
&gt;<br>
&gt; Do you know which bug is exactly? And do you know in wich version should<br>
&gt; this bug has been fixed?<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; 7) The error message that your were reporting<br>
&gt;&gt;     can be generated from the method<br>
&gt;&gt;<br>
&gt;&gt;    ::ComputeIndexToPhysicalPointMatrices()<br>
&gt;&gt;<br>
&gt;&gt;    that is defined in the itkImageBase, and<br>
&gt;&gt;    overloaded in the itkImage class.<br>
&gt;&gt;<br>
&gt;&gt;    This methods verifies that the Direction<br>
&gt;&gt;     matrix doesn&#39;t have a null determinant.<br>
&gt;&gt;<br>
&gt;&gt;     In your case, it seems that the process<br>
&gt;&gt;     of reading these two DICOM slices was<br>
&gt;&gt;     generating a NULL-determinant Direction.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 8) There shouldn&#39;t be any relationship<br>
&gt;&gt;     with using QApplication or not.<br>
&gt;&gt;<br>
&gt;&gt;     You should receive the same error message<br>
&gt;&gt;     when you don&#39;t use the QApplication class...<br>
&gt;&gt;<br>
&gt;<br>
&gt; That&#39;s the way it should be, but in fact it only appears if we put the<br>
&gt; QApplication. It&#39;s really strange, truly.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;     unless....<br>
&gt;&gt;<br>
&gt;&gt;     you are somehow linking to ITK shared<br>
&gt;&gt;     libraries and may have different versions<br>
&gt;&gt;     of them in your installation.<br>
&gt;&gt;<br>
&gt;<br>
&gt; We are linking to ITK shared libraries, but we have only one version<br>
&gt; installed at once (3.10.1).<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; 9)  Please run your program with :<br>
&gt;&gt;<br>
&gt;&gt;               ldd      ./bug-3.10.1     ./data<br>
&gt;&gt;<br>
&gt;&gt;      and double check that the shared libraries<br>
&gt;&gt;      that the program is finding are indeed the<br>
&gt;&gt;      ones that you intended to link with.<br>
&gt;&gt;<br>
&gt;<br>
&gt; We checked it, and they are linking to the right libraries.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Please find attached the modified versions<br>
&gt;&gt; of <a href="http://bug.pro" target="_blank">bug.pro</a> and main.cpp.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;    Regards,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;           Luis<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ---------------------------------------------------------------<br>
&gt;&gt; On Thu, Oct 8, 2009 at 5:51 AM, Jesús Spí­nola &lt;<a href="mailto:jspinola@gmail.com">jspinola@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hello,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;m a developer of a cross platform DICOM Viewer application. It uses Qt<br>
&gt;&gt; &gt; libraries ( version 4.5.0 ) for the GUI, itk to read the images (with<br>
&gt;&gt; &gt; GDCMIO<br>
&gt;&gt; &gt; precisely) and vtk to display them.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Until now, we were using itk 2.8.1 and all was quite fine. Now, we are<br>
&gt;&gt; &gt; looking forward to update the itk libraries to a more recent version but<br>
&gt;&gt; &gt; we<br>
&gt;&gt; &gt; have encountered a problem. We tried itk 3.10.1, and for some series of<br>
&gt;&gt; &gt; images, it gives an exception error when loading the files, and the data<br>
&gt;&gt; &gt; is<br>
&gt;&gt; &gt; not loaded in memory at all, so it&#39;s not possible to view any image.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; We have written a litlle program to reproduce the problem. It is very<br>
&gt;&gt; &gt; simple, it declares the itk image format and the dicom reader, and tries<br>
&gt;&gt; &gt; to<br>
&gt;&gt; &gt; read the files contained in a folder the user has provided as an<br>
&gt;&gt; &gt; argument in<br>
&gt;&gt; &gt; the command line.<br>
&gt;&gt; &gt; First, we only wrote the piece of code that reads the files, but it gave<br>
&gt;&gt; &gt; no<br>
&gt;&gt; &gt; error or exception at all.<br>
&gt;&gt; &gt; Later, we added the QApplication object in the main.cpp like you do in a<br>
&gt;&gt; &gt; typical Qt application. Then, when we run the program, the exception<br>
&gt;&gt; &gt; appeared again, so it seems there&#39;s some problem when using QApplication<br>
&gt;&gt; &gt; with this version of itk (3.10.1).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; We also tried with an earlier version of itk and a later version. With<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; earlier (3.6.0) the problem doesn&#39;t appear, and with the later ( 3.14.0<br>
&gt;&gt; &gt; ) it<br>
&gt;&gt; &gt; continues appearing.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The exception message we get is the following:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; itk::ERROR: Image(0x9ae0b78): Bad direction, determinant is 0. Direction<br>
&gt;&gt; &gt; is<br>
&gt;&gt; &gt; 1 0 0<br>
&gt;&gt; &gt; 0 0 0<br>
&gt;&gt; &gt; 0 0 0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; We tested this under a kubuntu 9.04<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; You can download the source code of the program and additional data<br>
&gt;&gt; &gt; from <a href="http://www.box.net/shared/ctjvebgnr5" target="_blank">http://www.box.net/shared/ctjvebgnr5</a><br>
&gt;&gt; &gt; All those files are compressed using gzip (bug.tar.gz) It contains the<br>
&gt;&gt; &gt; main.cpp to reproduce the problem, with the respective project file for<br>
&gt;&gt; &gt; qt<br>
&gt;&gt; &gt; (<a href="http://bug.pro" target="_blank">bug.pro</a>) and a folder with two dicom images that reproduces the<br>
&gt;&gt; &gt; problem.<br>
&gt;&gt; &gt; To compile the program you will need qt 4.x libraries to be installed (<br>
&gt;&gt; &gt; 4.5<br>
&gt;&gt; &gt; preferably to better reproduce the problem ) and itk libraries too.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this steps to get and run the executable:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 1. qmake <a href="http://bug.pro" target="_blank">bug.pro</a>          # generate the makefiles<br>
&gt;&gt; &gt; 2. make debug              # compile the program with debug info<br>
&gt;&gt; &gt; 3. ./bug-3.10.1 data/     # run the program, passing the directory<br>
&gt;&gt; &gt; containing the image data to load<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It&#39;s a weird problem and we would like to know where is the problem<br>
&gt;&gt; &gt; exactly,<br>
&gt;&gt; &gt; because we don&#39;t know why is this error appearing when using the<br>
&gt;&gt; &gt; QApplication object.<br>
&gt;&gt; &gt; Kind regards,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Jesús Spínola<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Jesús Spínola<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Jesús Spínola<br>
&gt;<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Jesús Spínola<br>
</div>