<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.Code
        {mso-style-name:Code;
        mso-style-priority:1;
        font-family:"Courier New";}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">O learned denizens of VTK land,<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I have been presented with a wacky DICOM image, which fails to render properly in vtk (looks like banded noise instead of a shin bone).&nbsp; I have produced a gdcmdump of the file, which uncovers what appears to me to be a conflict in the pixel
 format.&nbsp; Here are what I believe to be the salient parts of the dump, note that in the main metadata the pixels are claimed to be 10-bit in 16-bit allocation, but in the image data metadata, it is shown to be 8-bit pixels in 8-bit boxes.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">(0028,0100) US 16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 Bits Allocated<o:p></o:p></p>
<p class="MsoNormal">(0028,0101) US 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 Bits Stored<o:p></o:p></p>
<p class="MsoNormal">(0028,0102) US 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 High Bit<o:p></o:p></p>
<p class="MsoNormal">&#8230;<o:p></o:p></p>
<p class="MsoNormal">(0089,1010) SQ (Sequence with undefined length)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # u/l,1 Stamp Image Sequence<o:p></o:p></p>
<p class="MsoNormal">&nbsp; (fffe,e000) na (Item with undefined length)<o:p></o:p></p>
<p class="MsoNormal">&#8230;<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; (0028,0100) US 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 Bits Allocated<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; (0028,0101) US 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 Bits Stored<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; (0028,0102) US 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 2,1 High Bit<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Now ImageMagick identify and convert appear to have no problems whatsoever with the file, in fact if I use convert to spit out a jpg/png/whatever, that renders properly.&nbsp; I&#8217;ve included a single image, which contains small snapshots of the
 DICOM on the left and the ImageMagick-extracted png on the right.&nbsp; (I have tried to use gdcmconv and raw to reformat the file, but have failed thus far to get any effect.)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><img width="417" height="541" id="Picture_x0020_1" src="cid:image001.png@01CF0D4C.E0BCD120"><o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Here&#8217;s the code that produces the DICOM rendering.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">#!/usr/bin/env python<o:p></o:p></p>
<p class="MsoNormal">import vtk<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">reader = vtk.vtkDICOMImageReader()<o:p></o:p></p>
<p class="MsoNormal">reader.SetFileName(&quot;IM3&quot;)<o:p></o:p></p>
<p class="MsoNormal">ia = vtk.vtkImageActor()<o:p></o:p></p>
<p class="MsoNormal">ia.GetMapper().SetInputConnection(reader.GetOutputPort())<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">ren = vtk.vtkRenderer()<o:p></o:p></p>
<p class="MsoNormal">renWin = vtk.vtkRenderWindow()<o:p></o:p></p>
<p class="MsoNormal">renWin.AddRenderer(ren)<o:p></o:p></p>
<p class="MsoNormal">iren = vtk.vtkRenderWindowInteractor()<o:p></o:p></p>
<p class="MsoNormal">iren.SetRenderWindow(renWin)<o:p></o:p></p>
<p class="MsoNormal">iren.Initialize()<o:p></o:p></p>
<p class="MsoNormal">ren.AddActor(ia)<o:p></o:p></p>
<p class="MsoNormal">ren.SetBackground(1.0, 1.0, 1.0)<o:p></o:p></p>
<p class="MsoNormal">renWin.SetSize(400, 800)<o:p></o:p></p>
<p class="MsoNormal">renWin.Render()<o:p></o:p></p>
<p class="MsoNormal">iren.Start()<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">What I suspect is happening, is that the VTK DICOM reader is using the numbers from the main metadata to interpret the pixel data, thus resulting in bit shifts that cause the banding in the image.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Has anyone seen this sort of problem before?&nbsp; Even better, if you have seen it, how did you cure it?&nbsp; (I&#8217;ve anonymized the x-ray headers, so if anyone would like a copy of the offending image file, it&#8217;s ok to distribute.)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Thanks in advance,<o:p></o:p></p>
<p class="MsoNormal">Eric<o:p></o:p></p>
</div>
</body>
</html>