====== ctTr2 : CT再構成計算プログラム ====== ===== - 概要 ===== CT再構成の計算を行うプログラムです。\\ あいちSR BL11S2 での測定データがそのまま読めることが特徴です。 注意 : * GPU は使いませんので、GPU のパワーは不要です * 概算ですが, $[画像ファイルのサイズ] \times [枚数] \times 2$, 程度のメモリが必要です。\\ 例えば $ 8{\rm MB} \times 360 \times 2 = 5.8 {\rm GB} $\\ (最後の $\times 2$ は、完全な情報を保持した元画像と、画面表示用のイメージの両方をメモリ上に持つためです) * 現状、ここで公開している windows版はマルチスレッドで走らすと落ちることが有るようです。 メモリが潤沢で CPU パワーがある PC だとそのようなことはないので、利用できる資源の問題かもしれません。 * 上記で「そのようなことがない」と書いている PC は、AMD Ryzen 9 3900 (12core) + RAM 16GB です。\\ 不安定と感じているのは Surface Pro7+ (Core i7-1165G7) + RAM 16GB です。 * 2025年版ではそれほど良く落ちる感じではなくなりました。\\ 画面内に計算に使用するスレッド数の選択がでますが、これを使用している CPU のハイパースレッドの数(選択部分に分母の形で表示されます)以下、 だいたい 80% ぐらいにしておくと効率も良くて安定するみたいです。\\ (4コア、8スレッドなら 6ぐらい、6コア、12スレッドなら 9か10ぐらい、みたいな計算です) ===== - ダウンロード ===== * {{ :tabuchi:cttr2-deploy-qt6-20260527-01.zip | 環境込 }} 2026.05.27 Win64, Qt6.9.3 + LLVM\\ なんと、llvm-mingw の gcc では long int が 32bit だったことが発覚。\\ his 等の巨大ファイルのアドレス計算に失敗することがあった。明示的に 64bit int に固定。 * {{ :tabuchi:cttr2-deploy-qt6-20260324-01.zip | 環境込 }} 2026.03.24 Win64, Qt6.9.3 + LLVM, 微修正 * {{ :tabuchi:cttr2-deploy-qt6-20260323-01.zip | 環境込 }} 2026.03.23 Win64, Qt6.9.3 + LLVM \\ SP8 BL37XU? での CT-XAFS 測定結果に対応。連続解析ができる。 * {{ :tabuchi:cttr2-deploy-qt6-20260302-01.zip | 環境込 }} 2026.03.02 Win64, Qt6.9.3 + LLVM \\ his ファイルに対応。sinogram の window でマウス操作が有効(sinogramを左右に動かせる) * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251215-01.zip | 環境込 }} 2025.12.15 Win64, Qt6.9.3 + LLVM \\ style を明示的に指定(Qt でいう fusion)、windows 版で画面がだいぶ見やすくなった気がする。 * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251214-01.zip | 環境込 }} 2025.12.14 Win64, Qt6.9.3 + LLVM \\ Sinogram 表示回り大幅変更(改良だと思う)。回転中心の推定もある程度まともに働く。\\ Sinogram を表示するタブの一番下に「推測」というボタンがあります。\\ その横の数字入力$\alpha$(デフォルトは$\alpha=0.35$)は画像の どのぐらいの幅の一致を目指すか($\alpha=0.5\sim0.0$、0.5の時全体)の指定です。 ASR BL11S2 で測定すると回転軸の垂直方向の両端は光が無く、 真っ暗ですが、$\alpha$を0.5 近くにしてこの黒い領域が含まれてしまうと、 その影響が強すぎて黒い領域が垂直方向にまっすぐつながったような Sinogram になります。 逆に小さくしすぎると、判断に使う範囲が狭くなって像の特徴を捉えられなくなります。 * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251212-01.zip | 環境込 }} 2025.12.12 Win64, Qt6.9.3 + LLVM \\ 180度以外のデータセットも受け付ける。データセットの内一部を使った再構成も可能。 * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251029-01.zip | 環境込 }} 2025.10.29 Win64, Qt6.9.3 + LLVM * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251027-01.zip | 環境込 }} 2025.10.27 Win64, Qt6.9.3 + LLVM * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251018-01.zip | 環境込 }} 2025.10.10 Win64, Qt6.9.3 + LLVM \\ - 連続再構成したスライスの像をスライドショー的に見られるようにした - 外見の改善 - 自動保存関連の細かな動作を改善 * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251010-01.zip | 環境込 }} 2025.10.10 Win64, Qt6.9.3 + LLVM \\ 些細(?)な修正。CT1 と CT2 で規格化が違っていたのを統一した(より正しい CT1 に揃えた)。 * {{ :tabuchi:cttr2-deploy-qt6-llvm-20251004-02.zip | 環境込 }} 2025.10.04 Win64, Qt6.9.3 + LLVM \\ 2dXafsView との連携強化。 * {{ :tabuchi:cttr2-deploy-qt6-20250929-01.zip | 環境込 }} 2025.09.29 Win64, Qt6 \\ 2dXafsView と連携可能。指定範囲(スライス)について自動的に 2dXafsView で LCF 解析等を行い結果を保存できるようになった。 * {{ :tabuchi:cttr2-deploy-qt6-20250923-01.zip | 環境込 }} 2025.09.23 Win64, Qt6\\ 回転軸の原点を補正できるようにした。設定の保存と読み込みができるようにした。 * {{ :tabuchi:cttr2-deploy-qt6-20250922-01.zip | 環境込 }} 2025.09.22 Win64, Qt6\\ 2dXafsView での解析を前提に dat ファイルに書き込む数値の範囲に制限を設けられるようにした。 * {{ :tabuchi:cttr2-deploy-qt6-20250921-01.zip | 環境込 }} 2025.09.21 Win64, Qt6 * {{ :tabuchi:cttr2-deploy-qt6-20250920-01.zip | 環境込 }} 2025.09.20 Win64, Qt6 * {{ :tabuchi:cttr2-deploy-qt6-20250918-01.zip | 環境込 }} 2025.09.18 Win64, Qt6 * {{ :tabuchi:cttr2-deploy-qt6-20250913-01.zip | 環境込 }} 2025.09.13 Win64, Qt6 * {{ :tabuchi:cttr2-deploy-qt6-20250911.zip | 環境込 }} 2025.09.11, Win64, Qt6 * {{ :tabuchi:cttr2-64bit-qt5.15.2.zip | ctTr2.zip (dll等環境込み) }} 2022.02.24, Windows 64bit版, Qt5.15.2 使用 - 上記のリストから、一番新しい日付の zip ファイルをダウンロードして展開して下さい。\\ 展開してできるフォルダの中には、フィアル類やフォルダが有りますが、全部そのまま一つのフォルダの中に置いておいて下さい。 フォルダの中にある ctTr2.exe もしくは、最新の日付が名前に入った exe ファイルが実行ファイルです。 - 上記のリストの中に、zip ファイルよりも新しい日付の exe ファイルがある時は そのファイルもダウンロードして、zip ファイルを展開してできるフォルダの中に入れて下さい。 ===== - CT-XAFS データの再構成に特化した使用法概略 ===== この節の内容は、[[2dXafsView-ctTr2|「2dXafsView と ctTr2 の連携」]]に移動する予定です。 * あいちSR の榊原啓介氏がここに記載した概略の要点をまとめて{{ :tabuchi:cttr2_使い方-001.pdf |(図入りの)資料}}を作成してくださいました。\\ これも参考にしてください。 - ctTr2 を起動して下さい - 画面中段にある「CT XAFSのための追加情報」のチェックボックスをチェックして下さい - 「CT XAFSのための追加情報」ブロックの中で「データフォルダ選択」を押して CT-XAFS データがあるデータフォルダを選んで下さい * あいちSR BL11S2 で CT-XAFS 測定を行うと、全エネルギー全角度の画像が全て収められた一つのフォルダができます。\\ この様なフォルダにあるデータを解析対象にする時は「ASR標準」チェックボックスにチェックを入れ、 全データが収められているフォルダを選択して下さい。 * tidyUpCTXafs 等を使用してでデータファイルの整理を行った場合は (標準では) Energy という名前のフォルダの下に、 測定エネルギー別のフォルダができ、その下に各エネルギーで測定された角度違いのデータが収められます。 この様な構成のフォルダにあるデータを解析対象にする時は「ASR標準」のチェックを外し、 Energy のフォルダを選択して下さい。 - この時点で「CT XAFSのための追加情報」ブロックの中の「セット」ボタン(「データフォルダ選択」の行に有ります)を押すと 最低エネルギーで測定された(角度違いの)データセットが読み込まれます。 その像は、画面下部の画像表示部の中で「元画像」のタブを選択すると見ることができます。 - 「CT再構成設定」ブロックの中で、「回転軸」の方向を選んで下さい。BL11S2 の標準的なセットアップなら「水平」のはずです。 - 画像表示部の「元画像」の中で適当な場所を選び「左クリック」すると解析対象になる「スライス」を選べます。 - 画像表示部の「元画像」の中で適当な場所を選び「右クリック」すると回転中心の位置を選択できます。 - 適当に回転中心を選んだ後、画像表示部の「Sinogram」を選択すると、解析対象のスライスの Sinogram を見ることができます。\\ Sinogram は横軸が解析対象の「スライス」内の「位置」縦軸が「角度」の画像です。通常 CT 測定は半周(180)で行いますが、これは その先の画像はX線の入射方向が裏表逆になるので左右反転するだけで $\theta-180$の画像と同一になるはずだからです。\\ Sinogram の画像を生成する際にはこの様に考えて縦軸方向は 0 $\sim$ 360 の範囲に拡張して表示されます。\\ この時、もし「回転中心」の推定が正しければ Sinogram 像は 180度の点を境に上下が連続に変化するはずです。 - Sinogram を適当に拡大し(画面内でマウスホイールを回すと拡大縮小できます) 180度の境界をよく確認して、 その点での画像が上下連続になるように「回転中心(CoR)」の数値を選んで下さい。数値は整数ではなく実数値を選べます。 - 「回転中心」を選べたら「CT再構成」ブロックで「計算実行」してみて下さい(この時「計算実行」ボタンの右の CT1/CT2 は CT1 を選んで下さい)。 - 画像表示部の「再構成画像」にその結果が表示されます。 - 「再構成画像」画面の中でマウスホイールを回して画像を拡大縮小し、解析したい部分が画面中心付近に収まるようにして下さい。 - 「再構成画像」画面の中で適切な位置とサイズを選んだ後で、「再構成画像」画面下部の「計算範囲に設定」ボタンを押して下さい。 - 「CT XAFSのための追加情報」ブロックの中で「I0 File Set」の「選択」を押し、I0 画像のセットを選んでください。 - 「元画像」ブロック(メインウインドウ最上部)で「BG画像」を選んで下さい。「BG画像」は1枚だけです。 - I0 画像が選ばれてないい場合「I0 は常に定数 1 だった」と解釈されます。BG画像が選ばれていない場合「BGは常に0だった」と解釈されます。 - 現時点では「I0画像」、「BG画像」のサイズは(測定範囲)は一致している必要が有ります。 - 画像表示部の「元画像」の中でマウスを動かして再構成を行いたい範囲(スライス)を決め、 その値を「CT再構成設定」ブロックの中の「From」「To」に指定して下さい。 - さらに「連続実行」にチェックを入れます。(この時点で CT1/CT2 は自動的に CT2 が選択されますがそれが正常です) - 「CT再構成」ブロックで「画像自動保存」を選択すると、再構成結果を「画像」として保存できます。\\ 「選択」ボタンを押して画像を保存するフォルダを選び「ファイル名」を付けて「保存/Save」して下さい。 ここで選ぶ名前は、この後解析が進んだ時に実際に保存されるファイル名の「ベース名」になります。(拡張子は無視されます) - 「CT再構成」ブロックで「データ自動保存」を選択すると、再構成結果を「データ」として保存できます。\\ 「選択」ボタンを押して画像を保存するフォルダを選び「ファイル名」を付けて「保存/Save」して下さい。 ここで選ぶ名前は、この後解析が進んだ時に実際に保存されるファイル名の「ベース名」になります。(拡張子は無視されます) - 「CT再構成」ブロックで「サブフォルダに保存」を選ぶと、再構成して得たスライス像を全部同じ場所に置くのではなく、\\ サブフォルダを作って整理しながら保存することができます。\\ その際、スライス名のフォルダに収めるか、エネルギー名のフォルダーに収めるかを併せて選択して下さい。 (各スライスのエネルギー違いの像のセットは、2D-XAFS 測定結果と同じ扱いができますので、スライス単位で整理しておくがオススメです) - ここまで準備ができたら「CT XAFSのための追加情報」ブロックの中で「連続実行」ボタンを押して下さい。\\ エネルギー違いのデータセットを順に選びながら、それぞれのデータセットに対して「連続実行」で選択した範囲のスライスの最高性を行い、 その結果を「自動保存」で選択した場所に保存します。 ===== - 2dXafsView との連携 ===== ctTr2 は 2dXafsView と連携することで、CT-XAFS データの自動解析ができます。\\ ここでは、そのための操作の概略を紹介します。 以下、記号、用語として以下のものを使います。 - 画像データを$I$で表します。 - CT再構成の対象となる、角度違いで撮影された画像のセット($I_{\theta_i}$)を「CTデータ」と呼びます - CT-XAFS解析のために測定した、エネルギー違いの CTデータ のセット($I_{\theta_i}^{E_j}$)を「CT-XAFSデータ」と呼びます。 - CTデータ($I_{\theta_i}$)を再構成して得た、スライス画像のセット($I_{S_i}$)を「CT再構成データ」と呼びます。 - CT再構成データ($I_{S_i}$)のエネルギー違いのセット($I_{S_i}^{E_j}$)を 「CT-XAFS再構成データ」と呼びます。 - CT-XAFS再構成データ($I_{S_i}^{E_j}$)から一つのスライス($S_i=S_n$)を選んで抜き出したデータセット($I_n^{E_j}$)を「2D-XAFSデータ」と呼びます。 - 2D-XAFSデータ($I_n^{E_j}$)を解析して得た2Dの情報(例えば価数分布)のマップ($I_n^{2D}$)を「2D解析結果」と呼びます。 - スライス$n$を変えて得た、2D解析結果($I_n^{2D}$)をまとめることで 3D解析結果$I^{3D}$が得られます。 * ctTr2 側の操作 - ctTr2 と 2dXafsView の接続 - ctTr2 と 2dXafsView の連携では(ネットワーク接続の関係として) 2dXafsView がサーバ(接続要求を待つ側)、 ctTr2 がクライアント(接続要求を出す側)として動きます。 - 2dXafsView がサーバなので、先に 2dXafsView が動いている時に ctTr2 を動かすと自動的に接続されます。\\ 接続先はデフォルトで localhost のポート番号 6078 なので、ctTr2 が動いているのと同じ PC 上の 2dXafsView に接続しようとします(ポート番号を変える時は 2dXafsView 側の設定も一緒に変える必要があります)。\\ 設定を変える場合は config.cfg に \\ 2dXafsView [FDQN または IPアドレス] [ポート番号]\\ と書かれた行がを入れて下さい。 - 後から 2dXafsView を動かした場合は、「CT XAFSのための追加情報」ブロックの「2dXV連携」ボタンを押して下さい。 ctTr2 から 2dXafsView に接続要求を送ります。 - 両者が正しく接続されている時には「2dXV連携」ボタンは水色に光ります。接続できていない時は黄色です。 - 解析対象のデータの指定 - 2dXafsView は ctTr2 から特定の 1 スライス(断面)について、 エネルギー違いの 1セットのデータ(2D-XAFSデータ, $I_n^{E_j}$, $n$はスライス番号)を受け取って解析を行います。 このため、2dXafsView と連携する前に、CT-XAFS データ(エネルギー違いの CT データセット, $I_{\theta_i}^{E_j}$)の再構成は先に終わっている必要があります。\\ CT再構成を行う時に「CT再構成」ブロックにある「データ自動保存」をチェックし、 フォルダを選択して CT再構成の結果を(2dXafsViewが読める)データとして保存して下さい。それがCT-XAFS再構成データ($I_{S_i}^{E_j}$)になります。 (2dXafsView は画像ファイルを読んで解析することもできますが、一般に画像ファイルのでーたの精度は低いです) - 「CT再構成ブロック」の「データ自動保存先」に CT再構成の「連続実行」の時にCT-XAFS再構成データを保存したのと同じ場所を指定して下さい。\\ ctTr2 は「CT再構成」ブロックの「データ自動保存」先として選ばれたフォルダからデータを読んで 2dXafsView に送り、2dXafsView に解析を依頼します。\\ ctTr2 の「CT XAFSのための追加情報」ブロックの機能を使って、CT再構成の「連続実行」を行った直後なら、 「データ自動保存」先は 2D-XAFS解析 の対象となるデータがあるフォルダを示しているはずですが、再構成後 ctTr2 を一度停止した場合など、 後日「連続2D-XAFS解析」を行う場合には、「データ自動保存先」として、CT再構成の「連続実行」を行った時と同じフォルダを指定する必要があります。 - 元データの指定 - 同じく、後日「連続2D(XAFS)解析」を行う場合、元の CTデータやCT-XAFSデータを読む必要はないのですが、 解析対象のスライスを選ぶときなど、画像で見て選んだほうがやりやすいので、CTデータの読み込みも行っておくことをおすすめします。 - 仮の2D-XAFSデータセット送信 - ここまで準備ができたら「CT再構成のための追加情報」ブロックの「2dXV連携」ボタンの右にある「送信」というチェックボックスに チェックが入っていることを確認して下さい。 - チェックが入っている状態で「スライス」を選択すると(「画像表示ウインドウ」の「元画像」タブに表示された像の上で左クリック)、そのスライスについて エネルギー違いの一連の 2D データが 2dXafsView に送られます。 * 2dXafsView 側の操作 - 解析条件の決定 - ctTr2 から送られてきた2D-XAFSデータセットをどの様に解析するかを決めて下さい。\\ どの範囲を解析対象にするか、積分範囲、分析刻みをメインウインドウで決め、 「解析」ウインドウでは「LCFを行う」「成分として CuO と Cu2O の標準スペクトルを読み込む」... 等、 通常 2dXafsView で 2D-XAFS 解析を行う時と同じ操作を行って下さい。 - 条件を決めたら「解析」ウインドウで「2次元解析実行」を押して解析を行い、結果を見て必要なら解析条件を調整して下さい。 - 解析結果の保存先の指定 - 良い条件が見つかったら「解析」ウインドウ右上の「保存条件設定」ボタンを押して下さい。\\ ここで、「ベースフォルダ」として、ctTr2 と連携して行った解析結果を納めたいフォルダを指定して下さい。 - 「ベース名」や「追加タグ」は無くても構いません。ctTr2 と連携する際には、最低限「スライス番号」がファイル名に入ります。\\ 保存するファイルの形式として「PNG」「Tiff」「As Text」が複数選択できます。 PNG や Tiff を選ぶと、それぞれの形式の画像ファイルができます。「As Text」を選ぶと、テキストデータとして値が保存されたデータファイルができます。 * 再び ctTr2 側の操作 - 解析範囲(スライス)の決定 - 解析したいスライスの範囲を選んで下さい。「再構成設定」ブロックの「スライス」の 「From」、「To」に数値を入れます(「連続実行」チェックボックスがチェックされていなくても構いません)。 - 連続2D-XAFS解析の実効 - ここまでで準備完了です。\\ 「CTXAFSのための追加情報」ブロックの「2D連続解析」ボタンを押して下さい。 - ctTr2 からは、指定した範囲の各スライスのデータが順次 2dXafsView に送信され、2dXafsView 側では指定した条件で 2D-XAFS 解析が行われます。 - 結果は 2dXafsView の「保存条件設定」で選んだフォルダに納まります。 - 結果を保存するフォルダにはサブフォルダとして沢山のフォルダができます。詳細は書きませんがフォルダ名を見ると何が収まっているかはだいたいわかると思います。 ===== - 使用方法概略 ===== ここでは ctTr2 の基本的な使い方を紹介します。\\ ... と言いつつ全然進みません。掲示されている図も古いので、最新の内容で更新できればと思っています。 {{ :tabuchi:cttr2mainwin.png?direct&400|メインウィンドウ}} {{ :tabuchi:ctwin.png?direct&400|再構成結果の表示}} {{ :tabuchi:sinowin.png?direct&400|シノグラム表示}} ------ [[start|田渕のページのルート]]\\ 当 web ページとその下のページに関するお問い合わせ等ございましたら、[[連絡先|連絡先]]にご連絡をお願いします。 \\ 今日: {{counter|today}} / 昨日: {{counter|yesterday}} / 総計: {{counter|total}} ~~NOCACHE~~