<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ITK on G. T. Wang</title>
    <link>https://blog.gtwang.org/tags/itk/</link>
    <description>Recent content in ITK on G. T. Wang</description>
    <generator>Hugo -- 0.162.0</generator>
    <language>zh-tw</language>
    <copyright>G. T. Wang</copyright>
    <lastBuildDate>Tue, 19 Apr 2022 11:15:17 +0800</lastBuildDate>
    <atom:link href="https://blog.gtwang.org/tags/itk/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Python 讀取、顯示 NIfTI 影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-nibabel-read-show-nifti-image-tutorial-examples/</link>
      <pubDate>Tue, 19 Apr 2022 11:15:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-nibabel-read-show-nifti-image-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 NiBabel 或 SimpleITK 模組讀取並顯示 NIfTI 影像（&lt;code&gt;.nii&lt;/code&gt;、&lt;code&gt;.nii.gz&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nipy.org/nibabel/&#34;&gt;NiBabel&lt;/a&gt; 是一個專門用於處理醫學與神經影像的模組，對於 NIfTI 影像格式支援度非常好，而 &lt;a href=&#34;https://simpleitk.org/&#34;&gt;SimpleITK&lt;/a&gt; 則是通用型的影像處理模組，可以在讀取 NIfTI 影像之後，進行各種後續分析。這兩套工具都可以用來查看 NIfTI 影像，以下是操作教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 以 LabelStatisticsImageFilter 套用遮罩影像計算統計量教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-labelstatisticsimagefilter-mask-label-image-calculate-statistics-tutorial-examples/</link>
      <pubDate>Fri, 15 Jan 2021 18:08:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-labelstatisticsimagefilter-mask-label-image-calculate-statistics-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;LabelStatisticsImageFilter&lt;/code&gt; 套用遮罩影像計算各種統計量，包含體積（數量）、加總、平均值、變異數、範圍等。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;建立測試影像與遮罩影像&#34;&gt;建立測試影像與遮罩影像&lt;/h2&gt;
&lt;p&gt;首先使用亂數的方式建立測試用的原始影像，並且手動建立一張測試用的遮罩影像：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK 讀取、寫入、建立影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-read-create-image-tutorial-examples/</link>
      <pubDate>Sun, 10 Jan 2021 10:47:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-read-create-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 ITK 模組讀取、寫入影像檔案，以及自行建立 ITK 影像的方法。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;itk-快速讀取寫入影像檔案&#34;&gt;ITK 快速讀取、寫入影像檔案&lt;/h2&gt;
&lt;p&gt;對於普通的影像檔案，可以使用 ITK 模組提供的 &lt;code&gt;imread&lt;/code&gt; 函數來快速載入，其呼叫之後會立即執行載入檔案的動作，直接傳回影像內容：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 計算 3D 二元遮罩影像物件數量與體積</title>
      <link>https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/</link>
      <pubDate>Thu, 07 Jan 2021 19:01:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 函式庫計算 3D 二元遮罩影像中的物件數量與體積。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取原始影像&#34;&gt;讀取原始影像&lt;/h2&gt;
&lt;p&gt;載入原始的 3D 細胞影像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itkwidgets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 載入影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3d_monolayer_xy1_ch2.tif&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;itkwidgets&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;原始影像&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/itk-count-objects-from-3d-binary-mask-image-tutorial-examples-20210107-01.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;這裡所使用的 3D 細胞影像可以從 &lt;a href=&#34;https://github.com/CellProfiler/tutorials/tree/master/3d_monolayer&#34;&gt;CellProfiler 的 GitHub 網站&lt;/a&gt;上取得。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 計算 2D 二元遮罩影像物件數量與統計值</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-count-objects-from-2d-binary-mask-image-tutorial-examples/</link>
      <pubDate>Thu, 07 Jan 2021 09:59:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-count-objects-from-2d-binary-mask-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 的 &lt;code&gt;ConnectedComponent&lt;/code&gt; 取出二元遮罩影像中的物件，計算物件數量與統計值。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;我們希望透過影像分割（segmentation）之後的遮罩影像（mask image），自動計算圖片中的細胞數量（或是各種不相連物件的數量）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jupyter 以 itkwidgets 比較兩個影像差異教學與範例</title>
      <link>https://blog.gtwang.org/python/jupyter-itkwidgets-compare-two-images-tutorial-examples/</link>
      <pubDate>Wed, 06 Jan 2021 09:43:40 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/jupyter-itkwidgets-compare-two-images-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Jupyter 環境中使用 &lt;code&gt;itkwidgets&lt;/code&gt; 的棋盤式與並列式影像比較圖，比較兩張 3D 影像的差異。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;棋盤式影像比較圖&#34;&gt;棋盤式影像比較圖&lt;/h2&gt;
&lt;p&gt;首先引入 &lt;code&gt;itk&lt;/code&gt; 與 &lt;a href=&#34;https://github.com/InsightSoftwareConsortium/itkwidgets/&#34;&gt;itkwidgets&lt;/a&gt; 模組，並以 &lt;code&gt;itk&lt;/code&gt; 的 &lt;code&gt;imread&lt;/code&gt; 讀取影像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itkwidgets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 以 ITK 讀取兩張影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;brainweb165a10f17.mha&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;brainweb1e1a10f20.mha&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;itkwidgets&lt;/code&gt; 的 &lt;code&gt;checkerboard&lt;/code&gt; 函數可以繪製棋盤式的影像比較圖，其中的 &lt;code&gt;pattern&lt;/code&gt; 參數可以用來調整格子的數量，這個數量也可以在互動式的操作介面上調整：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 樣條曲線 BSpline 非剛性影像對準教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-bspline-non-rigid-registration-tutorial-examples/</link>
      <pubDate>Thu, 24 Dec 2020 18:49:59 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-bspline-non-rigid-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的樣條曲線（BSpline）轉換對 2D 影像進行非剛性影像對準。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;這個範例中使用 &lt;code&gt;BSplineTransform&lt;/code&gt; 轉換對 2D 的影像進行非剛性影像對準（non-rigid image registration），由於樣條曲線（BSpline）轉換的參數數量很龐大，所以這個例子中採用 &lt;code&gt;LBFGSOptimizerv4&lt;/code&gt; 而不用普通的 &lt;code&gt;RegularStepGradientDescentOptimizer&lt;/code&gt; 或 &lt;code&gt;ConjugateGradientLineSearchOptimizer&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 有限元素法影像對準 FEM Registration 教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-fem-based-deformable-image-registration-tutorial-examples/</link>
      <pubDate>Thu, 17 Dec 2020 18:11:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-fem-based-deformable-image-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹 ITK 所提供的有限元素法影像對準的使用方式，並提供基本的範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;有限元素法影像對準&#34;&gt;有限元素法影像對準&lt;/h2&gt;
&lt;p&gt;以下是使用 ITK 的有限元素法（finite element method，簡稱 FEM）影像對準的基礎範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 儲存、載入影像 Transform 轉換參數教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-save-load-image-transform-transformfilewriter-transformfilereader-tutorial-examples/</link>
      <pubDate>Tue, 15 Dec 2020 21:59:16 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-save-load-image-transform-transformfilewriter-transformfilereader-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;TransformFileWriter&lt;/code&gt; 與 &lt;code&gt;TransformFileReader&lt;/code&gt; 寫入與讀取各種 Transform 影像轉換與參數。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;寫入與讀取轉換&#34;&gt;寫入與讀取轉換&lt;/h2&gt;
&lt;p&gt;以下是一個簡單的儲存與載入轉換範例，先以 &lt;code&gt;AffineTransform&lt;/code&gt; 與 &lt;code&gt;BSplineTransform&lt;/code&gt; 組合建立一個 &lt;code&gt;CompositeTransform&lt;/code&gt; 轉換，再使用 &lt;code&gt;TransformFileWriter&lt;/code&gt; 將 &lt;code&gt;CompositeTransform&lt;/code&gt; 轉換與其參數寫入檔案，最後再以 &lt;code&gt;TransformFileReader&lt;/code&gt; 將轉換從檔案中讀取出來使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 多階段 Multi-Stage 影像對準架構教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-multi-stage-registration-framework-tutorial-examples/</link>
      <pubDate>Thu, 10 Dec 2020 15:06:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-multi-stage-registration-framework-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 ITK 的多階段（multi-stage）影像對準架構下，組合平移對準（translation registration）與仿射對準（affine registration）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 多層級 Multi-Resolution 影像對準架構教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-multi-resolution-registration-framework-tutorial-examples/</link>
      <pubDate>Mon, 07 Dec 2020 15:29:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-multi-resolution-registration-framework-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 ITK 的多層級（multi-resolution）影像對準架構下，進行線性仿射影像對準（affine registration）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 IntensityWindowingImageFilter 轉換影像數值範圍教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/</link>
      <pubDate>Fri, 27 Nov 2020 09:59:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 對影像的像素值進行線性轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 的作用跟 &lt;code&gt;RescaleIntensityImageFilter&lt;/code&gt; 類似，差異在於 &lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 可以自行指定窗函數的數值區間。&lt;/p&gt;
&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/&#34;&gt;SimpleITK 使用 RescaleIntensityImageFilter 轉換影像數值範圍教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 3D 剛性影像對準 Rigid Registration 置中初始化教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-3d-rigid-registration-center-initialization-tutorial-examples/</link>
      <pubDate>Wed, 11 Nov 2020 14:13:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-3d-rigid-registration-center-initialization-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 &lt;code&gt;VersorRigid3DTransform&lt;/code&gt; 剛性影像轉換搭配 &lt;code&gt;CenteredTransformInitializer&lt;/code&gt; 置中初始化對影像進行對準。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;影像對準&#34;&gt;影像對準&lt;/h2&gt;
&lt;p&gt;首先定義各種資料與物件的型別。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 定義資料型別&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;TransformType&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;VersorRigid3DTransform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;OptimizerType&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RegularStepGradientDescentOptimizerv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;RegistrationType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageRegistrationMethodv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                 &lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MetricType&lt;/span&gt;       &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MeanSquaresImageToImageMetricv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                       &lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立影像 reader，並指定影像來源檔案：&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 RescaleIntensityImageFilter 轉換影像數值範圍教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/</link>
      <pubDate>Sun, 08 Nov 2020 15:01:30 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;RescaleIntensityImageFilter&lt;/code&gt; 對影像的像素值進行線性轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/&#34;&gt;SimpleITK 使用 IntensityWindowingImageFilter 轉換影像數值範圍教學與範例&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先從 DICOM 影像序列讀取 3D 影像資料：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;SimpleITK&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sitk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DICOM 影像序列檔案所在目錄&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/mnt/data/ct_image&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立影像序列 Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sitk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageSeriesReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得所有 DICOM 影像的 Series IDs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;series_ids&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetGDCMSeriesIDs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得指定 Series ID 的 DICOM 影像序列檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicom_filenames&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetGDCMSeriesFileNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;series_ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 DICOM 影像序列檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_filenames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 實際讀取影像內容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;確認影像的大小：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/</link>
      <pubDate>Wed, 04 Nov 2020 19:49:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;BinaryMask3DMeshSource&lt;/code&gt; 將二元影像（binary image）轉為網格（mesh）構成的 surface。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/&#34;&gt;ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/&#34;&gt;VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 2D 影像對準 Hello World 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-2d-image-registration-hello-world-tutorial-examples/</link>
      <pubDate>Fri, 30 Oct 2020 20:13:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-2d-image-registration-hello-world-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 函式庫的 v4 影像對準框架處理二維影像的對準，並提供 hello world 範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;itkv4-影像對準框架&#34;&gt;ITKv4 影像對準框架&lt;/h2&gt;
&lt;p&gt;ITKv4 影像對準框架跟上一版比較起來更為彈性，主要差異就是對準過程都在新的虛擬影像（virtual image）中進行，固定影像（fixed image）與調動影像（moving image）都透過轉換（transforms）與內插（interpolators）在虛擬影像空間以 metric 衡量配適程度，然後將結果交給 optimizer 更新轉換參數，重複這個過程直到結果收斂。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 ScalarImageKmeansImageFilter 進行 K-Means 分群教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/</link>
      <pubDate>Tue, 27 Oct 2020 10:20:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;ScalarImageKmeansImageFilter&lt;/code&gt; 以 K-means 分群演算法，將影像像素值進行分群（clustering），產生標註（label）影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;原始影像&#34;&gt;原始影像&lt;/h2&gt;
&lt;p&gt;載入原始影像。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像像素資料類型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PixelType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像維度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Dimension&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像類型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ImageType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PixelType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dimension&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立影像 Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ReaderType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageFileReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ReaderType&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;fixed.mhd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讀取 Fixed 影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 顯示原始影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imshow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetArrayViewFromImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cmap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;gray&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;show&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;原始影像&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples-20201027-01.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 線性仿射影像對準 Affine Registration 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-linear-affine-registration-tutorial-examples/</link>
      <pubDate>Mon, 19 Oct 2020 19:07:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-linear-affine-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 進行影像的線性仿射影像對準（affine registration）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;準備測試用影像&#34;&gt;準備測試用影像&lt;/h2&gt;
&lt;p&gt;這裡我們使用一張影像作為基準影像（fixed image），以 &lt;code&gt;AffineTransform&lt;/code&gt; 線性仿射轉換套用至基準影像上，產生一張調動影像（moving image）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 以 Observer 監看影像對準過程教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-registration-observer-metric-plot-tutorial-examples/</link>
      <pubDate>Wed, 14 Oct 2020 16:07:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-registration-observer-metric-plot-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 observer 監看影像對準過程，繪製及時的距離變化圖，確認收斂情況。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;影像對準（image registration）的計算過程需要確認結果是否正確收斂到最佳解，在 ITK 中我們可以透過設定 observer 的方式，取出每次疊代產生的 metric 數值，並及時繪製出圖形，方便開發者調整參數。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 影像平移線性對準 Translation Registration 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-linear-translation-registration-tutorial-examples/</link>
      <pubDate>Wed, 14 Oct 2020 12:08:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-linear-translation-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 進行 2D 影像平移線性對準（translation registration）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;準備測試用影像&#34;&gt;準備測試用影像&lt;/h2&gt;
&lt;p&gt;這裡我們使用一張影像作為基準影像（fixed image），以 &lt;code&gt;TranslationTransform&lt;/code&gt; 平移轉換套用至基準影像上，產生一張調動影像（moving image）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK SimpleFilterWatcher 監看 Filter 執行狀態教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-simplefilterwatcher-watch-filter-tutorial-examples/</link>
      <pubDate>Tue, 13 Oct 2020 06:58:42 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-simplefilterwatcher-watch-filter-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;SimpleFilterWatcher&lt;/code&gt; 輸出指定 filter 產生的管線事件（pieline events）詳細資訊。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在開發 ITK 應用程式時，如果需要觀察管線內部各個 filter 的運作狀況，可以在程式中加入 &lt;a href=&#34;https://itk.org/Doxygen/html/classitk_1_1SimpleFilterWatcher.html#a7a09c53c58550eb0b926bb08679fb43c&#34;&gt;SimpleFilterWatcher&lt;/a&gt;，把指定 filter 的所產生的所有管線事件輸出至標準輸出（standard output）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK ResampleImageFilter 影像座標轉換、重新取樣教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-resampleimagefilter-image-transform-tutorial-examples/</link>
      <pubDate>Sun, 11 Oct 2020 18:56:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-resampleimagefilter-image-transform-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;ResampleImageFilter&lt;/code&gt; 進行影像的各種座標轉換以及重新取樣。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://itk.org/Doxygen/html/classitk_1_1ResampleImageFilter.html&#34;&gt;ITK 的 ResampleImageFilter&lt;/a&gt; 可以用來套用 ITK 的各種轉換（transform），並且以指定的內插方法（interpolator）進行影像的重新取樣（resample），得到新座標系統下的影像。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK ImageFileWriter 串流分批寫入大型檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-imagefilewriter-streaming-tutorial-examples/</link>
      <pubDate>Sat, 10 Oct 2020 17:02:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-imagefilewriter-streaming-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;ImageFileWriter&lt;/code&gt; 本身的串流功能，分批處理大型檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在使用 ITK 進行各種處理流程時，除了使用 &lt;a href=&#34;https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/&#34;&gt;StreamingImageFilter 分割資料建立串流&lt;/a&gt;之外，亦可在使用 &lt;code&gt;ImageFileWriter&lt;/code&gt; 寫入檔案的時候，以 &lt;code&gt;SetNumberOfStreamDivisions&lt;/code&gt; 設定串流分割參數，讓整條管線都以串流的方式處理，以下是一個轉換影像類型的範例：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK StreamingImageFilter 串流分批處理大型影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/</link>
      <pubDate>Sat, 10 Oct 2020 09:39:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;StreamingImageFilter&lt;/code&gt; 將大型影像自動分割成小區域，以串流分批處理。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在使用 ITK 處理影像資料時，若遇到影像過大、記憶體不足時，可以使用串流（streaming）的方式將資料切割成小區域分批處理，以節省記憶體。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 MaskImageFilter 與 MaskNegatedImageFilter 套用遮罩影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-mask-negated-image-filter/</link>
      <pubDate>Sat, 26 Sep 2020 15:28:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-mask-negated-image-filter/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;MaskImageFilter&lt;/code&gt; 與 &lt;code&gt;MaskNegatedImageFilter&lt;/code&gt; 將遮罩套用至影像中，取出原始影像中對應遮罩標示的區域。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;maskimagefilter-套用遮罩&#34;&gt;&lt;code&gt;MaskImageFilter&lt;/code&gt; 套用遮罩&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://simpleitk.org/doxygen/latest/html/classitk_1_1simple_1_1MaskImageFilter.html&#34;&gt;MaskImageFilter&lt;/a&gt; 可以將影像套用指定遮罩，將指定遮罩值的區域篩除。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/</link>
      <pubDate>Sat, 26 Sep 2020 08:33:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;TriangleMeshToBinaryImageFilter&lt;/code&gt; 將網格（mesh）包圍的範圍轉為二元影像（binary image）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/&#34;&gt;ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/&#34;&gt;VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 處理 NumPy、SimpleITK 與 ITK 影像互相轉換教學與範例</title>
      <link>https://blog.gtwang.org/python/python-convert-between-numpy-simpleitk-and-itk-image-tutorial-example/</link>
      <pubDate>Thu, 24 Sep 2020 19:53:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-convert-between-numpy-simpleitk-and-itk-image-tutorial-example/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中處理 NumPy、SimpleITK 與 ITK 三種影像格式的互相轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;simpleitk-轉換為-numpy-與-itk&#34;&gt;SimpleITK 轉換為 NumPy 與 ITK&lt;/h2&gt;
&lt;p&gt;若要將 SimpleITK 格式轉換為單純的 NumPy 陣列，可以使用 &lt;code&gt;GetArrayFromImage&lt;/code&gt; 或是 &lt;code&gt;GetArrayViewFromImage&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 LabelOverlay 套疊標註影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeloverlay-overlay-label-image/</link>
      <pubDate>Wed, 23 Sep 2020 19:05:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeloverlay-overlay-label-image/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;LabelOverlay&lt;/code&gt; 將標註影像（label image）自動套用色彩後，疊加在原始影像上。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在檢視原始影像與標註影像的對應時，除了&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/&#34;&gt;用 LabelToRGBImageFilter 將標註影像轉為 RGB 彩色影像&lt;/a&gt;之外，也可以利用 &lt;code&gt;LabelOverlay&lt;/code&gt; 自動將標註影像轉為 RGB 彩色影像之後，直接疊在原始影像上面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 LabelToRGBImageFilter 將標註影像轉為 RGB 彩色影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/</link>
      <pubDate>Wed, 23 Sep 2020 09:57:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;LabelToRGBImageFilter&lt;/code&gt; 將標註影像（label image）轉換為 RGB 彩色影像，方便顯示於螢幕上。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在標註影像的區域時，通常會將標註資訊儲存於另外一個標註檔案（label image）之中，跟原始影像搭配使用，以下是 &lt;a href=&#34;https://atlas.brain-map.org/&#34;&gt;Allen Mouse Brain CCFv3&lt;/a&gt; 平均腦與標註影像的範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 MeshFileReader 讀取 OBJ 檔案教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-meshfilereader-read-obj-file-tutorial-examples/</link>
      <pubDate>Mon, 07 Sep 2020 10:39:40 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-meshfilereader-read-obj-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 MeshFileReader 讀取 OBJ 網格檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;python-讀取-obj-檔案&#34;&gt;Python 讀取 OBJ 檔案&lt;/h2&gt;
&lt;p&gt;若在 Python 中，可以使用 &lt;code&gt;itk&lt;/code&gt; 模組的 &lt;code&gt;MeshFileReader&lt;/code&gt; 來讀取 OBJ 檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 Mesh 資料型態（浮點數、維度 3）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mesh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立 Mesh Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MeshFileReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;meshType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 MeshIO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshIO&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OBJMeshIO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetMeshIO&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;meshIO&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 指定 OBJ 檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;my_mesh.obj&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 實際讀取 OBJ 檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得 Mesh 內容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;mesh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;c-讀取-obj-檔案&#34;&gt;C++ 讀取 OBJ 檔案&lt;/h2&gt;
&lt;p&gt;若要在 C++ 讀取 OBJ 檔案，可以使用 &lt;code&gt;itk::MeshFileReader&lt;/code&gt;：&lt;/p&gt;</description>
    </item>
    <item>
      <title>itkwidgets 互動式 Jupyter 影像視覺化工具使用教學與範例</title>
      <link>https://blog.gtwang.org/python/itkwidgets-interactive-jupyter-image-mesh-visualization-widgets/</link>
      <pubDate>Fri, 07 Aug 2020 09:30:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itkwidgets-interactive-jupyter-image-mesh-visualization-widgets/</guid>
      <description>&lt;p&gt;介紹如何在 Jupyter 環境中使用 &lt;code&gt;itkwidgets&lt;/code&gt; 模組，互動式顯示影像或網格等 3D 資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/InsightSoftwareConsortium/itkwidgets&#34;&gt;&lt;code&gt;itkwidgets&lt;/code&gt;&lt;/a&gt; 是從 &lt;a href=&#34;https://kitware.github.io/itk-vtk-viewer/index.html&#34;&gt;itk-vtk-viewer&lt;/a&gt; 所衍生出來的 Python 模組，可以讓使用者在 Jupyter 環境之下顯示各種影像分析相關的資料。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 SimpleElastix 處理 3D 影像對準教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleelastix-3d-image-registration-tutorial-examples/</link>
      <pubDate>Mon, 20 Jul 2020 14:17:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleelastix-3d-image-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 與 SimpleElastix 處理 3D 影像對準，並顯示處理結果。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;allen-mouse-brain-common-coordinate-framework&#34;&gt;Allen Mouse Brain Common Coordinate Framework&lt;/h2&gt;
&lt;p&gt;第三代的 &lt;a href=&#34;https://atlas.brain-map.org/&#34;&gt;Allen Mouse Brain Common Coordinate Framework&lt;/a&gt;（簡稱 CCFv3）提供了高解析度的老鼠腦圖譜，這裡我們使用 CCFv3 的腦影像作為基準，將自己的腦影像與 CCFv3 的腦影像進行影像對準。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 處理 TIFF 三維立體影像降解析度教學與範例</title>
      <link>https://blog.gtwang.org/python/python-tiff-volume-image-downsample-tutorial-examples/</link>
      <pubDate>Thu, 09 Jul 2020 16:04:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-tiff-volume-image-downsample-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 模組處理 TIFF 檔案序列組成的大型影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;標準處理方式&#34;&gt;標準處理方式&lt;/h2&gt;
&lt;p&gt;如果伺服器的記憶體夠大，足夠容納整個影像的話，可以直接一次將整個影像讀取至記憶體，進行各種處理後，再轉存至輸出檔案中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 ITK 與 OpenVDB 將影像轉為 VDB 格式教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-openvdb-convert-image-to-vdb-format-tutorial-examples/</link>
      <pubDate>Fri, 05 Jun 2020 14:36:37 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-openvdb-convert-image-to-vdb-format-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 與 OpenVDB 將三維立體影像轉換為 VDB 格式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;itk-與-openvdb&#34;&gt;ITK 與 OpenVDB&lt;/h2&gt;
&lt;p&gt;若要將一般的三維立體影像（volume image）轉換為 VDB 格式，可以使用 ITK 函式庫讀取各種三維立體影像，然後再使用 OpenVDB 函式庫轉為 VDB 的檔案格式，以下是基本的實作程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 影像處理 C&#43;&#43; 程式 Hello World 編譯教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-image-processing-cpp-language-hello-world-tutorial-examples/</link>
      <pubDate>Wed, 03 Jun 2020 15:31:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-image-processing-cpp-language-hello-world-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Ubuntu Linux 中建立 ITK 應用程式開發環境，撰寫 ITK 的 hello world 程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;開發環境&#34;&gt;開發環境&lt;/h2&gt;
&lt;p&gt;若要開發基本的 ITK C++ 應用程式，除了安裝 ITK 函式庫之外，還要安裝好 CMake 編譯工具。在 Ubuntu Linux 中，可以使用 apt 安裝：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：讀取 DICOM 影像序列檔案</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/</link>
      <pubDate>Mon, 25 May 2020 11:07:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 SimpleITK 模組讀取 DICOM 影像序列檔案，查看後設資料（metadata）、轉存為其他格式的三維影像檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;這裡我們使用 &lt;a href=&#34;https://www.dicomlibrary.com/?manage=1b9baeb16d2aeba13bed71045df1bc65&#34;&gt;DICOM Library 所提供的 CT 影像&lt;/a&gt;作為示範，除此之外 &lt;a href=&#34;https://www.theobjects.com/dragonfly/learn-sample-datasets.html&#34;&gt;ORS 的網站&lt;/a&gt;上面也有提供許多可用來測試的影像檔案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：合併純量影像製作彩色影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-combine-scalar-images-create-color-image/</link>
      <pubDate>Thu, 23 Apr 2020 21:35:23 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-combine-scalar-images-create-color-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將兩張灰階影像合併成一張 RGB 彩色影像，評估兩張影像的對準狀況。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在做完影像對準（image registration）的處理之後，通常都會需要以視覺化的方式呈現兩張影像，評估對準的結果，以下是將兩張灰階影像合併為一張 RGB 彩色影像的流程示範。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleElastix 影像對準工具安裝、基本使用教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleelastix-medical-image-registration-library-tutorial-examples/</link>
      <pubDate>Thu, 23 Apr 2020 10:04:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleelastix-medical-image-registration-library-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleElastix 影像對準（image registration）工具，以剛性、線性、非線性的方式對準影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-simpleelastix&#34;&gt;安裝 SimpleElastix&lt;/h2&gt;
&lt;p&gt;從 GitHub 下載 &lt;a href=&#34;http://simpleelastix.github.io/&#34;&gt;SimpleElastix&lt;/a&gt; 的原始碼：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下載 SimpleElastix 原始碼&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/SuperElastix/SimpleElastix
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立編譯用目錄，在該目錄中編譯：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Extract、Crop、RegionOfInterest 擷取部分影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-extract-crop-image-regionofinterest-slice/</link>
      <pubDate>Mon, 20 Apr 2020 10:20:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-extract-crop-image-regionofinterest-slice/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將一張影像中的部分區域擷取出來，變成一張小的影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;SimpleITK 的 &lt;code&gt;Extract&lt;/code&gt; 與 &lt;code&gt;Crop&lt;/code&gt; 函數可以將一張影像中的部分區域擷取出來，儲存成一張小的影像。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Shrink 縮小影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-shrink-reduce-image-size/</link>
      <pubDate>Sun, 19 Apr 2020 06:16:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-shrink-reduce-image-size/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 的 &lt;code&gt;Shrink&lt;/code&gt; 函數來縮小影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;顯示影像切面函數&#34;&gt;顯示影像切面函數&lt;/h2&gt;
&lt;p&gt;首先定義一個用來顯示影像切面的函數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;SimpleITK&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sitk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 顯示影像切面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;myShowImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;z_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;nda&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sitk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetArrayViewFromImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;slice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nda&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;z_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,:,:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imshow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;slice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;show&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;原始影像&#34;&gt;原始影像&lt;/h2&gt;
&lt;p&gt;這裡我們以 &lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/&#34;&gt;Allen Mouse Brain Atlas 老鼠標準腦&lt;/a&gt;的影像為範例，先讀取原始影像，並檢查其影像大小、位置與 voxel size 資訊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Paste 貼上影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-paste-image-into-another-image/</link>
      <pubDate>Thu, 16 Apr 2020 20:45:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-paste-image-into-another-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將一張影像貼在另外一張影像中。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;SimpleITK 的 &lt;code&gt;Paste&lt;/code&gt; 函數可以將一張影像貼在另外一張影像中指定的位置，將原本的影像蓋過去。&lt;/p&gt;
&lt;p&gt;在影像對準的應用中，我們可以利用這樣的方式擴展基準影像的邊界，方便進行後續的影像對準工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Allen Mouse Brain Atlas 老鼠標準腦</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/</link>
      <pubDate>Wed, 15 Apr 2020 20:02:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/</guid>
      <description>&lt;p&gt;介紹如何在 Python 以 SimpleITK 模組讀取 Allen Mouse Brain Atlas 老鼠標準腦、繪製切面圖，並計算各種基本統計量。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取標準腦影像&#34;&gt;讀取標準腦影像&lt;/h2&gt;
&lt;p&gt;老鼠的標準腦 volume 影像可從 &lt;a href=&#34;http://help.brain-map.org/display/mousebrain/API&#34;&gt;Allen Mouse Brain Atlas 的網站&lt;/a&gt; 下載，解壓縮之後即可使用 Python 的 SimpleITK 模組來讀取：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：讀取 DICOM 影像後設資料 Metadata</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/</link>
      <pubDate>Wed, 01 Apr 2020 08:09:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 讀取 DICOM 影像的後設資料（metadata）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;許多的醫學影像（例如 X 光、斷層掃描、各種顯微鏡影像等）都會以 DICOM 的格式儲存，而附帶的實驗相關資訊也都會儲存在 &lt;a href=&#34;https://www.dicomlibrary.com/dicom/dicom-tags/&#34;&gt;DICOM 標準的 Tags&lt;/a&gt; 中，以下介紹如何從 DICOM 檔案中取出這些資訊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：基本影像讀取與檢視</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-and-view-image/</link>
      <pubDate>Tue, 31 Mar 2020 14:52:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-and-view-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 SimpleITK 這套影像處理工具，進行基本的影像讀取與檢視工作。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/&#34;&gt;Python SimpleITK 影像處理教學：讀取 DICOM 影像後設資料 Metadata&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/&#34;&gt;Python SimpleITK 影像處理教學：讀取 DICOM 影像序列檔案&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-pydicom-read-edit-dicom-tutorial-examples/&#34;&gt;Python 使用 Pydicom 讀取、編輯 DICOM 影像檔案教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 ITK 轉換影像資料型別教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-cpp-cast-mage-to-another-type-tutorial/</link>
      <pubDate>Fri, 27 Mar 2020 11:37:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-cpp-cast-mage-to-another-type-tutorial/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 ITK 轉換影像的資料型別，將 &lt;code&gt;unsigned short&lt;/code&gt; 的灰階影像轉換為 &lt;code&gt;unsigned char&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-python-的-itk-模組&#34;&gt;安裝 Python 的 ITK 模組&lt;/h2&gt;
&lt;p&gt;透過 &lt;code&gt;pip3&lt;/code&gt; 安裝 Python 的 &lt;code&gt;itk&lt;/code&gt; 模組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 Python ITK 模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install itk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;轉換影像類型&#34;&gt;轉換影像類型&lt;/h2&gt;
&lt;p&gt;以下是使用 ITK 將 &lt;code&gt;unsigned short&lt;/code&gt; 的灰階影像轉換為 &lt;code&gt;unsigned char&lt;/code&gt; 灰階影像的 Python 指令稿：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 10 使用 Visual Studio 2019 編譯 ITK 應用程式教學與範例</title>
      <link>https://blog.gtwang.org/programming/windows-10-msvc-2019-compile-itk-5-tutorial-examples/</link>
      <pubDate>Thu, 19 Mar 2020 09:02:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/windows-10-msvc-2019-compile-itk-5-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Windows 10 中使用微軟的 Visual Studio 2019 編譯 ITK 的應用程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;ITK（Insight Toolkit）是一套 C++ 影像分析處理函式庫，其編譯與安裝的方式跟 VTK 相當類似，以下是編譯、安裝 ITK 函式庫，以及編譯 ITK 應用程式的步驟。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
