
原创 2014年07月31日 14:49:05
配置: VS2008(32-bit)
Python2.7.8(32-bit)
Cmake 3.0
ITK4.5.2
VTK 版本要求5.9及其以上
注意: 和Python结合建议使用VS2008,在VS2010中有可能编译不通过vs安装itk,博主经过多次试验发现在VS2010中总是报错。
1.1 安装VS2008
1.2 安装Cmake
1.3安装Python2.7.8
1.4 安装VTK 5.10(方法见之前的一篇博文)
请从“下载地址”中下载好软件的apk文件,然后使用pc端工具来安装已经下载好的apk文件,或者将apk文件直接放到手机中存储卡中,使用文件管理器进行安装。1.win7系统提醒dll出现错误的时候,可将错误的dll文件记录下来,到网上搜索这个dll文件进行下载. 2.安装dll文件的时候一定要选择64位系统的. 3.如果vc运行的时候dll数量非常多,所以如果要安装大量dll文件的时候就需要重新安装vc运行. 4.如果是对于单独的dll文件来说,在覆盖好文件之后,在命令提示符中使用reg命令实现对于dll的注册,在在命令提示符光标处输入"/。2.从其他xp系统的电脑中拷贝chkdsk.exe程序,或使用expand命令从系统安装盘里解压chkdsk.ex_文件, 将该程序拷贝至系统盘以外的分区,用系统安装盘引导启动至故障恢复台,运行chkdsk c: /f命令,然后重启系统,即可登录。
1.6 下载ITK源码
新建一个目录#ITK_SOUCCE#,将itk下载到该目录下并且解压到当前文件夹。例如,如果#ITK_SOUCCE#=D:\ITK_source,那么解压后ITK的源文件放在了这个目录下面:D:\ITK_source\InsightToolkit-4.5.2
1.7 新建两个文件夹
存放cmake产生的ITK项目文件#SOLUTION_PATH#
存放编译成功后的bin,lib,include等文件#BUILD_OUTPUT#
例如,我的设置是#SOLUTION_PATH#=C:\IVTK\ITK32Py_install
#BUILD_OUTPUT#=C:\IVTK\ITK32Py
where is the source code 选择#ITK_SOUCCE#/InsightToolkit-4.5.2
where to build the binaries 选择#SOLUTION_PATH#
编译器选择VS 2008
等待Configure完成。
cmake的选项中将BUILDTESTING和BUILD EXAMPLES不选。
勾选BUILD_SHARED_LIBS.
安装tortisegit,完成之后在任意路径点右键,选择tortisegit-settings,设置git.exe的路径为c:\msysgit\msysgit\binvs安装itk,即为msysgit的安装路径。2:然后把手机开机并进入手机设置-开发人员选项-usb调试勾上(勾不上的可以在设置-关于手机-版本号这一项连击七次,再返回就有了),驱动安装好了之后连接上电脑root工具会自动识别手机,如下图:。使操作更简便改进:系统文件夹设置 - 目标路径支持点击之后手动输入更改改进:系统文件夹设置 - 选择目标路径时。
勾选ITKV3_COMPATIBILITY
勾选 ITK_WRAP_PYTHON
勾选 Module_ITKVtkGlue
检查VTK_DIR是否正确,例如C:/IVTK/VTK510_32Py/lib/vtk-5.10
再次点击 Configure, 直至所有条目都变成灰色,表示配置成功, 点击Generate确认。
3.1 设置环境变量
gccxml_pah=#SOLUTION_PATH#\Wrapping\Generators\GccXML\gccxml\bin
将%gccxml_path%添加到path环境变量的末尾
3.2 编译
用VS2008打开位于#SOLUTION_PATH#下面的ITK项目文件,选择Release进行编译。

3.3 安装
编译成功后再次编译INSTALL工程,相关的include, lib和bin文件就被提取到了#BUILD_OUTPUT#目录下。
将bin目录下的文件拷贝到gstreamer路径的bin文件夹下,将include、lib文件夹下的文件解压到gstreamer对应的include、lib路径下。在eclipse等ide工具中,用户可以自建user library,然后把spring的jar包都放入其中,当然也可以将jar包直接放在项目的/web-inf/lib目录下,但是如果使用user library,在项目发布时,需要将用户库所引用的jar文件随应用一起发布,就是将user library所使用的jar复制到/web-inf/lib目录下,这是因为对于一个web应用,eclipse部署web应用时不会将用户库的jar文件复制到/web-inf/lib下,需要手动复制。下载visual leak detector,当前版本2.4,在visual c++ ide的"工具"→"选项"→"项目和解决方案"→"vc++ 目录","包含文件"增加vld的"\include"路径,"库文件"增加vld的"\lib\win32"路径,另外动态库"\bin\win32"路径在安装时已经添加到环境变量里面了,若是未添加,则需要手动拷贝"\bin\win32"下的文件到工程debug目录。
4.2将#BUILD_OUTPUT#\lib\ITK-4.5\Python路径添加到Eclipse的PYTHONPATH中
5.1 用ITK打开并保存一副图像
[python] view plain copy
importitk
importsys
importvtk
inputfilename="D:/DATA/small/0200.dcm"
outputfilename="D:/DATA/0200.png"
#
#Readsa2Dimageinwithsignedshort(16bits/pixel)pixeltype
#andsaveitasunsignedchar(8bits/pixel)pixeltype
#
InputImageType=itk.Image.SS2
OutputImageType=itk.Image.UC2
reader=itk.ImageFileReader[InputImageType].New()
writer=itk.ImageFileWriter[OutputImageType].New()
filter=itk.RescaleIntensityImageFilter[InputImageType,OutputImageType].New()
filter.SetOutputMinimum(0)
filter.SetOutputMaximum(255)
filter.SetInput(reader.GetOutput())
writer.SetInput(filter.GetOutput())
reader.SetFileName(inputfilename)
writer.SetFileName(outputfilename)
writer.Update()
5.2 用ITK打开图像,用VTK显示
在上述代码后面添加:
[python] view plain copy
ivfilter=itk.ImageToVTKImageFilter[OutputImageType].New()
ivfilter.SetInput(filter.GetOutput())
viewer=vtk.vtkImageViewer()
iren=vtk.vtkRenderWindowInteractor()
viewer.SetupInteractor(iren)
viewer.SetInput(ivfilter.GetOutput())

viewer.Render()
viewer.SetColorWindow(255)
viewer.SetColorLevel(128)
iren.Start()
5.3 ITK 配准的例子
[python] view plain copy
fromInsightToolkitimport*
fromsysimportargv
fixedImageName="D:/DATA/Brain.png"
movingImageName="D:/DATA/Brainshifted13x17y.png"
outputImageName="D:/DATA/Brainresult2.png"
fixedImageReader=itkImageFileReaderIF2_New()
movingImageReader=itkImageFileReaderIF2_New()
fixedImageReader.SetFileName(fixedImageName)
movingImageReader.SetFileName(movingImageName)
fixedImageReader.Update()
movingImageReader.Update()
fixedImage=fixedImageReader.GetOutput()
movingImage=movingImageReader.GetOutput()
#
#Instantiatetheclassesfortheregistrationframework
#
registration=itkImageRegistrationMethodIF2IF2_New()
imageMetric=itkMeanSquaresImageToImageMetricIF2IF2_New()
transform=itkTranslationTransformD2_New()
optimizer=itkRegularStepGradientDescentOptimizer_New()
interpolator=itkLinearInterpolateImageFunctionIF2D_New()
registration.SetOptimizer(optimizer.GetPointer())
registration.SetTransform(transform.GetPointer())
registration.SetInterpolator(interpolator.GetPointer())
registration.SetMetric(imageMetric.GetPointer())
registration.SetFixedImage(fixedImage)
registration.SetMovingImage(movingImage)
registration.SetFixedImageRegion(fixedImage.GetBufferedRegion())
transform.SetIdentity()
initialParameters=transform.GetParameters()

registration.SetInitialTransformParameters(initialParameters)
#
#IterationObserver
#
defiterationUpdate():
currentParameter=transform.GetParameters()
print"M:%fP:%f%f"%(optimizer.GetValue(),
currentParameter.GetElement(0),
currentParameter.GetElement(1))
iterationCommand=itkPyCommand_New()
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-115690-1.html
美照再一发
我不动