<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16711" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2><FONT face="Times New Roman" size=3>Hi 
people,<BR><BR>I'm trying to build an application to read DICOM and Analyse 
images. First, I made the interface using glade and I had no problem with that. 
I exported it to C++ code. After that, I eddited the code to read DICOM images. 
I want to display the image on a vtk renderer window and for that I used vtkmm. 
The problem is that the program reads the image but it doesn' t display it 
(render it... actually I don't know exactlly what's going on!). Here is the main 
C++ source code:<BR><BR>#include &lt;gtkmm/stock.h&gt;<BR>#include 
&lt;gtkmm/filechooserdialog.h&gt;<BR>#include 
&lt;vtkPolyDataMapper.h&gt;<BR>#include &lt;vtkCubeSource.h&gt;<BR>#include 
&lt;vtkSphereSource.h&gt;<BR>#include &lt;vtkRenderer.h&gt;<BR>#include 
&lt;vtkRenderWindow.h&gt;<BR>#include 
&lt;vtkRenderWindowInteractor.h&gt;<BR>#include 
&lt;vtkVolume16Reader.h&gt;<BR>#include &lt;vtkPolyDataMapper.h&gt;<BR>#include 
&lt;vtkActor.h&gt;<BR>#include &lt;vtkOutlineFilter.h&gt;<BR>#include 
&lt;vtkCamera.h&gt;<BR>#include &lt;vtkStripper.h&gt;<BR>#include 
&lt;vtkLookupTable.h&gt;<BR>#include 
&lt;vtkImageDataGeometryFilter.h&gt;<BR>#include 
&lt;vtkProperty.h&gt;<BR>#include &lt;vtkPolyDataNormals.h&gt;<BR>#include 
&lt;vtkContourFilter.h&gt;<BR>#include &lt;vtkImageData.h&gt;<BR>#include 
&lt;vtkImageMapToColors.h&gt;<BR>#include &lt;vtkImageActor.h&gt;<BR>#include 
&lt;vtkDICOMImageReader.h&gt;<BR>#include 
&lt;vtkImageGaussianSmooth.h&gt;<BR><BR>#include "vtkmm.h"<BR>#include 
"config.h"<BR>#include "window1.hh"<BR><BR>window1::window1() : 
window1_glade()<BR>{<BR>&nbsp; this-&gt;signal_check_resize().</FONT>
<DIV dir=ltr>&nbsp; connect(sigc::mem_fun(*this, 
&amp;window1::checkResize));<BR>&nbsp; // Creates a widget for VTK 
rendering<BR>&nbsp; renArea = new class Gtk::Vtk::RenderingArea();<BR>&nbsp; 
renderer = renArea-&gt;get_vtk_renderer();<BR>&nbsp; 
renderer-&gt;SetBackground(0,0,0)<WBR>;<BR><BR>&nbsp; renArea2 = new class 
Gtk::Vtk::RenderingArea();<BR>&nbsp; renderer2 = 
renArea2-&gt;get_vtk_renderer();<BR>&nbsp; 
renderer2-&gt;SetBackground(0,0,<WBR>0);<BR><BR>&nbsp; renArea3 = new class 
Gtk::Vtk::RenderingArea();<BR>&nbsp; renderer3 = 
renArea3-&gt;get_vtk_renderer();<BR>&nbsp; 
renderer3-&gt;SetBackground(0,0,<WBR>0);<BR>&nbsp; // Reserves 200 pixels for 
the VTK widget<BR>&nbsp; hpaned1-&gt;set_position(800);<BR><BR>&nbsp; 
fixed1-&gt;set_size_request(400,(<WBR>this-&gt;get_height())/2);<BR>&nbsp; 
fixed2-&gt;set_size_request(400,(<WBR>this-&gt;get_height())/2);<BR>&nbsp; 
fixed3-&gt;set_size_request(400,(<WBR>this-&gt;get_height())/2);<BR><BR>&nbsp;&nbsp; 
// Adds the VTK widget to its reserved area<BR>&nbsp; 
fixed1-&gt;add(*renArea);<BR>&nbsp; fixed2-&gt;add(*renArea2);<BR>&nbsp; 
fixed3-&gt;add(*renArea3);<BR>&nbsp; renArea-&gt;show();<BR>&nbsp; 
renArea2-&gt;show();<BR>&nbsp; renArea3-&gt;show();<BR>&nbsp; 
this-&gt;maximize();<BR>}<BR><BR>void 
window1::on_dicom1_activate()<BR>{<BR>&nbsp;&nbsp; Gtk::FileChooserDialog 
dialog("Please choose a 
file",Gtk::FILE_CHOOSER_<WBR>ACTION_OPEN);<BR>&nbsp;&nbsp; 
dialog.set_transient_for(*<WBR>this);<BR><BR>&nbsp;&nbsp; //Add response buttons 
the the dialog:<BR>&nbsp;&nbsp; dialog.add_button(Gtk::Stock::<WBR>CANCEL, 
Gtk::RESPONSE_CANCEL);<BR>&nbsp;&nbsp; dialog.add_button(Gtk::Stock::<WBR>OPEN, 
Gtk::RESPONSE_OK);<BR><BR>&nbsp;&nbsp; //Add filters, so that only certain file 
types can be selected:<BR><BR>&nbsp;&nbsp; Gtk::FileFilter 
filter_dicom;<BR>&nbsp;&nbsp; filter_dicom.set_name("DICOM 
images");<BR>&nbsp;&nbsp; filter_dicom.add_pattern("*");<BR>&nbsp;&nbsp; 
dialog.add_filter(filter_<WBR>dicom);&nbsp; <BR>&nbsp;&nbsp; int result = 
dialog.run();<BR><BR>&nbsp;&nbsp; //Handle the response:<BR>&nbsp;&nbsp; 
switch(result)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
case(Gtk::RESPONSE_OK):<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Open clicked." 
&lt;&lt; std::endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Notice that 
this is a std::string, not a 
Glib::ustring.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string strFolderPath 

"/home/talita/Projetos/<WBR>projeto3/src/Fatias";//dialog.<WBR>get_filename();//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
std::cout &lt;&lt; "File selected: " &lt;&lt;&nbsp; strFolderPath &lt;&lt; 
std::endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer = 
renArea-&gt;get_vtk_renderer();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
renderer-&gt;RemoveAllViewProps()<WBR>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
vtkDICOMImageReader *dicom = vtkDICOMImageReader::New();// 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dicom-&gt;SetDirectoryName 
(strFolderPath.c_str());//<WBR>letitura das imagens atraves do string 
digitado<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dicom-&gt;Update();// ler 
<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; vtkImageGaussianSmooth 
*GaussianSmooth = vtkImageGaussianSmooth::New();<BR>&nbsp;&nbsp;&nbsp; 
GaussianSmooth-&gt;<WBR>SetInputConnection(dicom-&gt;<WBR>GetOutputPort());<BR>&nbsp;&nbsp;&nbsp; 
GaussianSmooth-&gt;Update();<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp; &nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp; vtkContourFilter *skinExtractor = 
vtkContourFilter::New();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
skinExtractor-&gt;<WBR>SetInputConnection( 
GaussianSmooth-&gt;GetOutputPort(<WBR>));<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; skinExtractor-&gt;SetValue(0, 50);<BR><BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp; &nbsp;&nbsp;&nbsp; vtkPolyDataNormals *skinNormals = 
vtkPolyDataNormals::New();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
skinNormals-&gt;<WBR>SetInputConnection(<WBR>skinExtractor-&gt;GetOutputPort()<WBR>);<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
skinNormals-&gt;SetFeatureAngle(<WBR>60.0);<BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp; 
&nbsp;&nbsp;&nbsp; vtkStripper *skinStripper = 
vtkStripper::New();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
skinStripper-&gt;<WBR>SetInputConnection(<WBR>skinNormals-&gt;GetOutputPort());<BR>&nbsp; 
&nbsp;&nbsp;&nbsp; vtkPolyDataMapper *skinMapper = 
vtkPolyDataMapper::New();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
skinMapper-&gt;<WBR>SetInputConnection(<WBR>skinStripper-&gt;GetOutputPort())<WBR>;<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; skinMapper-&gt;<WBR>ScalarVisibilityOff();<BR>&nbsp; 
&nbsp;&nbsp;&nbsp; vtkActor *skin = vtkActor::New();<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; skin-&gt;SetMapper(skinMapper);<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; skin-&gt;GetProperty()-&gt;<WBR>SetDiffuseColor(1, .49, 
.25);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
skin-&gt;GetProperty()-&gt;<WBR>SetSpecular(.3);<BR>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
skin-&gt;GetProperty()-&gt;<WBR>SetSpecularPower(20);<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp; vtkOutlineFilter *outlineData = 
vtkOutlineFilter::New();<BR>&nbsp;&nbsp;&nbsp; 
outlineData-&gt;<WBR>SetInputConnection(dicom-&gt;<WBR>GetOutputPort());<BR>&nbsp; 
vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();<BR>&nbsp;&nbsp;&nbsp; 
mapOutline-&gt;<WBR>SetInputConnection(<WBR>outlineData-&gt;GetOutputPort());<BR>&nbsp; 
vtkActor *outline = vtkActor::New();<BR>&nbsp;&nbsp;&nbsp; 
outline-&gt;SetMapper(mapOutline)<WBR>;<BR>&nbsp;&nbsp;&nbsp; 
outline-&gt;GetProperty()-&gt;<WBR>SetColor(1,0,0);<BR><BR>&nbsp; 
&nbsp;&nbsp;&nbsp; renderer-&gt;AddActor(outline);<BR>// THE PROGRAM STOPS HERE 
AND DOES'T DISPLAY THE IMAGE &nbsp;&nbsp; <BR><BR>&nbsp; &nbsp;&nbsp;&nbsp; 
renderer-&gt;AddActor(skin);<BR>&nbsp; &nbsp; <BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp; renderer-&gt;GetActiveCamera()-&gt;<WBR>SetPosition(0.0, 
0.0, -4.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
renderer-&gt;GetActiveCamera()-&gt;<WBR>SetViewUp(0.0, 0.0, 
0.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
renderer-&gt;GetActiveCamera()-&gt;<WBR>SetFocalPoint(0.0, 0.0, 
0.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
renderer-&gt;GetActiveCamera()-&gt;<WBR>SetClippingRange(1.0, 
4.0);<BR>&nbsp;&nbsp;&nbsp; 
renderer-&gt;GetActiveCamera()-&gt;<WBR>ComputeViewPlaneNormal();<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp; 
renArea-&gt;get_vtk_window()-&gt;<WBR>Render();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
case(Gtk::RESPONSE_CANCEL):<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Cancel clicked." 
&lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
default:<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
std::cout &lt;&lt; "Unexpected button clicked." &lt;&lt; 
std::endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; 
<BR>}<BR><BR>void window1::checkResize()<BR>{<BR>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
renArea-&gt;set_size_request(<WBR>fixed1-&gt;get_width(), 
(this-&gt;get_height())/2);<BR>&nbsp;&nbsp;&nbsp; 
renArea2-&gt;set_size_request(<WBR>fixed2-&gt;get_width(), 
(this-&gt;get_height())/2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
renArea3-&gt;set_size_request(<WBR>fixed3-&gt;get_width(), 
(this-&gt;get_height())/2);<BR>}</DIV><BR><BR>I would aprecciate some 
help.<BR><BR>Thank you in advance,</FONT></DIV>
<DIV><FONT face=Arial size=2>Jihan </FONT><FONT face=Arial 
size=2></FONT></DIV></BODY></HTML>