基于ITK、VTK与MFC读取DICOM图像
基于ITK,VTK以及MFC读取DICOM图像的文献@ErtoRwww.crter.org吕哧琪,等于1K、K和MC的DCOM图像读写及显示文章是在视类的构造函数及其析构函数中实现它们的初始化及善后工作的。其次,改写视图类的虚函数Ocrea(),以下为关键代码ren Win->AddRenderer(ren);renWin->Setwindowld(m hWnd)iren->SetRenderWindow(ren Win)最后,在视图类的 OnDraw函数中添加绘制代码Render()当然窗口的尺寸也可以在这里进行调整。Figure 5 Unintegrated display effect此,可以在MFc应用稈序视图区域中实现与VTK图5未集成显示效果渲染对象的父互和鼠标响应操作,并可以利用MFC界面控件来进行参数控制,本文程序中鼠标按下会弹出一个对于VTK与MFC的集成已有相关文献介绍,分为快显示图像上象素坐标及象素值的消息框(见图7,8)借以速集成和深度集成两种集成方式。图6是作者将图5对应说明鼠标响应交互操作的实现,至此完成了TK与MFC序做了怏速集成后 DICOMA像的显示。集成过程只需的深度集成。读者也可以参考ⅤTK工具包 Examples设置 vtk RenderWindow类中的 SetParent函数为当前 GUlIn32MFC下的例程,实现更丰富的集成。该视图或对话框句柄即可,关键代码如下所示和集环覓下的面显示将结合后续DCOM文件显示tkRenderwindow部分给出。FrenWin=vtkRenderWindow: NewovtkRenderWindowlnteractoriren=vtkRenderWindowInteractor Newothis->renWin->SetParentld(this->m hWnd);this->iren->SetRenderWindow(this->renIn);Figure 7 Display effect of vik depth integration图7深度集成环境下VTK显示效果Figure 6 Display effect of fast integration图6快速集成显示效果快速集成屏蔽」MFC的鼠标响应和消息传递,不便于后续编程实现更复杂的功能。VTK与MFC集成的请为:0007000根本目的是实现更实用、更灵活的交互界面,以弥补VTK自身在该方面的缺憾,那么就要求不仅要将TK的渲染窗口嵌入于MFC应用程序视图区域,而且还要Figure 8 Display effect after flipping图8翻转后VTK显小效果使其融为一体,即拥有一个统一的具有友好交互能力的界面。在此,重点介绍下作者尝试实现VTK与MFC深度集成的另一种方法,具体步骤如下:首先,在视类中增2D|cOM图像的读写与显示加可视化管道中会用到的类,用这些类实例化对象,文章用到的对象有:渲染对象ren)、渲梨窗口( renin)、2.1DCOM图像的读写文章中的数据对象是一维交互对象(ren)、演员( BrainActor)、映射( Brain Map)等, DICOM图像。读与DCOM文件的功能使用∏TK提供的范o1994-2011ChinaAcadcmicJournalElcctronicPublishingHousc.Allrightsroscrved.http://www.cnki.nctcn.zglckf.com2418P.O. Box 1200, Shenyang 110004吕烧琪,等干K、VTK和MFC的DCOM图像读写及显示CRTOR Ww. cRTER org函功能来实现,在∏K中,DCOM的范函性由GDCM厍写DcOM文件是一件非常精密的操作,因为所要处理的提供。这个开放的源码厍由INSA_Lyon的 creats团队发是大量重要的有关患者详细而精确的数据,并且涉及到展的。实验使用: GDCMImagelO类来建立与GDCM库患者的隐私问题。所以在写的过程中,一定要核实出你的连接,实现读取 DICOM图像的功能。|TK数据处理管的代码所生成的头文件信息不会给患者的治疗和诊断道中的三种处理对象具休为:Sσurce采用带来风险,要确休沿着数据处珄管道正桷地传递DC○Mik: itklmage SeriesReader类; Filter来用了ik∷文件的细节信息,从而才能保证正确地将原D|COM文件Curvature FlowImage Filter; Mapper采用了itk:的这些信息写入新的DcOM序列图像文件。以下便是实itkImageFileWriter类。现该部分内容的主要代码:单张二维DCOM图像的读写:本部分实现单张二维首先定义图像类型,并明确所选象素类型和维度,p|c○M图象以 DICOM格式读入与以DCOM格式写入从而定义序列图像读取类型。的工作。首先声明象素类型和图像的维数,以它们作为typedef signed short PixelType模板参数来实例化读入图像的类型,用该图像类型作为const unsigned int Dimension=3;模板参数再实例化读取器 Reader的类型并创建一个typedef itk: Image< PixelType, DimensionReader,将读入图像的文件路径和文件名作为参数传给 mage Type;Reader,并为 Reader关联 GDCMImagelO对象,调用typedef itk: Image SeriesReader< Image TypeUpdate(函数更新读取过程,DcOM图像就已读入内存 ReaderType中。用 Reader的 Getoutput()方法可以获得图像数据的接下来声明并实例化实际读写DCOM图像的指针。月前的焦点是如何再一次将图像在新文件中保存k: GD CMImagelC对象和为所有切片生成文件名并排成DCOM格式。具体的,先实例化一个 Image File Writer序的tk: GDCMSeries fileNames对象,并创建相应智能类型,并创建指针 Writer,将写入的图像的文件路径和指针 gdcmIO和 names Generator。文件名作为参数传给 Writer,并为其关联ImageloType: PointerGDCM| magelo对象,这个对象是知道DCOM格式的内 gdcmIo= magelOType:New()部结构的,最后用 Update()来触发写入程序。文章在读Names Generator Type: Pointer写过稈中对图像进行了保留边缘的平滑去噪处珥,以下 names Generator= Names GeneratorType:|New()为主要代码names Generator->SetInputDirectory(argvImageloType: Pointer生成读入文件的文件名gdcmImagelo=ImageloType: NeW(const ReaderType: FileNames Containerreader->Setlmagelo(gdcmImagelO)filenames=namesGenerator->GetInput FileNames():reader> SetFileName(argv):∥参数为文件路径实例化 Reader Type对象并创建智能指针 reader,读及文件名取DcOM格式序列图像。writer->Setlmagelo(gdcmImagelO)reader->Setlmagelo(gdcmlO)rwriter->SetFileName(argv2);∥将平滑后图像以reader->SetFileNames(filenames )D|COM格式写入到参数所指定的文件中。最后用 reader的 Update()触发读取程序,最好放在try/catch问询块中,在此不再赘述。CurvatureFlowImageFilterType: Pointer至此,可以开始写数据了。首先把确定存在的输出smoother= rvatureFlowlmageFilterType:|New();∥目录传给 outputDirectory指针。实例化一个平滑滤波器的对象const char outputDirectory=argv;smoother-> SetNumberoflterations(5):W平滑滤波然后,实例化 SeriesWritertype对象并创建智能指器的迭代次数设为5针 series writer,将 reader的输出写为D|COM格式序列smoother-> SetTime Step(0.125);∥平滑滤波器的像时间步长设为0125series Writer->SetInput(reader->Getoutput()smoother->SetInput(reader->Getoutputo)series Writer->Setlmagelo(gdcmIO)writer->Setlnput(smoother->GetOutputO)现在可以设置 G DCMSeriesFileNames在至此完成DCOM单张图像的读写。outputDirectory下产生新的文件名,然后将最新生成的序列二维DCOM图像的读写:这部分}要实现以文件文件传递给 seriesWriter集的方式读取一个DCOM序列图像,并在保持头文件信namesGenerator->SetoutputDirectoryoutputDire息不变的情况下保存为另一个DCOM序列图像的工作。 ctory);/S SN 1673-8225 CN 21-1539/R CODEN: ZLKHAH2419C1994-2011ChinaAcadcmicJOurnalElcctronicPublishingHousc.Allrightsrcscrved.http://www.cnki.nct@RterwWw.crtEr. org吕晓琪,等基于1K、VK和MFC的DCOM图像读写及显示seriesWriter->SetFileNames(names Generator->GetOutputFileNames();3结论最后一步也是最关键的一步,用 reader读取MetaDataDictionary并传递给 seriesWriter。之所以关键TK是算法设计者的一个有力助手,是医学图像处是因为 Meta Data Dictionary包含」所有输入的DcoM理工作者的案例研究算法仓厍,遺憾的是不提供Ul文件的头文件。VTK软件开发包强大的图形处理和可视化功能,却缺乏seriesWriter> SetMetaData Dictionary Array( reade实用、灵活的交互界面,而MFC具有强大的U开发能力。r->GetMetaData DictionaryArray ()结合三者的特点,作者通过对DCOM医学图像的读取与末了调用 seriesWriter的 Update)触发写程序,放在显小,将TK、VTK和MFC有机的结合起来,扬长避短,try/catch问洵块中,在此不再赘述。为三者集成环境下的软件开发做了一个初步的尝试,而22DCOM图像的显示本部分主要介绍在前述方法对于在此基础之上一者更强大功能的实现(诸如医学图实现的∨TK、ITK和MFC集成环境卜DCoM图像的显示像的分割与准、三维可视化、虚拟手术导航等)有待方法。在此,将利用丨TK读取的DC○M文件用VTK显示深入探讨与研究。在MFC单文档视图区,因为旨在说明方法所以未给出复杂的交互界面。4参考文献VTK薮据处理管道中采用了vkD|cOM|mageReader:类、 teNderer类、 vtkRenderwindow类、[1 Kitware Inc. NLM Insight Segmentation and registration ToolkitEB/OL」2005.http:/www.itκOrgtkRenderwindowInteractor类、 traCtor2D类、[21 Ackerman MJ. the visible human project. Proceedings of thelEEE,1998;863):501-504.v+ < Mapper类,并实例化各个类的对象并创建相21/mD(Q小用m时应智能指针。图7为显示效果,相应关键代码如下计算机技术发,200816(4=515 NEMA. The DICOM standard. Technical report, NEMA,Brain Map->SetInput(vtkreader->Getoutput()http://medial.nemaorg,2004[61http:/www.itk.org/courseWare/training/gettIngstartedl-webpageBrainActor->SetMapper (BrainMap);ren->AddActor(BrainActor)http:ww.kitwvare.comiproducts/books/vtkquide.htmlBenoit Regrain EricBoix, Mathieu and Jean Pierre roux. the「TK所读取的图像一经VTK显示后图像发牛了翻GDCM Library. CNRS, INSERM, INSALyon, UCBLyonhttp://www-creatis.insa-lyon.fr/publIc/gdcm转,并且是上下翻转而左右并不发生翻转,原因是ITK的坐标系统和VTK的坐标系统Y轴是相反的,所以为了来自本文课题的更多信息能正确显示图像还需要将Y轴进行翻转,可见这种翻转墓金资助:国家自然科学基金资助项目(60761002)可以发生在两种情形,一种是在K读入图像的时候翻作耆贡:笫一作者进行实验设计及评估,实验实施转即改变文件的读取方式,该种方式可参考∏TK的为笫二作者,资料收集为笫三作者,第二作者成文,第FliplmageFilter类,该类可以实现翻转任何坐标轴中的作者审校并对文章负责图像,对于本文屮情形可以使用一个[0,们翻转排列,列益冲突:课题未涉及任何厂家及相关雇主或其灺经表示X轴保持不变时对Y轴进行翻转;另一种是在K图济组织直接或间接的经济或利益的赞助像薮据凵经转换为ⅥTK图像数据后将新的TK图像数本文创新性:于201101以文章关键词为检索关键词据Y轴鄱转,这也正是本文实现的图像翻转方法。相应在CNK丨欻捃库、维普中文科技期刊数据库、万方学位论关键代码:文全文数据库, ELSEVIER数据库等多个数据库中检索未flipY->SetFilteredAxis(1)见具有相同创新点文章flipY->SetInputConnection(vtkreader->Getoutput方法创新:为医学图像读写及显示后一系列的玉学Eort()像处理工作搭建了灵活实用的实验平台,进而得到相关基BrainMap->SetInput(flipY->GetOutput():金资助。以上便是集成环境下的D|COM图像显小。o1994-2011ChinaAcadcmicJournalElcctronicPublishingHousc.Allrightsroscrved.http://www.cnki.nctCn.zg/ckf.com2420P.O. Box 1200, Shenyang 110004
- 2020-12-01下载
- 积分:1
Web前端开发经典面试题(附参考答案)
Web前端开发工程师经典面试题(附参考答案)CSS3支持下列哪一个标签?(A)A box-shadowB borderC backgroundD. display>把鼠标移到按钮并点击时,会产生一串什么样的事件?(D)A. active hove focusB foucs hove activeC. hove active foucusD hover focus active>以下位于间的代码片段是做什么用的(B)1 A.使得页面编码合乎要求B.表示支持响应式设计C.支持正常的绘制和缩放D.表示针对滚屏进行适当的适配下面关于、FF下面CSS的解释区别描述正确的有?(C、D)八. FireFox的dⅳ的内嵌di可以把父级的高度撑大,而|6.0不可以,要自己设置高度。B.当设置为三列布局时, FireFox0的 float宽度不能达到100%,而l6.可以。当设置为两列布局时,两种浏览器都可以。C.火狐浏览器中,非 float的di前面有同一父级的foat的dV,此di若有背景图,要使用 clear:both,才能显示背景图,而60中不用使用 clear:bothD.在[text- decoration: underline]的属性下,6.0显示的下划线会比 FireFox低一点。在 FireFox中,部分笔画会在下划线的下面1个象素左右。极客学院页码:3/21jikexueyuan. com在使用tabe表现数据时,有时候表现出来的会比自己实际设置的宽度要宽,为此需要设置下面哪些属性值?(A、D)A cellpadding=0B padding: OC. margin: OD. cellspacing=”0在 bootstrap中,关于导航条,下列说法正确的是?(A、B、C、D)A.应该将被包裹的元素放到na∨bar-co|apse类中B.表单应该放置于 nayar-form内C.可以使用 navbar-ef和 navan-ght来对齐导航条D.可以使用 navbar-fixed-top和 navbar- fixed-boom来将导航条固定到顶部或底部嵌入在HTML文档中的图像格式可以是?(A、C、D)A * gif米tfC. bmpD. jpg下列js可以让一个 input的背景颜色变成红色的是?(AA inputElement style backgroundColor =redB. inputelement backgroundColor = redC. inputElement style backgroundColor=#oooOD. inputElement backgroundColor=#oooo极客学院页码:4/21iikexueyuan. com元素的at和tte有什么异同,选出正确的说法?(B)A.不同的浏览器,表现一样B.at和tite同时设置的时候,at作为图片的替代文字出现,tite是图片的解释文字C.a和tite同时设置的时候,tite作为图片的替代文字出现,at是图片的解释文字D.以上说法都不正确在不涉及样式情况下页面元素的优先显示与结构摆放顺序无关。请判断这句话的正确与否。(B)A.对B.错下列哪个操作是W3c标准定义的阻止事件向父容器传递:(C)A epreventDefault(B. e. cancelBubble=trueC. e. stopPropagationoD e.stoplmmediatePropagationo对于 border- radius标签,说法镨误的是(B)A.表示圆角边框B.|E8支持良好C.|E9支持良好D. firefox支持良好≯下述有关css属性 position的属性值的描述,说法错误的是?(B)A. static:没有定位,元素出现在正常的流中B. fixed:生成绝对定位的元素,相对于父元素进行定位C. relative:生成相对定位的元素,相对于元素本身正常位置进行定位。D. absolute:生成绝对定位的元素,相对于 static定位以外的第一个祖先元素进行定位。极客学院页码:5/21iikexueyuan. com下面有关 html Doctype的描述,说法错误的是?(D)八.它的责任就是告诉浏览器文档使用哪种htm或者xhtm规范B.不同文档模式主要影响CSS内容的呈现,尤其是浏览器对盒模型的解析C.不同浏览器在混杂模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言。D.如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启严格模式ν Doctaρe?严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?用于声明文档使用那种规范(什HTML/ XHTML)一般为严格过度基于框架的htm文档,加入ⅩM声明可触发,解析方式更改为5.5拥有|5.5的bug前端页面有哪三层构成,分别是什么?作用是什么?结构层HTML表示层CSS行为层js对WEB标准以及W3C的理解与认识?标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链cs和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性。XHTML和HTML有什么区别?HTML是一种基本的WEB网页设计语言, XHTML是一个基于XML的置标语言最主要的不同ⅩHTML元素必须被正确地嵌套。XHTML元素必须被关闭。标签名必须用小写字母。ⅩHTML文档必须拥有根元素。极客学院页码:6/21iikexueyuan. comCSS的基本语句构成是?选择器{属性1:值1:属性2值2;…]行內元素有哪些?块级元素有哪些?CSS的盒模型?块级元素: div p hI h2h3h4 form ul行内元素: a b br i span input selectCss盒模型内容, border, margIn, paddingCSS引入的方式有哪些?lnk和@ mport的区别是?内联内嵌外链导入区别:同时加载前者无兼容性,后者CSS2.1以下浏览器不支持Link支持使用 javascrⅰpt改变样式,后者不可丶CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和 lmportant哪个优先级高?标签选择符类选择符j选择符继承不如指定丨d>cass>标签选择后者优先级高你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?e(le内核)火狐( Gecko)谷歌( webkit) opear( Prestoimg标签上tte与at属性的区别是什么?A当图片不显示是用文字代表。Tite为该属性提供信息极客学院页码:7/21iikexueyuan. com描述 css reset的作用和用途。Reset重置浏览器的cSs默认属性,浏览器品种不同,样式不同,然后重置让他们统-。写出几种E6BUG的解决方法1.双边距B∪ G float引起的使用 display2.3像素问题使用foat引起的使用 dislpay: inline-3pⅩ3.超链接 hover点击后失效使用正确的书写顺序 link visited hover active4. le z-inde问题给父级添加 position relative5.Png透明使用js代码改6.Min- height最小高度! mportant解决7. select在ie6下遮盖使用 iframe嵌套8.为什么没有办法定义1px左右的宽度容器(E6默认的行高造成的,使用over: hidden, zoom: 0.08 line-height: px)9.ie6不支持 mportant解释 CSs sprites,如何使用。CsS精灵把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量。≯浏览器标准模式和怪异模式之间的区别是什么?盒子模型渲染模式的不同使用 window top document compatMode可显示为什么模式什么是语义化的HTML?直观的认识标签对于搜索引擎的抓取有好处什么是语义化的HTML?直观的认识标签对于搜索引擎的抓取有好处极客学院页码:8/21iikexueyuan. com你如何对网站的文件和资源进行优化?有哪些解决方案?文件合并文件最小化/文件压缩使用CDN托管缓存的使用清除浮动的几种方式,各自的优缺点使用空标签清除浮动 clear:both(理论上能清楚任何标签,增加无意乂的标签)2.使用 overflow;auto(空标签元素清除浮动而不得不增加无意代码的弊端,使用zoom:1用于兼容|)3.是用 afert伪元素清除浮动(用于非浏览器)javascript的 typeof返回哪些数据类型Object number function boolean underfind例举3种强制类型转换和2种隐式类型转换?强制( parseInt, parseFloat, number)隐式(==-===)数组方法pop()push0 unshift0shftPush0尾部添加pop0尾部删除Unshift0头部添加 shift头部删除E和标准下有哪些兼容性的写法Var ev= ev l window eventdocument documentElement. clientWidth document body. clientWidthVar target ev.srcElementllevtarget极客学院页码:9/21iikexueyuan. com旧和DOM事件流的区别1.执行顺序不一样2.参数不一样3.事件加不加on4.this指向问题spit0join0)的区别前者是切割成数组的形式,后者是将数组转换成字符串ajax请求的时候get和post方式的区别一个在ur后面一个放在虚拟载体里面有大小限制安全问题应用不同一个是论坛等只需要请求的,一个是类似修改密码的ca和appy的区别Object. call (this, obj l, obj2, obj3)Object. apply (this, argumentsajax请求时,如何解释json数据使用 eval parse鉴于安全性考虑使用 parse更靠谱事件委托是什么让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!闭包是什么,有什么特性,对页面有什么影响?闭包就是能够读取其他函数內部变量的函数。极客学院页码:10/21jikexueyuan.com
- 2020-12-10下载
- 积分:1