pyE5A:e5_Gaf.py

pyE5A: Gaf Film 解析(1) ファイル一覧注） Spyder IDE 5.2.2 上で開発しました。
標準モジュール以外で必要なモノは下記です。

以下、python Spyder で実行することを念頭に説明します。

# import: python-pptx package (used v0.6.18)# https://python-pptx.readthedocs.io/en/latest/> pip install python-pptx
このモジュールは、conda install ではダメみたいです。

ダウンロードした pyE5A_Gaf フォルダーを、Spyder で プロジェクト：プロジェクトを開く① e5_Gaf.py : 解析 __MAIN__② 解析結果出力⑥

パワポ (.ppt) と Excel (.xlsx) を出力します。

(2) 準備：スキャナ読取り③ Gafスキャン用紙.pptx
照射した Gaf を貼り付けるシート④ Gaf 解析 subroutines⑤ Gaf スキャン済データ 定義(1) 読取りシート③ に、感光させたGaf Film を貼る。
（#1～#6の順で、６枚まで貼れます。６枚以下でもOK）(2) PC用スキャナで、75dpi ()で読取り。
(3) ビットマップ形式(.bmp) で保存⑥。(ファイル名は任意)⑥を解析する際のパラメータ⑤⑥ Gaf スキャン済データ
ビットマップ (.bmp) で保存が必要

#1

#2

#3

#4

#5

#6

【 実行 】④③(1) ①を実行すると、(2) ⑤に従って、(3) ⑥が読み込まれ、(4) ②が生成されます。

②①③ スキャナ読取り用シート

Rev.2302

pyE5A解説 : Gaf Film 解析⑥ スキャナ読取り結果

1

pyE5A:e5_Gaf.py(3) 解析結果の出力（概要）②a _scan.ppt②b _scanShift.ppt②c _anaOD.ppt②d _anaOD.xlsx

O.D.値解析結果

同 ②c で、数値を Excel 表で出力
スキャナ画像の読込み結果
そのままRev.2302

同 ②a で、画像分割具合の調整用

pyE5A解説 : Gaf Film 解析2

pyE5A:e5_Gaf.py(4) e5_Gaf.py : __MAIN__ の説明① 【 修正箇所 】
rDB_Gaf[ ] (後述) の何番目を解析するかの指定② rDB_Gaf[ ] から、解析パラメータを取得③a,b スキャン済イメージファイルのフォルダー指定
左図の場合、同 pyE5A_Gaf フォルダー中の./_GafData/ にある .bmp ファイル

④ 解析実行、レポートを出力_scan.ppt , _scanShift.ppt , _anaOD.ppt を出力③a⑤ 【 必要なら 】 スキャンイメージを出力_scanShift.ppt 中の 各種イメージを、.png .csv で出力⑥ O.D. 解析結果を Excelで出力_anaOD.xlsx を出力①【 Program 構造 】
_Ayoshida LIB subset_Gaussian Fit_パワポレポート作成②

E5ana LIB subset
Get_RunDB_ix( ) 等③b rDB_Gaf[ ] の記述④_パワポレポートE5用作成
Gaf 解析 LIB⑤OD 解析

スキャンイメージ -> OD 解析⑥Rev.2302

pyE5A解説 : Gaf Film 解析3

pyE5A:e5_Gaf.py(5) e5DB_Gaf.py の説明 コレは、./000Test/_GafData にあるテスト用 .bmp ファイルのパラメータです。
ご自分のスキャン済イメージ用のパラメータを、（書式）に従って、随時加筆して下さい。

修正箇所： 読み取った .bmp ファイルのパラメータ指定（書式）[ ‘expID’,
実験 I D 何でも良い レポートに記載される‘No’,
Run # 何でも良い[‘fn_scan’,.bmp file namedpi,
scan dpi = 75 dpi(※1)
typ ],scan type = 1 : ６枚組(※2)[(dx,dy),(dx,dy),…], ６枚の Crop Shift指定 （後述）
[0,1,…,-1] ],６枚の解析type （後述）(※1) dpi = 75 がオススメ
スキャンイメージのサイズがΦ75mm の場合、これで十分な解像度があります。
(※2) typ = 1 がオススメ
typ = 1 が、スキャナ読取り用シート：６枚組 用のパラメータです。
６枚全て貼り付けなくてもOKです（後述)。
Gaf Film サイズが □85x85 以下でもOKです。
読取り用シートの円Φ75 の内側だけを、切り取って(Crop) 解析します。

Rev.2302

スキャナ読取り用シート
Gaf Film サイズ = □ 85x85 mm
Beam 円サイズ = Φ 75 mm

pyE5A解説 : Gaf Film 解析

スキャナ読取り結果
読取りシートに、Gaf Film の4隅にテープで貼付ける。
予め Film に Φ75円 と、Up/Down Left/Right の目印を書いておくと位置合わせが楽です。

4

スキャン済 .bmp ファイルを読み込み、６枚の画像を切り出し、RGB分離後、O.D.値に変換します。

(6) _scan.ppt の説明

pyE5A:e5_Gaf.py[pg.2] 全体画像を ６枚に切り出し (crop) した結果

#1

#2

 白丸枠 が crop 中心を示します。
用紙の貼り方や、スキャナの癖で、中心がズレます crop 画像を R,G,B 分離した画像

#3

#4

#5

#6

R,G,B 成分ごとに 256階調で表示。
黒濃さが階調です。
背面色 R,G,B は、識別のため。意味ありません。

[pg.3] R,G,B画像 に 「円形マスク」 をした画像
白丸枠の大きさでマスクをかけて、以降の解析を行っています。
この枠の外には、サインペンなどでメモ書きしてあっても結構です。

[pg.1] .bmp を読み込んだ
１頁全体の画像[0,1,…,-1] ], ６枚の解析typeの指定方法
上図の場合、Gaf Film の感光条件は、#1 : Wobbler磁石=OFF → 0指定#2～#5 : Wobbler=ON → 1指定#6 : Film無し→ -1指定でしたので、
rDB_Gaf [] の パラメータ指定は、[0,1,1,1,1,-1] ],となります。

Rev.2302[pg.4] マスク画像 を O.D.値に変換した画像（参考文献） Optical Density : O.D.値について
上松、花屋、小嶋 (JAEA 高崎研)
「GAFフイルム線量計とイメージスキャナを組み合わせた、簡便なイオンビームの2次元線量相対分布計測システム」

RADIOISOTOPES, 57 87-98 (2008)

pyE5A解説 : Gaf Film 解析5

(7) _scanShift.ppt の説明

pyE5A:e5_Gaf.py[pg.1～4] の構成は、 _scan.ppt と同じです。
６枚画像の切り出し具合の調整用です。

[pg.2] page画像を ６枚に crop した結果 を見て下さい。
[(dx,dy),(dx,dy),…], ６枚の Crop Shift指定方法

dy : - → +Separated images & those RGB-band ６枚全てにおいて(dx=0, dy=0) にした場合。
[ (0,0), (0,0), (0,0), (0,0), (0,0), (0,0) ],dx : - → +白丸枠 に合うように crop 位置を調整する必要があります。
上図に、「dx dy値の方向」 を示しました。
白丸枠内の目盛と dx,dy の整数値は、必ずしも一致しませんので、[(dx,dy),(dx,dy),…], の値を何度か変化させながら “e5_Gaf.py” を実行して、最適値を捜して下さい。

 [ (2,3), (-2,4), (2,6), (-2,6), (1,10), (0,0)],にした場合。
値は整数値で指定です。

今回のスキャンは、この Crop Shift 値 で、ほぼ正しく白丸枠に収まりました。

これで [pg.3～4] の画像中心も正しく設定されました。

Rev.2302

pyE5A解説 : Gaf Film 解析6

ｐｙE5A_GafFilm(8) _anaOD.ppt の説明[pg.1] Film#1 解析結果(band plot)[pg.2] Film#1 解析結果(Gaussian Fit plot)

Wobbler＝OFF 測定の場合、O.D. 値分布の Gaussian Fit 解析も行います。
[左図] band-x, band-y plot では、２次元プロット中に示した
Y軸側 : ban-x X軸側：ban-y の”色帯”位置で切り出した (※1) １次元プロットを表示します。

[右図] Gaussian Fit plot では、２次元プロット中に示した
黒十字： Gaussian の重心位置
ban-x ban-y の ”色帯”位置で切り出して、１次元Gaussian で fit した結果をプロットを表示します。

[pg.9] Film#5 解析結果 (band plot)

Wobbler=ON 測定の場合は、band-plot のみで、Gaussian Fit解析は行いません。

Rev.2302

pyE5A解説 : Gaf Film 解析(※1) 色帯 band-x, -y の位置指定を変更する場合は、./gaf/gaf_anaOD.py の下記の場所を適宜変更して下さい。

7

(9) _anaOD.xlsx の説明

pyE5A:e5_Gaf.py_anaOD.ppt に記した解析結果を、別途 Excel で解析したい場合に便利でしょう。

Sheet = od(0)_Atrb class anaOD() の Attribution 一覧②③① class anaOD() の Attribution
フィルムサイズ、OD値、画像中心位置
Gaussian fit の結果など。
詳しくは ./gaf/gaf_anaOD.py
class anaOD():def _myclear(): を参照。

②、③ 色帯 ban-x, -y の数値
Wob=OFF の場合(左図)は、Gauss. fit した時の Beam 中心位置の ban のみ。
Wob=ON の場合は、色帯 5本それぞれの ban 値を表示。

①

詳しくは ./gaf/gaf_anaOD.py
class anaOD():def mkdf_Atrib(): を参照。

Sheet = od(0)_odC class anaOD() の odC [ ] dump

④ class anaOD() の odC の dump
各フィルムの OD値 配列⑤pandas の index = Y [mm], columns= X [mm]で dump してあります。

⑤ 同 ④ に、Excel 条件付き書式を指定して表示させた場合④

Excel で読み込んでから、自分で 条件付き書式 を設定して下さい。

Rev.2302

pyE5A解説 : Gaf Film 解析

8

(10) ./gaf/gaf_scan.py の説明

pyE5A:e5_Gaf.py

OD値に変換する段階で、別途 Excel で解析したい場合に便利でしょう。

前述 ページ ３ で 記した部分について⑤ 【 必要なら 】 スキャンイメージを出力_scanShift.ppt 中の 各種イメージを、.png .csv で出力(11) プログラムをいじりたい場合
gaf_anaOD.py や gaf_scan.py の最後に、それぞれ debag 用の
if __name__ == '__main__’:を用意してありますので、イジッテみてください。

modes = [ Job番号 ] の指定値は、./gaf/gaf_scan.py
class rdGafScan6 ():def save_all (): を参照。

以上です。
お問い合わせは、理研あ吉田まで。
Rev. 23.02/26

Rev.2302

pyE5A解説 : Gaf Film 解析9