<DIV><BR>hi,users,</DIV>
<DIV>&nbsp;I wanted to use ITK read PNG image and segement it,then through VTK and show on the VC's dialog.my program can through complie but can't show the result.Next It is my code .<EM>Does anybody could give me some help?</EM><I>&nbsp;thanks .</I></DIV>
<DIV><I>&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; </I><I>&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; sincerely mexiao</I></DIV>
<DIV>class CVTK&nbsp; <BR>{<BR>public:<BR>&nbsp;vtkWin32RenderWindowInteractor *iren;<BR>&nbsp;vtkImageViewer&nbsp; *viewer;</DIV>
<DIV>&nbsp;typedef itk::Image&lt; float, 2 &gt;&nbsp; InternalImageType1;<BR>&nbsp;<BR>&nbsp; typedef itk::Image&lt; unsigned char, 2 &gt; OutputImageType1;<BR>&nbsp;&nbsp;&nbsp; typedef&nbsp; itk::ImageFileReader&lt; InternalImageType1 &gt; ReaderType1;<BR>&nbsp; typedef&nbsp; itk::ImageFileWriter&lt;&nbsp; OutputImageType1&nbsp; &gt; WriterType1;<BR>&nbsp;typedef itk::CastImageFilter&lt; InternalImageType1, OutputImageType1 &gt; CastingFilterType;<BR>&nbsp; typedef itk::CurvatureFlowImageFilter&lt; InternalImageType1, InternalImageType1 &gt; CurvatureFlowImageFilterType;<BR>&nbsp; typedef itk::ConnectedThresholdImageFilter&lt; InternalImageType1, InternalImageType1&gt; ConnectedFilterType;<BR>&nbsp;&nbsp; float lowerThreshold ;<BR>&nbsp;&nbsp; float upperThreshold ;<BR>&nbsp; InternalImageType1::IndexType&nbsp; index;<BR>&nbsp;&nbsp; typedef itk::Image&lt; unsigned char, 2 &gt; ImageType;<BR>&nbsp; typedef itk::ImageToVTKImageFilter&lt;ImageType&gt; ConnectorType;</DIV>
<DIV>public:<BR>&nbsp;vtkCellPicker * picker;<BR>&nbsp;static void MyExecute(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata);<BR>&nbsp;void BeginRenderOn(CStatic* aStatic);<BR>&nbsp;CVTK();<BR>&nbsp;virtual ~CVTK();<BR>};</DIV>
<DIV>//////////////////////////////////////////////////////////////////////////////////////////</DIV>
<DIV>CVTK::CVTK()<BR>{ <BR>&nbsp; &nbsp; lowerThreshold = 150.0;<BR>&nbsp; &nbsp; upperThreshold = 180.0;<BR>&nbsp; &nbsp;index[0] =60;<BR>&nbsp;&nbsp;index[1] =116;<BR>&nbsp;&nbsp;ReaderType1::Pointer reader = ReaderType1::New();<BR>&nbsp;&nbsp;reader-&gt;SetFileName("G:\\ITKVTK\\test\\test\\myProject\\Debug\\BrainProtonDensitySlice.png");<BR>&nbsp;&nbsp;WriterType1::Pointer writer = WriterType1::New();<BR>&nbsp;&nbsp;writer-&gt;SetFileName("G:\\ITKVTK\\test\\test\\myProject\\Debug\\aa.png");<BR>&nbsp;&nbsp;CurvatureFlowImageFilterType::Pointer smoothing = CurvatureFlowImageFilterType::New();<BR>&nbsp;&nbsp;ConnectedFilterType::Pointer connectedThreshold = ConnectedFilterType::New();<BR>&nbsp; &nbsp;&nbsp;&nbsp;CastingFilterType::Pointer caster = CastingFilterType::New();<BR>&nbsp;&nbsp;smoothing-&gt;SetInput( reader-&gt;GetOutput() );<BR>&nbsp;&nbsp;connectedThreshold-&gt;SetInput( smoothing-&gt;GetOutput() );<BR>&nbsp;&nbsp;caster-&gt;SetInput( connectedThreshold-&gt;GetOutput() );<BR>&nbsp;&nbsp;writer-&gt;SetInput( caster-&gt;GetOutput() );<BR><BR>&nbsp;&nbsp;smoothing-&gt;SetNumberOfIterations( 5 );<BR>&nbsp;&nbsp;smoothing-&gt;SetTimeStep( 0.125 );<BR>&nbsp;&nbsp;connectedThreshold-&gt;SetLower(&nbsp;&nbsp;lowerThreshold&nbsp;&nbsp;);<BR>&nbsp;&nbsp;connectedThreshold-&gt;SetUpper(&nbsp;&nbsp;upperThreshold&nbsp;&nbsp;);<BR>&nbsp;&nbsp;connectedThreshold-&gt;SetReplaceValue( 255 );<BR>&nbsp;&nbsp;connectedThreshold-&gt;SetSeed( index );<BR>&nbsp; &nbsp;ConnectorType::Pointer connector = ConnectorType::New();<BR>&nbsp;&nbsp;connector-&gt;SetInput( caster-&gt;GetOutput()); <BR>&nbsp;&nbsp;<BR>// writer-&gt;Update();<BR><BR>&nbsp;&nbsp;viewer = <SPAN class="t_tag" onclick="tagshow(event)" href="tag.php?name=vtk">vtk</SPAN>ImageViewer::New();<BR>&nbsp; &nbsp;viewer-&gt;SetInput(connector-&gt;GetOutput());<BR>&nbsp; &nbsp;viewer-&gt;SetColorWindow(256);<BR>&nbsp; &nbsp;viewer-&gt;SetColorLevel(128);<BR><BR>iren = vtkWin32RenderWindowInteractor::New();<BR>&nbsp; &nbsp;&nbsp; &nbsp;viewer-&gt;SetupInteractor(iren);<BR>&nbsp;&nbsp;//&nbsp; &nbsp;connector-&gt;Update();<BR>picker=vtkCellPicker::New();<BR>&nbsp; &nbsp; //picker-&gt;SetTolerance(0.00001);<BR><BR>vtkCallbackCommand * cmd = vtkCallbackCommand::New();<BR>cmd-&gt;SetCallback(CVTK::MyExecute);<BR>cmd-&gt;SetClientData( this );<BR>picker-&gt;AddObserver(vtkCommand::EndPickEvent, cmd);<BR>iren-&gt;SetPicker(picker);<BR>cmd-&gt;Delete(); <BR><BR>}</DIV>
<DIV>/////////////////////////////////////////////////////<BR>BOOL CDlgVTKITKDlg::OnInitDialog()<BR>{<BR>&nbsp;CDialog::OnInitDialog();<BR>&nbsp;SetIcon(m_hIcon, TRUE);&nbsp;&nbsp;&nbsp;// Set big icon<BR>&nbsp;SetIcon(m_hIcon, FALSE);&nbsp;&nbsp;// Set small icon<BR>&nbsp;// TODO: Add extra initialization here<BR>&nbsp;this-&gt;m_vtk.BeginRenderOn(&amp;(this-&gt;m_RenderArea));//have been defined CVTK m_vtk;<BR>&nbsp;&nbsp;&nbsp; UpdateData(FALSE);<BR>&nbsp;<BR>&nbsp;return TRUE;&nbsp; // return TRUE&nbsp; unless you set the focus to a control<BR>}<BR>///////////////////////////////////////////////////////////////////////<BR>void CVTK::BeginRenderOn(CStatic * aStatic)<BR>{<BR>CRect rect;<BR>aStatic-&gt;GetClientRect(&amp;rect);<BR>viewer-&gt;SetSize(rect.Width(),rect.Height());<BR>viewer-&gt;SetParentId(aStatic-&gt;m_hWnd);&nbsp;&nbsp;&nbsp;</DIV>
<DIV>viewer-&gt;Render();&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; </DIV>
<DIV>// iren-&gt;Initialize();<BR>}</DIV>
<DIV>/////////////////////////////////////////////////////////////////<BR>void CVTK::MyExecute(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)<BR>{<BR>CVTK *m_viewer = reinterpret_cast&lt;CVTK*&gt;(clientdata );<BR>&nbsp; &nbsp; if (m_viewer-&gt;picker-&gt;GetCellId()&lt;0)<BR>{<BR>&nbsp;&nbsp;AfxMessageBox("CellID &lt; 0");<BR>}<BR>&nbsp; &nbsp; else<BR>{<BR>&nbsp;&nbsp;AfxMessageBox("CellID &gt; 0");<BR>&nbsp;&nbsp;double ScreenCoordinate[3],globalCoordinate[3];&nbsp;</DIV>
<DIV>&nbsp;&nbsp;m_viewer-&gt;picker-&gt;GetSelectionPoint(ScreenCoordinate);&nbsp;<BR>&nbsp;&nbsp;m_viewer-&gt;picker-&gt;GetPickPosition(globalCoordinate); </DIV>
<DIV>};<BR>}<BR></DIV><br><!-- footer --><br><span title="neteasefooter"/><hr/>
<a href="http://www.yeah.net">网易邮箱,中国第一大电子邮件服务商</a>
</span>