核 医 学 機 器 工 学 概 論 北 大 病 院 核 医 学 診 療 科 加 藤 千 恵 次 chtgkato.com
本 講 義 の 目 的 国 家 試 験 によく 出 題 される 画 像 のフーリエ 変 換 処 理 畳 み 込 み 積 分 処 理 断 層 画 像 再 構 成 (CT PETなど) を 理 解 する サンプルデータとプログラムを 用 いて 解 説 する
講 義 内 容 1.C 言 語 による 簡 単 なプログラム 作 成 法 の 習 得 2. 画 像 を 表 示 する 方 法 の 習 得 3. 画 像 の 実 空 間 フィルタ 処 理 法 4. 周 波 数 空 間 処 理 高 速 フーリエ 変 換 (FFT) 5. 断 層 画 像 再 構 成 法 の 理 解 (CTの 原 理 ) 画 像 処 理 技 術 と 平 行 してC 言 語 文 法 を 学 習 する
無 料 のC 言 語 作 成 プログラムをダウンロード Visual Studio express で 検 索 し このHPへ
Visual Studio Express 2012 for Windows Desktop の ダウンロードページへ
Visual Studio 2010 Express の Visual C++ 2010 Express ダウンロードページへ
ダウンロード 言 語 が 日 本 語 になっていることを 確 認 し 今 すぐインストール を クリック
実 行 ボタンを クリック
セットアップ ダイアログ が 現 れる 次 へ を クリック
インストールには 数 十 分 かかる
インストール 後 に 製 品 の 登 録 を 行 う これを 実 施 しないと 30 日 後 に 使 用 できなくなる
オンラインで 登 録 キーを 取 得 する
Microsoft の アカウントを 持 っていない 場 合 は 新 規 登 録 を 行 う アカウントを 作 成 したら 登 録 アドレス パスワードを 入 力
Product key が 表 示 されるので ドラッグしてコピーする
Product key を 登 録 キーを 入 力 する テキストボックス 内 にペーストする
登 録 が 完 了 Visual C++ が 無 料 で 使 える 環 境 が 整 う
プログラム 作 成 に 必 要 な Windows での 作 業 ファイル 名 の 拡 張 子 を 表 示 する モードにする ファイルの 拡 張 子 が 表 示 されないと ファイルの 区 別 がつかない ファイルの 拡 張 子 が 表 示 されるモード
Windows 7 の 場 合 スタートボタン ( 画 面 左 下 の 丸 い ウィンドウズマーク) をクリックして 左 の 画 面 を 表 示 コンピュータ をクリック
Windows 7 の 場 合 スタートボタン ( 画 面 左 下 の 丸 い ウィンドウズマーク) をクリックして 左 の 画 面 を 表 示 コンピュータ をクリック
フォルダ オプション ダイアログが 開 く 表 示 タグをクリック 登 録 されている 拡 張 子 は 表 示 しない のチェックをはずす OKボタンをクリック
さらに ファイル 表 示 を 詳 細 モード にすると プログラム 作 成 に 必 要 な ファイルを 見 つけやすい
Windows 8 の 場 合 キーボード または 画 面 左 下 の ウィンドウズボタン をクリックして アプリの 一 覧 画 面 を 表 示 エクスプローラー をクリック
エクスプローラー の 表 示 タグ をクリック 詳 細 を 選 択 ファイル 名 拡 張 子 にチェックを 入 れる
画 像 描 画 プログラムの 実 行 結 果 核 医 学 画 像 ファイル bone が 表 示 される ( 患 者 情 報 を 削 除 した 医 用 画 像 データファイルを 用 意 )
画 像 に 中 央 値 フィルタ 処 理 (median)を 行 う フィルタ 処 理 プログラムを 各 自 作 成 して 実 際 の 医 用 画 像 で 効 果 を 確 認 する 演 習 median filter は smoothing filter より 輪 郭 が 保 たれる median filter は 微 細 なノイズを 除 去 する 効 果 がある
画 像 を フーリエ 変 換 ( 周 波 数 変 換 )する 演 習
Original Image FFT Frequency spectrum Frequency space filtering Filtered Image Filtered Frequency spectrum 実 際 の 医 用 データを IFFT 使 った 周 波 数 空 間 フィルタの 演 習 問 題
脳 のポジトロンCTデータを 用 いて CTの 原 理 を 理 解 する 演 習
どの 言 語 を 習 得 すればよいか 今 までは UNIX Linuxで 動 作 する 標 準 的 な 文 法 のC 言 語 C++ 言 語 が 主 流 であった 現 在 では Windowsでの Visual C++ Visual C# Visual BASIC およびJava などが 主 流 で あるが 非 常 に 癖 のある 言 語 が 多 く 学 習 が 困 難 基 本 となる 言 語 は CまたはC++ 言 語 であるが Windowsで 文 字 と 画 像 を 標 準 的 な 文 法 で 扱 う C 言 語 開 発 ツールを 探 すのは 困 難
C や C++ 言 語 で 主 なOS (Windows UNIX など) が 作 られている すなわち 現 代 社 会 で 最 も 重 要 な 言 語 である まず 基 本 となる 普 通 の CまたはC++ 言 語 の 文 法 (ANSI 規 格 )を 知 ることは 将 来 Visual C# や Visual C++ を 使 う 必 要 が 生 じた 場 合 にも 必 ず 役 立 つ 知 識 となる いきなり Microsoft が 決 めた 文 法 に 従 って Cプログラムを 作 るのは 大 変 苦 労 する
Windows 上 で 標 準 的 なC 言 語 を 使 って 画 像 を 扱 うプログラムを 作 成 する 方 法 OSは Windows XP Vista Seven(32 or 64bit) コンパイラ (プログラムから 実 行 ファイル(.exeファイル)を 作 るソフトウェア) Visual C++ 2010 Express ( 無 料 ) Visual Studio.Net ( 端 末 室 のPCに 入 っている)
Visual C++ 2008 express の 入 手 方 法 Microsoft の Webから 無 料 インストール Visual C をキーワード 検 索 Visual C++ 2008 express edition を 選 択
Visual C++ 2008 express の 入 手 HP Visual Studio 2008 Express Editions
Visual Studio 2008 Express Editions HPの 下 のほうに Visual C++ 2008 express を ダウンロードするバナーがある
Visual C++ 2008 Express Editionを ダウンロード ( 数 十 分 要 する)
Visual C++ 2008 Express Edition の インストールが 完 了 すると すべてのプログラム 一 覧 の 中 に Microsoft Visual C++ Express Edition が 登 録 される このショートカットを デスクトップにコピー すると 便 利
右 クリックで ショートカット 作 成 の メニューが 現 れる
Visual Studio 2008 Express Editions を 起 動 すると この 画 面 が 現 れる
プログラムの 作 り 方 ファイル ー 新 規 作 成 - プロジェクト を 選 択
新 しいプロジェクト のダイアログが 現 れる Win32を 選 択 Win32プロジェクトを 選 択 参 照 ボタンを 押 して プロジェクトを 保 存 するディレクトリを 作 成 任 意 のプロジェクト 名 (プログラム 名 )を 入 力 して OK をクリック (とりあえずデスクトップに program0 フォルダを 作 成 ) ソリューションのディレクトリを 作 成 のチェックを 外 す
Win32アプリケーションウィザード のダイアログが 現 れる 次 へ を 左 クリック
Windowsアプリケーション を 選 択 空 のプロジェクト にチェックを 入 れる (これが 重 要 )
メイン 画 面 に program0 プロジェクト が 現 れる program0 を 右 クリック
プロパティをクリック
文 字 セット - マルチバイト 文 字 セットを 使 用 を 選 択 (これを 行 わないと 日 本 語 仕 様 のWindowsでは 作 成 したプログラムで 文 字 化 けが 生 じる)
C 言 語 プログラムの 記 述 ソースファイルを 右 クリック 追 加 - 新 しい 項 目 を 選 択
新 しい 項 目 の 追 加 のダイアログが 現 れる C++ファイル を 選 択 プログラムのファイル 名 を 入 力 (プロジェクト 名 と 同 じ 名 前 にすると 混 乱 しにくい) 拡 張 子 を.c にする (ここでは program0.c ) 拡 張 子.c は C 言 語 プログラム コード を 示 す
program0.c ファイル が 作 成 される この 空 白 に program0.c のプログラムコードを 記 述 する
C 言 語 の 記 述 画 面 に Hello, C language. を 表 示 する
// program0.c #include <stdio.h> #include <HU.h> void Main(void) { TextWindow( 100, 100, 400, 300 ); } printf(" Hello, C language. ");
// Program0.c とは ただの 注 釈 文 プログラムではない //(ダブルスラッシュ)を 書 くと そこから 右 側 の 文 字 はプログラムから 無 視 される (rem 文 という) Cコンパイラは rem 文 を 緑 色 で 表 示 する 注 釈 文 を 適 宜 プログラムに 入 れることで プログラムを 理 解 しやすくなることが 多 い 日 本 語 もOK.
#include < > とは プログラムにヘッダファイルを 合 体 させることを 示 す Cコンパイラでは 青 色 で 表 示 される #include <stdio.h> 通 常 のC 言 語 の 最 初 の 文 C 言 語 が キーボード マウス ディスプレイ などの コンピュータの 基 本 入 出 力 装 置 を 使 えるように あらかじめMicrosoftが 用 意 して くれたプログラム(ヘッダファイル)を 合 体 させる ことを 示 す stdio.h = Standard Input Output header
ヘッダファイル 関 数 の 実 体 ( 中 身 )を 記 述 したファイル 例 えば 画 面 に 文 字 を 表 示 するウィンドウを 作 成 するだけでも 多 くのWindowsを 操 作 する 関 数 を 使 って 複 雑 なプログラムを 記 述 する 必 要 が 生 じるが その 過 程 を1つの 関 数 TextWindow() で 済 むように あらかじめ 面 倒 なプログラムが 既 に 書 き 込 まれているファイル
ヘッダファイル HU.h #include < HU.h > Visual Studio.net 等 の C 言 語 で ウィンドウや 文 字 画 像 の 表 示 を 行 うには ものすごく 面 倒 な 関 数 を 使 わなくてはならない そこで 面 倒 な 関 数 によるプログラムを 既 に 書 いてあるヘッダファイルが HU.h #include < HU.h > と 書 くことで 面 倒 な 関 数 の 記 述 がすでに 完 了 したことになり プログラム 作 成 作 業 が 大 幅 に 簡 略 化 される
#include < > とは Visual C++ のヘッダファイルフォルダ 内 C: - Program Files(x86) - Microsoft Visual Studio 10.0 VC include の 中 から ヘッダファイルを 探 して プログラムに 合 体 させることを 示 す HU.h を 上 記 フォルダ 内 に コピーしておく
ホームページから HU.h HU.h 説 明 書 をダウンロード ファイル 名 を 右 クリックして 対 象 をファイルに 保 存 を 選 択
void Main(void) { } とは 普 通 のC 言 語 では main( ) と 書 くが Main(void)と 書 くことで HU.h に 用 意 した 関 数 が 使 えるようになっている void とは 空 っぽ の 意 味
関 数 だから 何 かを 入 力 して 何 かを 出 力 するの だが メイン 関 数 は 何 もしない 形 式 上 の 関 数 なので main の 右 側 のカッコ 内 に 本 当 は 入 力 する 変 数 を 入 れるところにvoidを 記 述 する 何 も 出 力 しないことを 示 すために mainの 左 側 に も void と 記 述 している void Main(void) { } の { と }の 間 にC 言 語 プログラムを 書 く
TextWindow(100, 100, 400, 300); とは HU.h で 定 義 した 文 字 表 示 用 ウィンドウ (テキストウィンドウ) 作 成 関 数 このウィンドウの 中 には 画 像 は 描 けない (100, 100, 400, 300) は テキストウィンドウの 位 置 大 きさ 左 の 100, 100 はウィンドウの 左 上 座 標 次 の 400, 300 はウィンドウの 右 下 座 標
TextWindow(100, 100, 400, 300) ; の 右 端 の;(セミコロン)は C 言 語 プログラム 文 の 区 切 りを 示 す 文 の 終 わりには 必 ず ; を 打 つ ; の 打 ち 忘 れは 最 もよくある C 言 語 プログラムミス(バグ)
printf( Hello, C language. ); printf() は 文 字 や 数 字 をテキストウィンドウに 表 示 する 関 数 で C 言 語 で 頻 繁 に 使 う 関 数 記 述 したい 文 字 を カッコの 中 に 文 字 と 記 述 する ( で 挟 んだ 文 字 列 を 文 字 列 リテラル という ) 日 本 語 などの2バイト 文 字 もOK. TextWindow(100,100,400,300); と printf( Hello, C language. ); を 1 行 につないで TextWindow(100,100,400,300); printf("hello, C language."); と 記 述 しても 同 じ セミコロンで 文 の 終 点 が 明 示 してあれば 全 く 同 じプログラムとして 正 常 に 動 く
program0 の 実 行 緑 三 角 のデバッグボタンをクリック
program0 の 実 行 結 果 X ボタンをクリック するとプログラム 終 了 TextWindow 関 数 が 作 成 したウィンドウ printf 関 数 が 設 定 した 文 字 列 の 表 示
program0 フォルダ 内 に Debug フォルダが 作 成 され program0.exe が 完 成 した 実 行 プログラム これをクリックすると 同 じ 実 行 結 果 を 得 る 詳 細 表 示 にする
エクスプローラで 拡 張 子 (.exe など)が 表 示 されない 場 合 は エクスプローラのフォルダオプションで 拡 張 子 は 表 示 しない のメニューのcheck をはずす
program0 フォルダ 内 にプロジェクトファイル program0.vcproj ファイルが 作 成 される これをクリックすると Visual C++ が 起 動 し プログラムの 編 集 作 業 が 可 能 となる
課 題 1 自 分 の 名 前 を 表 示 するCプログラムを 書 いて 下 さい