特集「顕微鏡法による材料開発のための微細構造研究最前線（）」 ―顕微鏡法の材料評価への展開と先端評価法の進展―'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!("" トピック""" DigitalMicrographによる電子顕微鏡の簡単な制御および画像解析""石川亮
田 中 利 空柴 田 直 哉幾 原 雄 一
1)
2)
3)
3)
"""
"
"
"
"
""

)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*

.

は じめに

.

簡 単 な 制 御今世紀に入り，収差補正装置が広く普及し，原子分解能で本稿では日本電子社(JEOL)電子顕微鏡を例として用いるの電子顕微鏡観察が従来よりも比較的容易となった．収差補が，Gatan 社との通信がサポートされている顕微鏡であれば正装置は多段の多極子レンズから構成されているが，すべて実行可能である．スクリプトの編集は Ctrl ＋ K あるいは上のレンズを最適化するためにコンピュータによる自動制御が部のメニューから File/New Script…を選択すると編集画面行われている．レンズのヒステリシスを取り除くためのリラが起動する．

クゼーションや幾何収差の最適化にも自動調整のプロセスに組み込まれており，従来の電子顕微鏡と比較すると手動調整



蛍光板の上下のプロセスが大幅に削減されている．しかし現在でも，最終最近は CCD を搭載した顕微鏡がほとんどであり，蛍光板的な光学系調整の部分では手動で行うため，得られる像やスを用いた調整をするユーザーも減ってきているが，分かりやペクトルの質には必然的に個人差が出る．この手動調整を可すい例として蛍光板の上下をスクリプトにより行う．下記の能な限りコンピュータに任せる自動調整を導入することがでスクリプトを参考にして実際に実施して頂きたい．

きれば，誰でも質の高い実験データを取得することが可能となる．また，研究者はより高度・複雑な実験やデータの解析に集中でき，科学的な生産性の向上が見込める．本稿では顕微鏡の自動化からは程遠いが，全くプログラムの知識がない方を対象とした入門として，簡単なスクリプトによる電子顕微鏡の制御や画像解析法について紹介する．
各社から販売されている電子顕微鏡はそれぞれ独自のスクリプティングによる制御を備えているが，本稿では Gatan// screen up (0) or down (2)if(ShiftDown( )) ｛JEOLCOM_SetScreen(0);result(Äscreen up ÀnÄ);｝ else ｛JEOLCOM_SetScreen(2);result(Äscreen down ÀnÄ);社の DigitalMicrograph(DM)に付属しているスクリプティングについて紹介する(オフライン版は無料公開されていス ク リ プ ト 編 集 画 面 を 選 択 し ， 右 下 の Execute ま た はる(1))．DM は CCD(Charge Coupled Device), CMOS(Com-Ctrl＋Enter でスクリプトを実行できる．Shift キーを押しな

metaloxidesemiconductor)などのカメラ，電がら実行すると蛍光板が上がり，そのまま実行すると蛍光板

plementary

Energy Lossが下がるだけのプログラムである．インタプリタ型の言語なSpectroscopy)，あるいは走査プローブを制御する DigiScan

ので，ヘッダ部分の記述やコンパイル(機械語への変換)が不子エネルギー損失分光器( EELS:Electronを備えた電子顕微鏡に付随してくるソフトウェアである．顕要であり，直ちに実行することができる．If 分岐文からも分微鏡に配備されている Gatan 社の装置は DM スクリプトをか る よ う に ， DM ス ク リ プ ト は C 言 語 の 流 れ を 組 ん で い用いて， CCD のゲイン調整やゼロロスのビーム調整がボタる．これは DM 自体が C ＋＋ で開発されていることに起因ン一つで最適化されるようにプログラムされている．DM ス

しており，文法体系も C ＋＋ に基本的に従うようである．

クリプトを習得すれは，これらの調整もユーザー側で組むこJEOLCOM_SetScreen(x )は顕微鏡本体との通信コマンドでとが可能となる．

あり，x＝(0, 1, 2)に応じて蛍光板の角度が(0°)とな, 7°, 90°
る． ShiftDown ()は Shift キーが入力されているかを検出するコマンドで，その他にも CtrlDown () , AltDown ()なども準備されており， while 文や for 文などのループから
東京大学総合研究機構1)助教 2)大学院生 3)教授(〒1138656 東京都文京区弥生 21116)
Electron microscope control and image analysis by DigitalMicrograph; Ryo Ishikawa, Riku Tanaka, Naoya Shibata and Yuichi Ikuhara(Institute of Engineering Innovation, The University of Tokyo, Tokyo)
Keywords: digital micrograph, scripting, atomicresolution STEM, differential phase contrast STEM, image analysis
2018年 8 月30日受理[doi:10.2320/materia.57.584]

特集抜け出したい時や上述の If 分岐文などの引数として利用するとよい．コメントや得られた結果などを外部出力するにはresult(“Hello World! /n”)を用いると，ダブルクオテーションの中身が output に書き込まれる．改行するために末尾には“ /n ”などの改行コードを入れると良い．本スクリプト
では蛍光板が上がった際には“screen up”が output に表示される．行頭の//から始まる部分はコメントであり，実行されない．次のスクリプトに示すように，複数行のコメントは/comments…/のように記述する．行端のセミコロンは

図1無くても問題ない．
TagGroup で 作 成 し た ス テ ー ジ Z お よ び 試 料 傾 斜 のGUI ．上 2 段のボタンはステップの異なるステージ Z
コントロール，最下段は x, y 方向の試料傾斜に対応する．

ステージの制御

試料の移動や傾斜はトラックパッドなどの制御パネルが各社より提供されているが，そのステップ(強度)は任意に変更

スクリプトはオブジェクト指向であり，Number, String, Im-できない．走査透過型電子顕微鏡(STEM: Scanning Trans-age, TagGroup などのクラスが準備されている．上から行ご

mission Electron Micro-scopy)では観察場所を探すために，とに処理を行うため，関数は main の前に記述する．関数名

試料高さ( Z 方向のステージ)を頻繁に移動することが多い

は自由に名付けられるので，ここでは SetStageZ ( numberが，ここでは任意に高さを変更できるプログラムを作成してzstep )とした．この関数はステージ Z を変更するのみなのみる．以下のスクリプトを参考に実施して頂きたい．

で，返り値は void となる．また，引数(zstep)は変更したい
ステップ値であり，単位は mm である． Alt / Shift キーを入//$BACKGROUND$/* Aug„19„2018* stage & tilt functions*/
void SetStageZ(number zstep) ｛number curr_sz = EMGetStageZ( );if(AltDown( )) zstep = 10*zstep;if(ShiftDown( )) zstep = („1)*zstep;
EMSetStageZ(curr_sz + zstep);｝
void SetTiltX(number xtilt) ｛number curr_tx = EMGetStageAlpha( );EMSetStageAlpha(curr_tx + xtilt);｝
void SetTiltY(number ytilt) ｛number curr_ty = EMGetStageBeta( );EMSetStageBeta(curr_ty + ytilt);｝// main
SetStageZ(10);//SetTiltX(0.5);//SetTiltY(0.5);

力している場合には 10 倍あるいは負のステップとなるようにしてある．現在の高さにステップ値を加え， EMSetStageZ()で高さを変更する．x, y 方向への傾斜についても現在の傾斜角度を取得し，ステップ値を加えるという方針は同様であり， EMGetStageAlpha() , EMSetStageBeta()を用いることで実行できる． main 以降が実際に実行されるコマンドとなり，この場合，ステージ Z が 10 mm 動くことになる( Alt / Shift キーを入力した場合は挙動が異なる)．ステージステップを変更するには， SetStageZ ( x )の引数を入力し直す必要がある．これを避けるには図に示すようなグラ
フィカルユーザーインターフェイス(GUI)も有効である．図1 のようなフロートウィンドウは TagGroup を用いることにより容易に作成が可能である．プルダウンメニューや数値入力領域を設けることでマウスだけでステージのコントロールが実施可能になる．


TagGroup による実験条件の管理

DM で取得したデータは Tag で管理されている．例えばCCD 画像の詳細な実験条件は画像上で右クリックし，/ ImageDisplay…/Image / Tags/の下に表示される．例えば，露光時間を知りたければ，/ DataBar / Exposure Time ( s ) : /に記述してある．この露光時間の数値をスクリプト中に組み込むにはどのようにしたら良いだろうかこれは TagGroup

コンピュータは複数のプログラムを並列して実行するために，各スレッドにプロセスを割り当てる．しかし，DM スククラスで管理されている．以下のスクリプトを参考に CCD
画像の実験条件値を取得して頂きたい．

リプトは他のプロセスを中断してスクリプトを優先実行しようとする．これを避けるには，冒頭にコメントアウトされた// $BACKGROUND を記述する必要がある( CCD で見ながらステージを動かすなど)．他のインタプリタ型言語とはやや異なり，使用する変数の型を宣言する必要がある．DM

ま て り あ 第57巻 第12号(2018)Materia Japan

number exposure;image img := GetFrontImage( );TagGroup tg = img.ImageGetTagGroup( );tg.TagGroupGetTagAsNumber(ÄDataBar:Exposure Time(s)Ä, exposure);
result(ÄExposure time (s): Ä + exposure + ÄÀnÄ);number expo, sx, sy, count, current; //expo in sec

DM スクリプトで生成される変数は基本的にオブジェクトである．したがって，各クラスのメソッドを呼び出すことができる．クラスには多くのメソッドが組み込まれているので，スクリプトを編集する前に各クラスにどのようなメソッドがあるかを良く参照すべきである．あるクラスに属してい// assign CCD image
image img := GetFrontImage( );img.GetSize(sx, sy);
TagGroup tg = img.ImageGetTagGroup( );tg.TagGroupGetTagAsNumber(ÄDataBar:Exposure Time(s)Ä, expo);

るオブジェクト( obj )のメソッド( method )を呼び出すにはobj.method (x, y, ...)or method( obj, x, y, ...)のように記述する．CCD 画像の Tag を取得するには上記のスクリプト中に
あ る よ う に TagGroup tg ＝ img.ImageGetTagGroup ()のように記述する． tg を生成することですべての Tag にアクセス可能となり，露光時間はその次の行の DataBar: Exopsure Time ( s )を指定することで取得できる．この際に，スペ ー ス も 正 し く 入 力 す る 必 要 が あ る ． 逆 に ， TagGroupSetAsNumber(TagGroup tg, String tagPath, Number num)

while (!ShiftDown( )) ｛count = Sum(img[0,0,0,sx,sy,1];
current = count*e/(coeff*expo);
OpenAndSetProgressWindow(current+ Ä pAÄ, ÄÄ,ÄÄ);delay(100);}
result(Ä··· Program ended ÀnÄ);メソッドを用いることで必要な実験条件を直接画像に書き込むことができる．その場観察などの実験ではノートに必要な較正により得られた電子一つに対するの CCD カウント数

コメント等を書き込む時間が取れないケースがある．予めスを coeff と す る ． 我 々 の ARM300CF で は 300 kV で のクリプトを準備しておけば，実験条件やコメントを Tag にOrius カメラの coeff はおよそ 2 程度である(80 kV ではおよ書き込めるため，後の解析で役に立つことが多い．また，取そ 6 程 度 )． CCD 画像 のサ イ ズお よ び露 光時 間 を( sx, sy,得した実験像についても毎度手動で保存するのではなく，スexpo)に読み込む．while 中では，まず，CCD 画像全体のカクリプトで番号やコメントを付け自動で保存を行っていくこ

ウントを取得する．次に露光時間や電荷素量を用いて電流量とも比較的容易に行える．

( pA )に変換する． Output に出力しても良いが，ここでは

ビーム電流量のリアルタイム計測装置がどんなに改善されても電顕観察では試料ダメージとProgress ( メ ニ ュ ー  / Window / Floating Windows /Progress)を用いる．Progress は 3 つの値を更新して表示することができる．露光時間も表示したい場合は， OpenAn-の戦いが常である．加速電圧の選択や冷却などが一般に有効

dSetProgressWindow ( current ＋“ pA ”, expo ＋“ s ”,“な方法であるが，電流量も重要なパラメータである．冷陰極すれば良い．露光時間を頻繁に変更する場合は露光時間を取電子銃では時間とともに電流量が変化するため，常にモニタ得する部分を while 中に組み込むと良い．これらの演算はミーすることが好ましい．以下にこれまでのスクリプトよりもリ秒程度で行われ更新が早すぎるため，ここでは delay を用
実効性の高いリアルタイムの電流計測を示す．ここでは，いて表示を遅らせている．更新を遅らせる代わりに平均など


電流量を何らかの方法で計測できる環境にあること，を取るのも良い．ループを抜ける条件に !ShiftDown (Ronchigram を観察するための CCD が付属していることを用いている．これは Shift キーが長押しされるとスクリプト前提とする．Faraday cup を用いた電流量の計測方法が一般が終了するようになっている(終了条件が外部から制御でき”)と)を的であるが，付属していない場合には EELS 分光器でも計なければプログラムは走り続けることになる)．また，行頭測可能である．スペクトロメータの調整加速電圧をゼロあるに// $BACKGROUND を記述しなければ他のプロセスが止

いは数 10 kV に設定すると，金属ドリフトチューブ内に電まってしまうことにも注意すべきである．プログラムを実行

子が閉じ込められ，電流計を介して計測できる(2)．この際にし， CCD でダイレクトビームを観察するとリアルタイムで小さな EELS のアパチャーを選択し(理想的な Faraday cup

電流量が計測できていることを確認して頂きたい．ここではに近づけるため)，カメラ長を短く設定する．電流量が既知

coeff を求めるプログラムを掲載していないが，電流量を計となれば，真空中でダイレクトビーム像を取得し CCD の較測した直後にダイレクトビーム像を CCD で取得すれば，正ができる．以下にスクリプト例を示す．

current を取得する行の計算式を用いれば coeff が求められるので各自で作成頂きたい(current (pA), count, expo (sec)//$BACKGROUND$は既知)．なお，計測前には CCD のゲイン調整を行うことを勧める．

number coeff = 1.89; // 300 kV
number e = 1.602e„7; //elementary charge in picoCoulombプログラム作成時の心構え

どのような場合にプログラムを書くべきであろうか筆者

特集

は 5 回以上繰り返す作業がある場合にはスクリプトを準備が低いため，単一フレームの像質は悪い．しかし，図 2( b)することを勧める(3)．また，手動による調整では不確定要素に示すように，ドリフト補正後に 20 フレームを積算するこが多い場合にもプログラムを利用するとよい．上述のようとで像質が改善される．さらに，単一フレームには 15 単位に，数行から100行程度で概ねのことは自動化ができるのが，DM スクリプトの良い点である．ただし，スクリプトがそれよりも長くなるようであれば，論理構成に問題がある場合も多いので再考の余地がある．また，スクリプトの更新を想定してコメントをできるだけ多く残しておくことも重要である．実験中はすべてのことに気を配ることが難しくなる場合が多いため，ここではスクリプトを紹介しなかったが，図 1のような GUI を作って動作させることも時に重要である(プログラムがやや肥大化することは避けられない)．また，再利用を考えると関数に加えてクラスを作成しておくのも長い目で見れば極めて有効な方法である(DM スクリプトは独自クラスもサポートしている)．以上，簡単な編集および実行方法について述べたが，最後に DM スクリプトの特徴を簡単にまとめる．
 DM は C ＋ ＋ で 開 発 さ れ て お り ， ス ク リ プ ト の 文 法 もC＋＋と類似した体系が引き継がれている．

インタプリタ型言語なので，ヘッダ部分やコンパイルが不要であり，直ちに実行できる．またルーズに記述しても概ね動作する(バグは侵入しやすい)．
スクリプトエディタしかないため， IDE などの統合環境はなく，デバッグなどの機能も弱い．大きなプログラムを作成する際にはメソッドごとに問題がないことを手動

図2a Si3N4 の [ 0001 ] 入 射 か ら 得 ら れ た 環 状 暗 視 野 像( ARM300CF ， 収 束 半 角  24 mrad ， 加 速 電 圧  300
kV )．( a ) 単一フレーム，( b ) 20 フレーム積算像，( c )15 単位胞の積算像( d) 構造モデル(青ケイ素，淡青窒素)．スケールは 2 Å．

図3(a ) 16分割型検出器の配列， SrTiO3[ 001 ]入射から得られた( b ) 環状暗視野像，( c ) 電場強度像，( d) 電場方向像．スケールは 2 Å．

で確認する必要がある．
上から順に行単位に処理を行っていくため，メソッドを下方に記述すると実行されない．
コンパイルしないため，実行速度が 103 ― 105 倍は遅い．
重い演算を実施したい場合には高度な知識が必要となるが，C＋＋でプログラムを編成しコンパイルしてプラグインとして準備する．

.

簡単な画像の解析

電子顕微鏡の制御だけでなく画像解析についても DM ス
クリプトは強力である．ドリフトを抑制しつつ像の信号ノイズ比を向上させる方法として高速走査で多数の像を同一領域から取得する手法が一般に普及しつつある(2)．DM スクリプ
トは DigiScan へのアクセスを支援しており，多数像を自動で取得できる．さらに，フーリエ変換に関連した演算も組み込まれており，自動取得した画像間の cross correlation から試料ドリフトを補正し積算することで SNR の向上が見込める．2 つの画像 A, B がある場合，これらの crosscorrelation 像は，“image C＝crosscorrelation(A, B); showImage(C);”だけで計算でき，最大値あるいはフィッティングによりドリフト量を計測できる( A, B などは画像のタイトル左上に表示されている)．この手法を DM スクリプトに実装・解析した結果を示す．図( a )は a Si3N4 の[ 001 ]入射から得られた環状暗視野像(ADFSTEM)である．電子ドーズ量

ま て り あ 第57巻 第12号(2018)Materia Japan

胞が含まれていたので，これらを積算した図 2( c )では，ケ

トに関する情報や解説は web 上で散見されるので，そちらイ素に加え，窒素原子サイトまで明瞭に観察されていることも参考にして頂きたい(10) ． GSM 2.1 以降では， DM のヘルが分かる．試料ドリフトが酷い場合には，上記のような剛体プ(F1, Scripting のセクション)にも多くのスクリプト例が変位に加え，非剛体変位を用いることでドリフトによる原子記載されており，参考にして頂きたい．顕微鏡の操作につい像の歪みの補正も可能である(4)(5)．ては DM スクリプトが優れているが，画像解析については従来の環状型検出器に加え，分割型あるいはピクセル型の必ずしも DM スクリプトだけで完結する必要はなく，目的検出器を用いた電磁場観察や位相回復が浸透しつつある(6)．に応じて例えば Python, MatLab, ImageJ なども相補的に組各位置から電子回折図形を取得する 4D STEM 法では，デみ合わせて行っていくことが望ましい．以上，簡単ではあるータ量が多く，目的とする物理量の抽出には画像処理が重要

が，DM スクリプトを使ってみたいが実践には至らなかったな役割を果たす．ここでは，図(a)に示す16分割型検出器方々に少しでもお役に立てれば幸いである．

から得られた像から電場強度像および電場方向像の解析例を示す(7) ．データ・セットとして 16 種類の原子像が得られる

本稿で紹介した研究は，日本学術振興会の科研費が，各検出器の重心位置による重み付けにより，x, y 方向に(17H01316，17K18974)，特別推進研究(JP17H06094)，ナ対する重心像が得られる．

ノテクノロジープラットフォーム事業( 12024046 )およびICoM, x(R)＝∑j{kx}CoM, jIj(R).

(1)

JST 先端計測による助成のもと遂行されました．また a 

ここで， kxx は x 方向の検出器 j の重心， Ij ( R )は検出器 j でSi3N4 は R. Riedel 教授(ダルムシュタット工科大学)との共取得した像である．y 方向についても同様に行い，最終的な同研究であり， SrTiO3 の原子電場観察は関岳人博士， G.

電 場 強 度 像 は I 2CoM, x ＋ I 2CoM, y に 比 例 し た 形 式 で 計 算 で きS áanchez Santolino 博士(東京大学)， S. D. Findlay 博士(モる(8) ． DM スクリプトでは画像の各配列に対しての演算をナッシュ大学)との共同研究として遂行されました．ここにfor ループで計算する必要がなく(スクリプト上で)，ピクセ感謝を申し上げます．

ル間の演算を極めて容易に記述することができる．分割型検文出器の左と右(x 方向の場合)の差分が微分に相当するため，例えば第 2 環検出器の 5, 6, 7, 8 から得られた像を A, B, C, Dとすると電場強度に比例した像は次のように計算できる．

number kx, ky; //各自で入力してください．
image xcom = kx*((A + B) „ (C + D))/(A + B + C + D);
image ycom = ky*((B + C) „ (D + A))/(A + B + C + D);
image EFS = SQRT(xcom**2 + ycom**2);
showImage(EFS);
実際にはすべての検出器に対して行い，重み付けと偏向量を電場量に変換する定数を考慮すると電場強度像へと変換できる．図 3(b )( d)に SrTiO3[ 001]入射から得られた環状暗視野像，電場強度像，電場方向像を示す．場はベクトルであり電場方向を表現するために，図 3(d )の左下に示す参照カラーホイールを用いて電場方向を表示した．これらの像につい献( 1 ) http://www.gatan.com/( 2 ) R. Ishikawa, A. R. Lupini, S. D. Findlay and S. J. Pennycook:
Microsco. Microanal., 20(2014), 99.
( 3 ) S. Oualline: O'Reilly & Associates, Inc., (1997).
( 4 ) A. B. Yankovich, B. Berkels, W. Dahmen, P. Binev, S. I.
Sanchez, S. A. Bradley, A. Li, I. Szlufarska and P. M. Voyles:
Nat. Commun., 5(2014), 4155.
( 5 ) L. Jones, H. Yang, T. J. Pennycook, M. S. J. Marshall, S. VanAert, N. D. Browning, M. R. Castell and P. D. Nellist:
Advanced Structural and Chemical Imaging, 1(2015), 8.
( 6 ) N. Shibata, S. D. Findlay, Y. Kohno, H. Sawada, Y. Kondo andY. Ikuhara: Nat. Phys., 8(2012), 611.
( 7 ) N. Shibata, T. Seki, G. S. Santolino, S. D. Findlay, Y. Kohno,T. Matsumoto, R. Ishikawa and Y. Ikuhara: Nat. Commun. 8(2017), 15631.
( 8 ) R. Close, Z. Chen, N. Shibata and S. D. Findlay: Ultramicroscopy, 159(2015), 124.
( 9 ) R. Ishikawa, S. D. Findlay, T. Seki, G. S áanchezSantolino, Y.
Kohno, Y. Ikuhara and N. Shibata: Nat. Commun., 9(2018),3878.
(10) http://www.dmscripting.com/ても信号ノイズ比を向上させるために， 16 種類の像を複数フレーム取得し，ドリフト補正をすべての像に対して行い，★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ともできる．本手法を適応することで信号ノイズ比が改善さ石川 亮
2011年 3 月 東京大学工学系研究科博士課程終了
2011年 4 月 東京大学総合研究機構 博士研究員
2012年10月 日本学術振興会海外博士研究員(米国オークリッジ国立研究所)
2014年 4 月 現職
専門分野電子顕微鏡，機能性セラミックス◎先端電子顕微鏡法を用いた点欠陥などの局所構造解析に従事．

れ，グラフェンなどの散乱強度の弱い材料の原子電場観察も★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

さらに単位胞の平均化を行っている．これらの画像処理はDM スクリプトで作成できるため，実験中に像質を確認でき，実験終了後の解析で実験のやり直しなどの手間を防ぐこ可能になりつつある(9)．

.

お わりに

本稿では DM スクリプト( GMS 2.3 )による簡単な電子顕微鏡の制御および画像解析について紹介した．DM スクリプ



石川亮

田中利空

柴田直哉

幾原雄一

特集