格圖像合成與配準(zhǔn)結(jié)果對(duì)比實(shí)戰(zhàn)指南)
醫(yī)療健康圖像處理數(shù)據(jù)可視化桌面應(yīng)用3D渲染【免費(fèi)下載鏈接】SlicerMulti-platform, free open source software for visualization and image computing.項(xiàng)目地址https://gitcode.com/gh_mirrors/sl/Slicer點(diǎn)擊查看免費(fèi)下載導(dǎo)讀本文面向使用 3D Slicer 進(jìn)行醫(yī)學(xué)影像配準(zhǔn)評(píng)估與可視化對(duì)比的開(kāi)發(fā)者與科研用戶(hù)圍繞 CLI 模塊 CheckerBoard Filter棋盤(pán)格濾波展開(kāi)。該模塊將兩幅體數(shù)據(jù)按用戶(hù)指定的棋盤(pán)格模式交替合成到同一輸出體數(shù)據(jù)中是目視評(píng)估圖像配準(zhǔn)registration結(jié)果是否對(duì)齊的經(jīng)典工具。讀完本文你將掌握 checkerPattern 參數(shù)的語(yǔ)義與默認(rèn)值、模塊的 GUI 操作與命令行調(diào)用方式并通過(guò)源碼與測(cè)試用例理解其“先重采樣、再棋盤(pán)合成”的底層實(shí)現(xiàn)原理。說(shuō)明本文對(duì)應(yīng)的官方文檔頁(yè)為 Docs/user_guide/modules/checkerboardfilter.md。該頁(yè)面通過(guò)兩個(gè){include}指令引入構(gòu)建期自動(dòng)生成的概覽與參數(shù)說(shuō)明其內(nèi)容最終來(lái)源于模塊描述文件 CheckerBoardFilter.xml本文以此 XML 與 CheckerBoardFilter.cxx 源碼為事實(shí)依據(jù)展開(kāi)。模塊定位用棋盤(pán)格目視校驗(yàn)配準(zhǔn)精度CheckerBoard Filter 的核心功能由模塊描述文件定義得非常清晰Create a checkerboard volume of two volumes. The output volume will show the two inputs alternating according to the user supplied checkerPattern. This filter is often used to compare the results of image registration. Note that the second input is resampled to the same origin, spacing and direction before it is composed with the first input. The scalar type of the output volume will be the same as the input image scalar type.翻譯成操作語(yǔ)義輸入兩幅體數(shù)據(jù)volume輸出一幅“棋盤(pán)格”體數(shù)據(jù)兩幅輸入在輸出中按用戶(hù)給定的 checkerPattern 交替出現(xiàn)該模塊最常見(jiàn)的用途是對(duì)比圖像配準(zhǔn)的結(jié)果——把配準(zhǔn)前后的圖像交錯(cuò)顯示若解剖結(jié)構(gòu)在棋盤(pán)交界處依然連續(xù)說(shuō)明配準(zhǔn)對(duì)齊良好若出現(xiàn)錯(cuò)位、斷裂則說(shuō)明配準(zhǔn)存在偏差在合成之前第二個(gè)輸入會(huì)被重采樣到與第一個(gè)輸入相同的 origin原點(diǎn)、spacing體素間距和 direction方向保證兩幅圖像在幾何上嚴(yán)格對(duì)齊后才會(huì)參與棋盤(pán)合成輸出體數(shù)據(jù)的標(biāo)量類(lèi)型scalar type與輸入圖像保持一致例如輸入為 unsigned short輸出同樣為 unsigned short。該模塊隸屬于 Slicer CLICommand-Line Interface模塊體系分類(lèi)為 Filtering在 Modules/CLI/CMakeLists.txt 中被列入構(gòu)建列表模塊名與可執(zhí)行文件名均為CheckerBoardFilter。在 Slicer 圖形界面中使用在 3D Slicer 中該模塊位于Filtering濾波分類(lèi)下模塊名顯示為CheckerBoard Filter。典型的操作步驟從模塊下拉菜單選擇 “CheckerBoard Filter”在IO面板中指定Input Volume 1第一輸入體數(shù)據(jù)與Input Volume 2第二輸入體數(shù)據(jù)前者同時(shí)作為幾何基準(zhǔn)reference image在CheckerBoard Parameters面板中設(shè)置Checker Pattern棋盤(pán)格模式指定Output Volume輸出體數(shù)據(jù)名稱(chēng)點(diǎn)擊 Apply 運(yùn)行在切片視圖中觀(guān)察兩幅圖像交錯(cuò)顯示的棋盤(pán)圖案評(píng)估邊界處結(jié)構(gòu)是否連續(xù)。參數(shù)詳解CheckerBoard Parameters 面板該面板只有一個(gè)核心參數(shù)由模塊描述 XML 定義參數(shù)內(nèi)部名命令行標(biāo)志標(biāo)簽?zāi)J(rèn)值說(shuō)明checkerPattern--checkerPatternChecker Pattern2,2,2指定輸入 1 與輸入 2 在輸出圖像中的交替模式即每個(gè)維度上的棋盤(pán)格數(shù)量。例如2,2,1表示前兩個(gè)維度每隔一個(gè)棋盤(pán)格交替一次第三個(gè)維度使用相同模式checkerPattern在 XML 中定義為integer-vector整型向量類(lèi)型需給出三個(gè)整數(shù)值分別對(duì)應(yīng)體數(shù)據(jù)三個(gè)維度上的棋盤(pán)格數(shù)。取值越小單個(gè)棋盤(pán)格越大兩幅圖像交替得越“疏”取值越大棋盤(pán)格越“密”兩幅圖像被切分得越細(xì)碎。默認(rèn)值2,2,2表示在三個(gè)維度上各按“隔一個(gè)格子交替一次”的模式合成。IO 面板參數(shù)內(nèi)部名標(biāo)簽通道說(shuō)明inputVolume1Input Volume 1inputindex 0第一輸入體數(shù)據(jù)輸出標(biāo)量類(lèi)型與它一致且作為重采樣與棋盤(pán)對(duì)齊的幾何參考inputVolume2Input Volume 2inputindex 1第二輸入體數(shù)據(jù)合成前會(huì)被重采樣到與 inputVolume1 相同的 origin/spacing/directionoutputVolumeOutput Volumeoutputindex 2輸出體數(shù)據(jù)即棋盤(pán)格合成結(jié)果命令行CLI調(diào)用方式作為標(biāo)準(zhǔn) SlicerExecutionModel 驅(qū)動(dòng)的 CLI 模塊CheckerBoard Filter 可以直接在終端中執(zhí)行。以源碼測(cè)試中使用的調(diào)用為例CheckerBoardFilter \ --checkerPattern 5,3,2 \ CTHeadAxial.nhdr \ CTHeadAxialDoubled.nhdr \ CheckerBoardFilterTest.nhdr參數(shù)順序?yàn)?-checkerPattern后跟三個(gè)以逗號(hào)分隔的整數(shù)隨后依次是 inputVolume1、inputVolume2 與 outputVolume 三個(gè)文件路徑。此外SlicerExecutionModel 的標(biāo)準(zhǔn)機(jī)制會(huì)自動(dòng)為模塊生成--xml、--help等通用參數(shù)可用于查看模塊描述與參數(shù)清單。參數(shù)解析與入口CLI 模塊的 C 源碼 CheckerBoardFilter.cxx 使用PARSE_ARGS;宏解析上述命令行參數(shù)。PARSE_ARGS由 SlicerExecutionModel 根據(jù) XML 描述自動(dòng)生成的CheckerBoardFilterCLP.h提供將--checkerPattern、三個(gè)輸入輸出路徑分別解析為checkerPattern向量與inputVolume1、inputVolume2、outputVolume字符串變量。在main()中模塊先通過(guò)itk::GetImageType()讀取第一個(gè)輸入的實(shí)際像素類(lèi)型再依據(jù)組件類(lèi)型分派到模板函數(shù)DoIt()支持UCHAR、CHAR、USHORT、SHORT、UINT、INT、ULONG、LONG、FLOAT、DOUBLE共 10 種標(biāo)量類(lèi)型源碼注釋明確 “This filter handles all types”即該模塊對(duì)所有像素類(lèi)型通用遇到UNKNOWNCOMPONENTTYPE或其他未知類(lèi)型時(shí)輸出unknown component type提示異常統(tǒng)一捕獲itk::ExceptionObject并返回EXIT_FAILURE。源碼級(jí)實(shí)現(xiàn)原理三步流水線(xiàn)讀取 → 重采樣 → 棋盤(pán)合成DoIt()模板函數(shù)中的處理鏈非常清晰依次構(gòu)造了讀取器、重采樣器、棋盤(pán)濾波器與寫(xiě)入器四個(gè) ITK 組件typedef itk::ImageFileReaderInputImageType ReaderType; typedef itk::ResampleImageFilterInputImageType, InputImageType ResampleType; typedef itk::ImageFileWriterOutputImageType WriterType; ... typedef itk::CheckerBoardImageFilterInputImageType FilterType;處理鏈的關(guān)鍵連接關(guān)系如下對(duì)應(yīng)源碼第 56-81 行reader1與reader2分別讀取兩幅輸入體數(shù)據(jù)重采樣是關(guān)鍵前置步驟resample以reader2的輸出為輸入同時(shí)調(diào)用SetReferenceImage(reader1-GetOutput())并開(kāi)啟UseReferenceImageOn()將第二幅圖像重采樣到與第一幅完全一致的幾何origin、spacing、directionfilter調(diào)用SetCheckerPattern(pattern)設(shè)置棋盤(pán)格模式其中pattern[0..2]直接取自命令行參數(shù)checkerPattern[0..2]filter-SetInput1(reader1-GetOutput())、filter-SetInput2(resample-GetOutput())接入兩路輸入writer將濾波結(jié)果寫(xiě)為輸出文件。真正的棋盤(pán)合成由 ITK 提供的itk::CheckerBoardImageFilter來(lái)自 ITKImageGrid 組件見(jiàn) CMakeLists.txt 中的ITKImageGrid依賴(lài)完成。該濾波器按每個(gè)維度上設(shè)定的棋盤(pán)格數(shù)把圖像劃分成交錯(cuò)網(wǎng)格奇數(shù)格取輸入 1、偶數(shù)格取輸入 2從而形成“棋盤(pán)”式的交替可視化效果。為什么要先重采樣從源碼可以清楚看到itk::CheckerBoardImageFilter要求兩幅輸入在體素網(wǎng)格上嚴(yán)格對(duì)齊否則棋盤(pán)格交界處會(huì)出現(xiàn)幾何錯(cuò)位導(dǎo)致視覺(jué)比較失真。因此模塊在合成前強(qiáng)制把第二個(gè)輸入重采樣到第一個(gè)輸入的坐標(biāo)系——這也正是“常用于比較配準(zhǔn)結(jié)果”這一設(shè)計(jì)意圖的體現(xiàn)配準(zhǔn)的目標(biāo)就是把兩幅圖像對(duì)齊到同一坐標(biāo)系棋盤(pán)格對(duì)比正是驗(yàn)證該對(duì)齊效果的直觀(guān)手段。進(jìn)度反饋與圖形界面集成DoIt()中還通過(guò)itk::PluginFilterWatcher watcher(filter, CheckerBoard Image Filter, CLPProcessInformation);創(chuàng)建了濾波器監(jiān)視器見(jiàn) Base/CLI 下的 vtkPluginFilterWatcher.cxx 等相關(guān)實(shí)現(xiàn)使得模塊在 Slicer 圖形界面中以 CLI 模塊qSlicerCLIModule形式運(yùn)行時(shí)界面可以實(shí)時(shí)顯示處理進(jìn)度并支持進(jìn)度條取消操作。自動(dòng)化測(cè)試與基線(xiàn)驗(yàn)證模塊帶有完整的 CTest 自動(dòng)化測(cè)試相關(guān)文件位于 Modules/CLI/CheckerBoardFilter/TestingCheckerBoardFilterTest.cxx基于itkTestMain.h構(gòu)建的測(cè)試入口將測(cè)試驅(qū)動(dòng)映射到模塊的ModuleEntryPointTesting/CMakeLists.txt定義測(cè)試命令與數(shù)據(jù)。測(cè)試用例的調(diào)用參數(shù)為ModuleEntryPoint --checkerPattern 5,3,2 DATA{.../CTHeadAxial.nhdr} DATA{.../CTHeadAxialDoubled.nhdr} ${TEMP}/CheckerBoardFilterTest.nhdr即使用--checkerPattern 5,3,2第一維 5 格、第二維 3 格、第三維 2 格以 CT 頭部軸向圖像CTHeadAxial與其“加倍”版本CTHeadAxialDoubled為輸入生成輸出后與基線(xiàn)數(shù)據(jù)CheckerBoardFilterTest.nhdr/.raw通過(guò)--compare逐像素比對(duì)驗(yàn)證輸出與預(yù)期一致。輸入與基線(xiàn)數(shù)據(jù)位于 Modules/CLI/CheckerBoardFilter/Data均以 ExternalData 方式托管倉(cāng)庫(kù)內(nèi)為.md5摘要文件。這一測(cè)試同時(shí)印證了 checkerPattern 參數(shù)支持5,3,2這類(lèi)三個(gè)維度各不相同的取值。典型應(yīng)用場(chǎng)景小結(jié)配準(zhǔn)質(zhì)量目視評(píng)估將配準(zhǔn)前/后圖像棋盤(pán)格交錯(cuò)顯示在切片視圖中檢查解剖結(jié)構(gòu)是否在格間交界處連續(xù)對(duì)齊圖像差值可視化輔助與 Subtract/Add 等算術(shù)模塊配合快速定位兩幅圖像存在差異的區(qū)域格式與幾何一致性檢查由于第二個(gè)輸入會(huì)被強(qiáng)制重采樣到第一個(gè)輸入的幾何可用于快速核查兩組數(shù)據(jù)的體素網(wǎng)格是否一致輸出標(biāo)量類(lèi)型始終與第一輸入一致方便下游繼續(xù)處理。需要注意的是CheckerBoard Filter 僅做幾何對(duì)齊后的合成顯示不會(huì)修改兩幅輸入本身若兩幅圖像本身分辨率差異過(guò)大重采樣可能引入插值偽影評(píng)估時(shí)應(yīng)結(jié)合具體任務(wù)理解所看到的棋盤(pán)格效果。贊分享醫(yī)療健康圖像處理數(shù)據(jù)可視化桌面應(yīng)用3D渲染【免費(fèi)下載鏈接】SlicerMulti-platform, free open source software for visualization and image computing.項(xiàng)目地址https://gitcode.com/gh_mirrors/sl/Slicer點(diǎn)擊查看免費(fèi)下載相關(guān)推薦TiXL CheckerBoard 算子深度指南模塊化棋盤(pán)格紋理的生成原理與參數(shù)詳解TiXL CheckerBoard 算子深度指南模塊化棋盤(pán)格紋理的生成原理與參數(shù)詳解 本文圍繞 TiXL 實(shí)時(shí)動(dòng)態(tài)圖形系統(tǒng)開(kāi)源項(xiàng)目 t3中 Lib.ima音視頻圖形學(xué)桌面應(yīng)用Natron Checkerboard 節(jié)點(diǎn)完全指南棋盤(pán)格、網(wǎng)格與無(wú)縫平鋪圖案的生成實(shí)戰(zhàn)Natron Checkerboard 節(jié)點(diǎn)完全指南棋盤(pán)格、網(wǎng)格與無(wú)縫平鋪圖案的生成實(shí)戰(zhàn) 本文圍繞 Natron 圖像節(jié)點(diǎn)組中的 Checkerboard 節(jié)音視頻視頻處理圖形學(xué)桌面應(yīng)用3D Slicer BRAINSFit 配準(zhǔn)模塊實(shí)戰(zhàn)指南參數(shù)詳解與縱向、多模態(tài)、小鼠腦配準(zhǔn)命令示例3D Slicer BRAINSFit 配準(zhǔn)模塊實(shí)戰(zhàn)指南參數(shù)詳解與縱向、多模態(tài)、小鼠腦配準(zhǔn)命令示例 BRAINSFit 是 3D Slicer 中以命令行接口醫(yī)療健康圖像處理數(shù)據(jù)可視化桌面應(yīng)用3D渲染上一篇Obsidian Style Settings如何為全球用戶(hù)打造完美的CSS自定義體驗(yàn)下一篇Navicat密碼解密終極指南3種簡(jiǎn)單方法找回丟失的數(shù)據(jù)庫(kù)連接密碼創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考