コンピュータの構成要素について

「コンピュータを構成する5つの機能」

コンピュータは、入力記憶制御演算出力の5つの機能を実現する装置から構成されています。人間の脳に相当するものとして中央処理装置CPU)があります。CPUは計算を行う演算装置と、各装置への動作指示や制御を行う制御装置から構成されています。また、主記憶装置メインメモリとも呼ばれ、脳の中にある情報を記憶する部分に相当します。記憶しきれない情報は、ハードディスクやCD、DVD、USBメモリなどの補助記憶装置に記録します。また、マウスやキーボードを入力装置、ディスプレイやプリンタを出力装置と呼びます。

「命令実行の仕組み」

磁気ディスク装置などの補助記憶装置に記憶されているプログラムを実行するためには、あらかじめプログラムを主記憶装置に読み込む必要があります。プログラムを主記憶装置に読み込むことをロードといい、プログラムが主記憶装置にロードされると、コンピュータはそのプログラムを実行する準備をしたのち、プログラムの実行を開始します。

具体的にはプログラムを主記憶装置のどこに読み込んだのかをロードしたプログラムの先頭番地を保持するベースレジスタ(基底レジスタ)に設定し、また、プログラムのどこから実行するのかを実行する命令の番地を保持するプログラムカウンタ(命令アドレスレジスタ)に設定します。レジスタとはCPU内部にある高速アクセスができる記憶装置のことです。

1つ1つの命令はどのような処理をするかを示した命令部(オペレーション部)と、その処理の対象となるデータやデータの記憶場所を示すオぺランド部(アドレス部)から構成されていて、コンピュータが直接理解して実行できる形式になっています。

主記憶にロードされたプログラムの一つ一つの命令は中央処理装置(CPU)で実行されます。CPUではロードされたプログラムを1つずつ「取り出し(命令フィッチ)→解読→実行」というサイクルを繰り返します。

「メモリシステムの仕組み」

磁気ディスク装置などの補助記憶装置に記憶されているプログラムやデータは主記憶に読み込まれ、CPUで主記憶から順に取り出して実行しています。ここで問題となるのはCPUの性能と主記憶、補助記憶装置へのアクセス速度の差です。いくらCPUの性能が高くても、主記憶装置や補助記憶装置へのアクセス速度が遅ければ、処理の高速化は期待できず、コンピュータ全体の性能を落としてしまいます。これらの装置間の動作速度の違いを埋めるのが、レジスタキャッシュメモリディスクキャッシュといった記憶装置です。

メモリシステム

  • レジスタ
    CPU内にある高速アクセスができる記憶装置。プログラム実行中に何度も繰り返し使うデータは、いちいち主記憶にアクセスすると効率が悪いのでレジスタに記憶して処理の高速化を図る。
  • キャッシュメモリ
    CPUと主記憶の間におかれ、CPUの処理速度と主記憶へのアクセス速度の差を埋める。CPUがこれからアクセスすると予想されるデータやプログラムの一部をキャッシュメモリにコピーしておき処理の高速化を図る。
  • ディスクキャッシュ
    主記憶とディスクキャッシュの間におかれ両者のアクセス速度の差を埋めるもの。

キャッシュメモリにあるのはこれからCPUが必要になると予想されるデータであって、ない場合は主記憶から読み込むことになります。CPUが必要とするデータがキャッシュメモリにある確立をヒット率といい、ヒット率が高いほど処理の高速化を図れます。たとえば主記憶のアクセス時間が70nsでキャッシュメモリのアクセス時間が10nsだとします。キャッシュメモリのヒット率が90%だった場合アクセス時間の平均は、

$$(10+10+10+10+10+10+10+10+10+70)\div10=16$$[ナノ秒]

となり、主記憶のアクセス時間よりも短くなります。このアクセス時間の平均を実行アクセス時間(平均メモリアクセス時間)といいます。

「磁気ディスク装置の仕組み」

磁気ディスク装置は、磁性体を塗った円盤状のディスクを一定の間隔で何枚も重ね合わせた構造となっています。中心が同じで半径が同じ同心円状の領域をそれぞれトラックと呼び、さらにトラックを分割したものをセクタといいます。また、トラックの集合をシリンダと呼びます。

磁気ディスク装置から目的のデータを読み込む動作は、①磁気ヘッドをデータが存在する位置まで移動させる→②磁気ヘッドの位置にデータが来るまでディスクを回転させる。→データを読み込む。の3ステップに分けることができます。それぞれにかかる時間を位置決め時間(シーク時間)、回転待ち時間(サーチ時間)、データ転送時間と呼びます。平均回転待ち時間はディスクが一回転する時間の半分です。位置決め時間、回転待ち時間、データ転送時間を合わせたものをアクセス時間とよび、そこからデータ転送時間を引いたものを待ち時間と呼びます。

「コンピュータシステムの構成要素」

コンピュータシステムを低コストで効率よく利用するために、種々のシステム構成要素が採用されています。負荷分散を図るためのクライアントサーバシステム、信頼性の向上を目的としたデュアルシステムデュプレックスシステムなどが該当します。

クライアントサーバシステムCSS)はネットワークを利用して分散処理を行うコンピュータシステムの携帯で、システムの構成を示すものです。CSSはクライアントおよびサーバから構成されています。クライアントはサーバに対してサービスを要求し、サーバが行ったデータ処理(ファイル管理、データベース管理など)の結果を受け取り結果表示などを行います。クライアントとサーバが処理をそれぞれ分散して行うことで処理の負荷分散を図ることができます。

デュアルシステムは2つのCPUで同じ処理を行い、互いの処理結果を照合しながら処理を行うシステムです。コストはかかりますが、信頼性の高い方法です。いずれかが故障した場合は以上の発生した側のシステムを切り離し、残る片方だけで処理を継続することができます。

デュプレックスシステムは2つのCPUを用意する点ではデュアルシステムと同じですが、正常運転中は片方を待機状態にしておきます。主計をオンライン処理(リアルタイム処理)用、副系を優先順位の低いバッチ処理(データを蓄積しておき一括して処理を行う)などに利用します。切り替え時間はおよそ数十分から数時間と言われています。

「OSの構成と目的」

 オペレーティングシステムの定義は明確ではありませんが、基本ソフトウェアを広義のOS、制御プログラムを狭義のOSということがあります。OSはコンピュタを取り巻く諸資源の遊休や無駄をなくし、コンピュータシステムを効率よく運用することでシステム全体の生産性を向上させます。次にOSの目的を整理します。

ハードウェア資源の有効利用
多重プログラミング(マルチプログラミング、1台のCPUでプログラムを交互に処理)、スプール機能(高速な磁気ディスクなどを仮想的な出力装置として使うこと)など。

多様な処理形態への対応
バッチ処理、オンライン処理など、

信頼性と安全性の確保
信頼性と安全性の指標RASISの向上。信用性、可用性、保守性、保全性、機密性

応用ソフトフェアの負荷軽減
仮想記憶(見かけ上の主記憶の容量を拡大する技術。補助記憶を用いることが多い)、ライブラリ管理(複数のプログラムを体系的に蓄積する機能)など

コンピュータ操作と運用の支援
連続処理、運用データの記憶など

狭義のOSである制御プログラムの役割の一つにジョブ管理があります。ジョブ管理は仕事の優先順位の決定や、ジョブの同期処理を行います。ジョブ管理の流れには、リーダ→イニシエータ→ターミネータ→ライタなどがありますが、その中にスプーリングがあります。スプーリングはプリンタなどの低速な装置とのデータのやり取りを、高速な磁気ディスクを介して行うことで、処理効率を高める方法のことです。

もう一つ狭義のOSである制御プログラムの役割の一つにタスク管理があります。タスク管理はプログラムの実行を制御する機能で、プログラムの同期制御、プログラム実行のための資源の動的割り当てや各種の割込み制御も行います。タスクとはOSの下で実行される内部処理の単位のことを言います。

「開発ツール」

コンパイラは原始プログラム(ソースコード)を機械語に翻訳する言語プロセッサの一つで、次の手順で機械語に翻訳します。

  1. 字句解析: ソースコードを変数やトークンに分割
  2. 構文解析: 言語の構文に従って、プログラムを解析
  3. 意味解析: プログラムに意味的な誤りがないか検証
  4. コード生成: 機械語レベルのコードを生成
  5. 最適化: 目的プログラムの無駄な部分を削除

機械語に翻訳された目的プログラム連係編集プログラムリンカ)によって目的プログラム同士を結合させます。プログラムを実行するに当たっては、実行したいプログラムを主記憶もしくは補助記憶装置に格納させる必要がります。この役割を果たすのがローダです。ローダによって主記憶に格納されたらコンピュータはロードモジュールから位置命令ずつ取り出して解釈し、実行します。

[過去問1]

コンピュータの命令実行順序として、適切なものはどれか?(FE-H18-S-18)

ア. オペランド読み出し→命令の解読→命令フィッチ→命令の実行
イ. オペランド読み出し→命令フィッチ→命令の解読→命令の実行
ウ. 命令の解読→命令フィッチ→オペランド読み出し→命令の実行
エ. 命令フィッチ→命令の解読→オペランド読み出し→命令の実行

正解 「
命令フィッチとは命令の取り出しのこと。またオペランド読み出しは命令の対象となるレジスタや値などの読み出しのことを意味する。

[過去問2]

主記憶のアクセス時間60ナノ秒、キャッシュメモリのアクセス時間10ナノ秒のシステムがある。キャッシュメモリを介して主記憶にアクセスする場合の実行アクセス時間が15ナノ秒である時、キャッシュメモリのヒット率は幾らか?(FE-H19-S-20)

ア. 0.1   イ. 0.17   ウ. 0.83   エ. 0.9

正解「
キャッシュヒット率はデータがキャッシュにある確率です。ここでキャッシュのヒット率をHとすると次の式が成立します。15=10×H+(1-H)×60 この式を解くと H=0.9となります。

[過去問3]

メモリインタリーブの説明として、適切なものはどれか?(FE-H21-A-10)

ア. CPUから主記憶へのアクセスを高速化するために、キャッシュメモリと主記憶との両方に
同時にデータを書き込む。
イ. CPUから主記憶へのアクセスを高速化するために、主記憶内部を複数のバンクに分割
し、各バンクを並列にアクセスする。
ウ. CPUと主記憶のアクセス速度の違いによるボトルネックを解消するために、高速かつ小
容量のメモリを配置する。
エ. パイプライン処理を乱すことなくするために、キャッシュメモリを命令用とデータ用の2つに分
割する。

正解「
「ア」はライトスルーというデータの書き込み方の説明です。高速化は望めませんがデータ整合性が保たれます。「ウ」はメモリキャッシュの説明になります。

[過去問4]

RAID1~5の各構成は、何に基づいて区別されるか?

ア. 構成する磁気ディスク装置のアクセス性能
イ. コンピュータ本体とのインターフェースの違い
ウ. データおよび冗長ビットの記憶方法と記憶位置の違い
エ. 保障する信頼性のMTBF値

正解「
RAIDは複数のハードディスクを組み合わせて一つのハードディスクとして扱うことで、速度や信頼性を向上させます。

[過去問5]

CASEツールが提供する機能のうち、上流CASEツールに属するものはどれか?

ア. DFD作成支援          イ. テストデータの作成支援
ウ. プログラムの自動生成     エ. ライブラリの管理支援

正解「
イ、ウは下流CASEツールに属するものです。エは、共通CASEが提供する機能になります。上流CASEが設計行程、下流CASEが開発工程となります。DFDとはデータの流れとプロセスの流れを整理する技法のことです。

[過去問6]

RS-232Cの特徴に関する記述のうち,適切なものはどれか。

ア. パラレルインターフェースである。
イ. 通信可能な最高速度は,19,200ビット/秒である。
ウ. デイジーチェーン接続が可能である。
エ. 全二重の双方向通信を行うことができる。

正解「
RS-232Cは,パソコンとモデムやマウスなどの機器を接続するシリアルインタフェースです。規格上の通信速度の上限は19.2kbps(19.2kビット/秒)ですが,ほとんどのパソコンで115.2kbpsで通信ができます。最大転送距離は15m,全二重・半二重,同期・非同期いずれにも対応します。

 [過去問7]

仮想記憶システムにおいて,ページ置換えアルゴリズムとしてFIFOを採用して,仮想ページ参照列1,4,2,4,1,3を3ページ枠の実記憶に割り当てて処理を行った。表の割当てステップ“3”までは,仮想ページ参照列中の最初の1,4,2をそれぞれ実記憶に割り当てた直後の実記憶ページの状態を示している。残りをすべて参照した直後の実記憶ページの状態を示す太枠部分に該当するものはどれか。

kj3000-18a-27-01

ア. 1 3 4  イ. 2 3 4  ウ. 3 4 2  エ. 4 1 3

正解「
FIFO(FirstInFirstOut:先入先出)は,ページフォールトが発生したとき,最も古くからあるページをページアウトするページ置換えアルゴリズムです。したがって,下図の手順で処理を行うと残りをすべて参照した直後の実記憶ページの状態を示す太枠部分に該当します。

kj3000-18a-27-06

 [過去問8]

仮想記憶方式の一つに,仮想アドレス空間を固定長の領域に分割して管理するものがある。この固定長の領域を示す用語はどれか。

ア. セグメント  イ. フレーム  ウ. セクタ  エ. ページ

正解「
セクタは,フロッピーディスクや磁気ディスク,ハードディスクにおいて,トラックを均等に分割した円弧の部分。固定長ですが,仮想記憶とは関係ありません。セグメントは,プログラムの自立している部分であって,必ずしもそのプログラム全体が主記憶上になくても実行できる単位。例えば,内部サブルーチンが該当します。内部サブルーチンだから,サイズが一定とは限りません。フレームは,通信上の伝送単位を指すことが一般的です。通信方式によって,種々のサイズがあり,必ずしも固定長ではありません。また,仮想記憶とは関係ありません。ページは,プログラムを一定量のサイズに分割した単位です。仮想記憶ではページ単位に仮想記憶と主記憶の間で入れ替えが行われます。

 [過去問9]

システムが単位時間内にジョブを処理する能力の評価尺度はどれか。

ア. ターンアラウンドタイム  イ. スループット  ウ. MIPS値  エ. 応答時間

正解「
ターンアラウンドタイムは,ジョブを依頼してから完全な出力を得るまでの時間間隔。MIPSは,1秒間に実行できる命令の数を百万(106)の単位で示したものでハードウェアの性能指標の1つです。応答時間(レスポンスタイム)は,データを送信してから処理結果が返ってくるまでの時間間隔です。オンラインシステムの特性指標の1つです。

 [過去問10]

処理装置を構成する要素のうち,分岐命令の実行によって更新されるものはどれか。

ア. 命令レジスタ  イ. プログラムレジスタ  ウ. 汎用レジスタ エ. インデックスレジスタ

正解「
命令レジスタは,主記憶から取り出された命令を,解読するために,一時的に命令を格納するレジスタです。プログラムレジスタは,次に実行する命令のアドレスを格納するレジスタです。通常は,現在実行中の命令の次の命令(現在アドレス+命令語長)を指しているが,分岐命令であると,処理結果によって,分岐先のアドレスを格納します。汎用レジスタは,種々の目的に汎用的に使用するレジスタです。インデックスレジスタは,アドレス修飾を行うときに使用するレジスタです。

 [過去問11]

入出力インタフェースに関する記述のうち,適切なものはどれか。

ア. USBは,高速な周辺装置と低速な周辺装置向けの二つの転送モードをもち,一般にプリンタやスキャナ,モデムなどは高速モードで利用する。
イ. ATA/ATAPI-4(通常,IDEと呼ばれている)は,データを1ビットずつ直列(シリアル)に転送するインタフェースであり,モデムやマウスなどを接続するために用いる。
ウ. セントロニクスは,赤外線通信の規格として,ノート型パソコンや携帯情報端末でのデータ交換やプリンタへの印刷データ送信などに使う。
エ. RS-232Cは,8ビットのデータを並列(パラレル)に転送するインタフェースであり,プリンタを接続するために用いられることが多い。

正解「
USBは,パソコンと周辺機器を接続するシリアルインタフェースです。データ転送速度には12Mビット/秒のフルスピードモードと1.5Mbpsのロースピードモードがある。フルスピードモードでは比較的高速なプリンタやスキャナ,ロースピードモードでは比較的低速なキーボードやマウスを接続します。ATA/ATAPI-4(IDE)は,ハードディスクやCD-ROMを接続するパラレルインタフェースです。セントロニクスは,パソコンとプリンタを接続する8ビットのパラレルインタフェースです。赤外線通信の規格には,IrDAがあります。RS-232Cはシリアルインタフェースであり,主にモデムを接続するインタフェース規格です。

 [過去問12]

タスク管理の役割として,適切なものはどれか。

ア. 仮想記憶空間を提供し,実記憶を有効に利用する。
イ. マルチプログラミングの制御を行い,CPUを有効に利用する。
ウ. 各種の補助記憶装置へのアクセス手段を,装置に依存しない形態で提供し,応用プログラム作成の負担を軽減する。
エ. 入出力装置の制御を行い,正確かつ効率良く入出力装置を動作させる。

正解「
アは記憶管理の役割、ウはデータ管理、エは入出力管理の役割です。

 [過去問13]

1つの命令で複数のデータに対して同じ処理を並列に行うので、マルチメディア系の処理に適しているのはどれか。

ア. MIMD  イ. SIMD  ウ. SISD エ. MISD

正解「
MIMD(複数命令、複数データ処理)は複数の独立した命令が異なるデータを処理するコンピュータです。並列処理とパイプライン制御が可能なマルチプロセッサシステムが該当します。SIMDは、1つの命令で複数のデータを同時処理するコンピュータです。ベクトルプロセッサ(アレイプロセッサ)など、並列処理が可能なコンピュータが該当します。SISDは、遂次処理のコンピュータです。ノイマン型コンピュータが該当します。MISDは、1つのデータを複数の命令が同時に処理するコンピュータです。パイプライン制御を行うコンピュータが該当します。

 [過去問14]

CD-Rのデータ記録方法として,適切なものはどれか。

ア. ディスクに塗布した磁性体の磁化の方向を,磁気ヘッドによって変化させて記録する。
イ. 磁化されているディスクの記録膜にレーザ光を当てて熱し,磁気ヘッドで磁化の方向を変化させて記録する。
ウ. 有機色素が塗られたディスクにレーザ光を当て,有機色素の層にピットと呼ばれる焦げ跡を作って記録する。
エ. ディスクをはり合わせた2層構造をもち,レーザ光で記録層を相変化させて記録する。

正解「ウ」
CD-Rは,約700Mバイトの記憶容量を持ち、データを一度だけ書き込めるCDです。一度書き込んだデータは消去できませんが,追記はできます。記録面に金色や青緑色の有機色素が塗布されており,これにレーザ光を照射して色素を焦がしデータを記録します。焦げ目がCDのピット(微小な凹凸)に相当します。一方,表面にレーザ光を照射して反射光を読み取ることでデータを読み取ります。比較的安価な媒体なので,個人レベルで音楽の編集やバックアップ媒体として使われています。

 [過去問15]

ページ置換えアルゴリズムにおけるLRU方式の説明として,適切なものはどれか。

ア. 一番古くから存在するページを置き換える方式
イ. 参照回数の最も少ないページを置き換える方式
ウ. 最後に参照されてからの経過時間が最も長いページを置き換える方式
エ. 最後に参照されたページを置き換える方式

正解「
LRU(Least Recentry Used)は,最も長い間参照されていないページを追い出すページ置換アルゴリズムです。アはFIFO(First In First Out:先入れ先出し)の説明です。イはLFU(Least Frequently Used)の説明です。エはLIFO(Last In First Out:後入れ先出し)の説明です。

 [過去問16]

命令の構成に関する記述のうち,適切なものはどれか。

ア. 命令は,命令コードとオペランドで構成される。ただし,命令の種類によっては,オペランドがないものもある。
イ. 命令語長が長いコンピュータほど,命令の種類も多くなる。
ウ. オペランドの個数は,その命令で指定する主記憶の番地の個数と等しい。
エ. コンピュータの種類によって命令語の長さは異なるが,一つのコンピュータでは,命令語の長さは必ず一定である。

正解「イ」
命令コードは動作を指定し,オペランドは処理対象データの番地を指します。オペランドは,ベースレジスタ番号,インデックスレジスタ番号,主記憶装置のアドレスなどから構成されます。0アドレス方式では,演算はスタックの先頭と次のデータとの間で行うため,オペランドを指定しません。

 [過去問17]

プログラムの動作過程を実行順にモニタリングするデバッギングツールはどれか。

ア. プリティプリンタ  イ. インスペクタ  ウ. クロスリファレンス エ. トレーサ

正解「エ」
プリティプリンタは,ソースプログラムの字下げなど,整形を行うツールです。インスペクタは,会話型のテストツールです。プログラム実行途中におけるデータの強制変更,内容参照などを行います。クロスリファレンス(相互参照)は,プログラム中に現れる変数や定数,記号などを定義しているプログラム中の行番号と,それらを参照している文の行番号を一覧表にしたものです。コンパイラなどの言語プロセッサがもつ機能です。トレーサは,プログラムで実行した文(命令)などを実行順に印刷するなど,動作過程を時系列的にモニタするテストツールです。

 [過去問18]

三つのタスクの優先度,各タスクを単体で実行した場合の処理装置(CPU)と入出力装置(I/O)の占有時間は,表のとおりである。優先順位方式のタスクスケジューリングを行うOSのもとで,三つのタスクが同時に実行可能状態になってから,タスクCが終了するまでの間に,タスクCが実行可能状態にある時間は延べ何ミリ秒か。ここで,各タスクの入出力は並行して処理が可能であり,OSのオーバヘッドは無視できるものとする。

FEdf

ア. 5  イ. 2   ウ. 8 エ. 11

正解「
優先順位方式のスケジューリングでは,現在実行中のタスクよりも優先度の高いタスクが投入されると,現在実行中のタスクはプリエンプションされ,投入されたタスクが実行されます。三つのタスクが同時に実行可能状態になったので,最も優先度の高いタスクAが最初に実行状態となります。この前提で各タスクのタイムチャートを作り正解を求めます。

kj3000-12a-32-02

—————————————————-参考文献—————————————————-

「キタミ式イラストIT塾 基本情報技術者, きたみりゅうじ(著)」

「絵で見て覚える基本情報技術者, 大滝みや子(著), SE」

補正アルゴリズムの提案②

概要

補正アルゴリズムの提案①で行った、目印をX線管に貼り付けてブレを検出する方法では、台座上の変動と、焦点の変動の仕方が違うことから(たぶん…)ほとんど画像の精度を向上することができませんでした。補正アルゴリズム②では台座の変動も含めた機器全体の変動を検出するために台座の上に目印を置き、ブレを補正することを考えます。

補正②

予備実験

予備実験としてボールベアリングのボールを被写体として通常撮影(約10分程度の撮影)と長時間撮影(約70分の撮影)を行いその軌跡を調べました。積算回数はどちらも16回となっています。

補正②予備実験

結果を比較すると通常撮影を行った場合、最終的に元の場所に目印が戻ってきたのを確認できたのに対して、長時間撮影を行った場合は軌道が大きくずれていることが分かりました。これが長時間撮影による画質低下の原因になっているブレであると考えることができると思います。

理想的な軌道を求める

幾何学的な計算を行うことで、球体の理想的な軌跡を求めることができるので、その算出を試みました。目印(金属球)の回転中心までの距離rは実際の軌跡のデータから算出して、0.96mmとしています。回転角θが0の時のPの座標を算出すると(-0.96, 1.37, -0.04)となりました。この座標をθ度ずつ回転させた座標をそれぞれ投影していきます。

補正②計算①被写体である金属球を通り、焦点と検出器をつなぐ直線の方程式を求める。

$$\frac{x-y_1}{x_1-b}=\frac{y-y_1}{y_1}=\frac{z-z_1}{z_1}$$

②投影面と交わる点の座標を代入して整理して、投影面の座標を求める。

$$y”_1=y_1(1+\frac{l}{a-x_1})$$

$$z”_1=z_1(1+\frac{l}{a-x_1})$$

③点Pの最初の座標は()でこの座標をY軸を固定してθ度ずつ回転させていきます。そうするとその座標は・・・

$$(x_1,y_2,z_1)=(x_1,y_1,z_1)\left(\begin{array}{ccc}cos\theta\;\;\;0-sin\theta\\0\;\;\;\;\;1\;\;\;\;\;0\\sin\theta\;\;\;0\;\;\;cos\theta\end{array} \right)$$

$$=(x_1cos\theta-z_1sin\theta, y_1, x_1sin\theta+z_1cos\theta)$$

④検出器に投影される座標は

$$(a,y_1(1+\frac{l}{a-x_1}),z_1(1+\frac{l}{a-x_1}))$$

⑤上の式に回転後の座標を代入すると・・・

$$(a,y_1(1+\frac{l}{b-x_1cos\theta+z_1sin\theta}),(x_1sin\theta+z_1cos\theta)(1+\frac{l}{b-x_1cos\theta+z_1sin\theta}))$$

この式が回転後の座標になります。台座上では回転中心からの距離はrで、高さは透視画像から算出しました。rについてはとりあえず1㎜として計算してみました。その結果を示します。

補正②理想

今回求めた結果楕円状の軌跡を算出することができました。rは適当ですが結構実験値と近い結果になりました。ですが、金属球は遠くなったり近くなったりするわけで、ここまできれいになることは考えにくいと思います。ですので計算方法をもう一度考え直してみたいと思います。

実験

被写体には補正アルゴリズム①で使用したものと同じ直径0.4mmのドリルの刃を使用します。目印にはボールペンのボール(直径0.5mm)を使用します。ボールペンのボールは大変苦労しましたが、ラジオペンチと万力を使用してペン先を押しつぶして取り出しました。当初はキャップを作って被写体と目印を同時撮影するつもりでしたが、時間もないので消しゴムの中にボールを埋め込んでドリルに突き刺して被写体を作りました。

IMAG0610

透視撮影を行うと以下のような透視画像が得られます。この透視画像800方向分のデータを使って、ボールの軌跡を調べドリルの刃の撮影中に生じたボケを補正していきたいと思います。

jjj

 金属球の重心の変動を調べてみると下図のような結果になりました。始点と終点で金属球の位置が大きく異なっていることがわかりました。これだけ変動していれば画像のボケも大きくなりそうです。

軌跡

サイノグラムを作成すると以下のようになります。消しゴムの領域が灰色になって表示されています。ファンパラ変換をすると長時間撮影の影響でサイノグラムが上と下でつながっていないのがわかります。ファンパラ変換とはパラレルビームで撮影を行っていると考えて作っていたサイノグラムのデータをファンビームでとったものに変換することだと思います。bugi

この画像を使ってフィルタ補正逆投影法で画像の再構成を行うと以下のようになります。拡大率22倍での撮影ではアーチファクトは出ていますが、画像のボケはあまりはっきり見えませんでした。もう少しぶれている気がしましたが…とりあえずこれらの画像データを使用することにします。bbbbg

ブレの補正

X線点光源ブレのを含む、X線CT装置全体の撮影中に生じる歪みによる画像のボケを補正する為に、まずはサイノグラムをブレの大きさに応じてY方向、Z方向に線形に移動させてみました。実験結果より最終的なブレはY方向に5.3px、Z方向に6.1pxです。X線点光源のブレの測定実験でも台座の上にのせた被写体は、ほぼ線形に移動していることがわかっているので、Y方向、Z方向にサイノグラムを動かした結果下図右側のようなサイノグラムと再構成画像を得ることができました。

        hoseimae hoseigo

補正前と補正後で比較すると、補正前ではサイノグラムは始めと終わりでつながっていませんでしたが、処理を行うことでつながりました。再構成画像を見ても、若干画像がぼけたようにも見えますが、ドリルの刃から出ていたアーチファクトが少なくなったことを確認することができました。画像評価の一つの使用と考えている抽出できたサイノグラムの本数は、478本から486本と微増しました。

課題

抽出できたサイノグラムの本数だけでは画像を評価することは困難なので、画像を評価する方法を何か考えたい。MSE(Mean Square Error)やPSNR(Peak Signal to Noise Ratio)など?

また、金属球の理想的な軌道を求めるためには、金属球の座標を正確に(0.1ミリスケールくらい)知る必要があり、座標をできる限り正確に調べる必要がありそうです。それと金属球の軌跡は投影すると楕円にはならなそうなので計算方法も考え直す必要がありそうです。

X線CTの焦点の変動について

2次元的な焦点の移動

検出器に検出される目印の位置から、図のように相似の関係を使って焦点の変動を調べることができます。本研究で使用しているCTの仕様では検出器上の1ピクセルは0.2353mmに相当し、SFD(焦点から検出器までの距離)は463mmとなっています。

2dfocal

まずはピクセルをmmに変換してみます。検出器上の変位をdis[px]として、検出器上で0.6pixel移動した場合を考えます。

$$d = dis \times 0.2353 \times \frac{SOD}{SFD}$$

この式よりmmに変換ができます。変動が0.6px、SOD(被写体から焦点までの距離)が15mmだった場合、計算すると0.14㎜検出器上で変動していたことがわかります。ちなみにSFDをSODで割ることで拡大率を求めることができます。

次に相似の関係から焦点の変動を求めます。以下の式で求めることができいます。

$$\Delta=\frac{d \times SOD}{SFD – SOD}$$

計算すると焦点の変動は0.0047mmであったことがわかります。この変換式を使うことで、2次元的な焦点の変動を求めることができます。

2d移動

3次元的な焦点移動

これまでに2次元的な焦点の移動を調べましたが、図のように被写体の2つの点(P1,P2)を使って3次元的な変動も調べることができると思います。

3dfocal

焦点の初期位置を原点として、2次元的に焦点が移動した点D1,D2と被写体のP1,P2を通る直線の方程式を求めます。

$$\frac{x-a}{-a}=\frac{y-b}{d_y-b}=\frac{z-c}{d_z-c}$$ ・・・①

$$\frac{x-a”}{-a”}=\frac{y-b”}{d”_y-b”}=\frac{z-c”}{d”_z-c”}$$ ・・・②

3次元的な焦点の位置は①、②式の交点であると考えられるので、①、②式を媒介変数s,tを使って解きます。媒介変数を使って式を変換することで以下の6つの式を求めることができます。

$$x = -as +a$$ ・・・③

$$y = (d_y – b)s + b$$ ・・・④

$$z = (d_z – c)s + c$$ ・・・⑤

$$x = -a”s +a”$$ ・・・⑥

$$y = (d”_y – b”)s + b”$$ ・・・⑦

$$z = (d”_z – c”)s + c”$$ ・・・⑧

③~⑧の6つの式を同時に満たすs,tを求めます。とりあえずtの値を求めてみると…

$$t = \frac{a”d_y – ad_y – a”b + ab”}{-ad”_y + a”b + a”d_y -ab}$$

求めたtを⑥⑦⑧式に代入すると三次元的な焦点の座標を求めることができます。

$$(x,y,z) = (-a”t+a”,(d”_y-b”)t+b”,(d”_z-c”)t+c”)$$

導出した式を使って、3次元的な焦点の変動を算出してみると図のような変動をしていることがわかりました。

3d移動

本研究で使用している焦点の大きさは5μmであることから、焦点の変動自体は非常に小さいことがわかりました。奥行き方向(X方向)のぶれもほとんどありませんでした。このことから画像のボケの原因は、やはり焦点の変動以外の要因が大きいことが考えられます。

X線CTの精度調査のための撮影実験について

実験目的

X線CT装置では高精度な撮影を行うために積算回数や投影方向数を増やすことで、長時間のCT撮影を行うことがあります。長時間のX線CT撮影による機器内の温度上昇などから、X線発生装置の点光源にぶれが生じ、画質の精度低下が起きているのかを確かめるために、CTの撮影実験を行いました。今回は通常の撮影方法で撮影した画像と長時間かけて撮影した画像でどのような違いが生じるのかを調べています。

実験手順

  1. 被写体として直径0.4mmのドリルの刃を使います。被写体のドリルの刃を台座に固定し、拡大率を25倍程度になるように台座を移動させて拡大率を調整します。
  2. 今回は以下の3つの撮影条件で撮影を行いました。
    ①積算回数16回、撮影時間10分
    ②積算回数128回、撮影時間70分
    ③積算回数16回、撮影時間70分
  3. それぞれの条件で撮影した透視画像のデータをConeCtExpressという画像再構成ソフトを使って被写体の断層画像を作成します。
  4. Molcer Plusというソフトを使って3次元モデルを作成します。

実験結果

dril

3つの条件で撮影を行った結果、上図のような結果を得ました。どれもドリルの先端部分を撮影した結果ですが、通常の撮影方法では画像にボケが生じていなかったのに対して、長時間撮影を行った右の二つはボケが生じていたことを確認できました。特に積算回数を増やさずにただ単に長時間撮影を行った真ん中の画像では、大きなボケが生じていることを確認できました。3次元的にモデリングを行った結果を以下に示します。

三次元モデル

3次元モデルを見ると、ボケが生じていたのにも関わらず積算回数を128回に増やして撮影したモデルが一番きれいなモデルになっていることがわかりました。

画像の定量的評価

3つの再構成画像の定量的な評価を行いました。ドリルの複雑な形を評価するのは困難であるので、ひとまず、円形のドリルの柄を使って定量的な評価を試みました。具体的には拡大率のわかっている画像に対して、ドリルの領域を2値化し理想的な再構成画像との差分をとっています。

public void evaImage(){
  int cnt=0, centerX=0, centerY=0;
  int width = 640;

  //被写体の重心を求める
  for(int i = 0; i < width; i++){
    for(int j = 0; j < width; j++){
      //既に2値化した再構成画像に対して、被写体の座標の合計値を求める
      if(image[i*width+j]!=0){
        centerX+=i;
        centerY+=j;
        cnt++;
      }
    }
  }
  //重心の座標を求める
  centerX/=cnt;
  crntery/=cnt;

  //理想的な再構成画像を作成する
  for(int i = 0; i < width; i++){
    for(int j = 0; j < width; j++){
      if((i-centerX)*(i-centerX)+(j-centerY)*(j-centerY) < 16*16){

        //半径が16pixel未満だったら黒
        difImage[i*width+j] = 255;
      }else{
        //それ以外の場合は白
        difImage[i*width+j] = 0;
      }
    }
  }

  //画像の差分を求める
for(int i = 0; i < width; i++){
    for(int j = 0; j < width; j++){
      //再構成画像と数値ファントムの差分が0でない場合
      if(difImage[i*640+j]-PanelDraw.image2[i*640+j]!=0){
        checkDiff[i * width + j] = 255;
        cnt2++;
      }
    }
  }

  //画像評価
  num = cnt2 / (width*height) * 100;
  System.out.println(num);

画像の評価を数値化すると、以下のような結果となりました。定性的な評価を行ったときと同様に積算回数を増やさずに長時間撮影を行った場合が一番低く(ボケが多い)、積算回数を増やして長時間撮影を行ったとき一番高い(理想的な形に近い)結果になりました。

画像評価

以上の結果から、定性的にも定量的にも長時間撮影を行うことによって画像にボケが生じることを確認することができました。しかしこの手法では評価できる形状が限定されるため、ほかの汎用性の高い方法を考える必要があります。本研究ではこのボケを画像データ上で補正することで画質の向上を行おうと考えています。

透視撮影実験について

実験目的

X線CTの精度評価のための撮影実験において、定性的にも定量的にも長時間のCT撮影においてボケが生じ画質が低下していることを確認することができました。本実験ではCT撮影は行わず、60分間1分間隔で目印の透視撮影を行うことで、どの程度焦点が変動しているかを定量的に調べることを目的としています。

透視撮影:台座を動かさずに1方向からX線を照射し撮影を行うもので、レントゲン撮影のような画像が得られます。

実験方法

本実験では以下の2つの目印を使って焦点の変動を調べます。ターゲットAは真鍮製の板に銅線を交差するように配置したもので、ターゲットBはアクリル製の樹脂に同様に銅線を配置したものです。

ターゲットA

ターゲットB

ターゲットAはX線管のベリリウム窓に直接貼り付け、X線管内で起きている変動を計測します。一方ターゲットBはステージの上に置くことで焦点のブレ以外にも台座やCT装置自体の歪みによる変動も計測します。それぞれを以下のように配置します。また、本実験では温度変化が問題になっていると考えられるので、ターゲットAの表面温度とターゲットB付近の雰囲気温度を計測します。

実験風景

また、焦点のブレはエージングを行った直後に大きくなることが考えられるので、エージング直後とエージング数時間後の2つの条件で撮影を行いました。撮影条件はそれぞれ管電圧130Kvで管電流は20mAです。幾何学的拡大率は27.8倍で撮影を行いました。それぞれを1分間隔で60分撮影を行った結果を画像解析し変動を調べます。

エージング:CT装置の電源を付けた直後に行われるもので、X線管球のフィラメントの寿命を延ばすための暖機運転のようなものである。具体的には管電圧、管電流を徐々に上げて最大の線量になるまでX線を発生させています。通常10~15分かかります。

幾何学的拡大率:CT撮影を行う時の倍率のこと。被写体から焦点までの距離と検出器から焦点までの距離の関係で決まります。被写体が焦点に近いほど大きくなります。

解析方法

2つのターゲットを同時撮影すると下図のように2つのターゲットを同時撮影した透視画像を得ることができます。60枚の画像に対して同じ処理を行い、銅線で囲まれた部分の重心を求めていきます。

変動解析

  1. 探索する領域を決定する
  2. 領域内で閾値以下の画素を探索する
  3. 閾値以下の画素とそれ以外で2値化する
  4. 2値化した領域の重心の座標を求める
public static void searchGravity(){

  double sumGravityX;
  double sumGravityY;
  double gravityX; //重心のX座標
  double gravityY; //重心のY座標
  int cnt = 0;

  //探索する領域を順番に調べていく(場合に応じて調節)
  for(int i = 0; i < 640; i++){
    for(int j = 0; j < 480; j++){
      //注目した画素が閾値以下の場合
      if(rawData[i+j*640] < 30000){
        sumGravityX += j;
        sumGravityY += i;
        cnt++;
      }
    }
  }

  //重心の座標を求める
  gravityX = sumGravityX / cnt;
  gravityY = sunGravityY / cnt;
}

実験結果

まずは測定した温度変化についてです。2地点の温度変化を時系列に示しています。

エージング直後エージング数時間後

温度変化はエージング直後の実験を行った場合は、ターゲットAの表面温度も台座付近の雰囲気温度も変化が大きくなりました。どちらも温度は上がり続けることがわかりました。

次にそれぞれのターゲットの変動についてです。それぞれの条件でX線管に貼り付けたターゲットAと台座の上に乗せたターゲットBの変動について調べています。

エージング数時間後2エージング数時間後1

X線管に貼り付けたターゲットAはエージング直後でも数時間後でも同程度の変動をしていたことが分かりました。その一方で台座に乗せたターゲットBではエージング直後に大きく変動していたことが分かりました。このことから温度変化による影響を受けやすいのは台座にターゲットを乗せた場合でした。以上のことから焦点のブレよりも、撮影中の台座の変動や、CT装置自体の歪みなどが長時間撮影による画質低下の主因になっていることが考えられます。

焦点の移動による画質低下が起きている可能性は低いことから今後は台座の変動も含めた撮影中の機器の歪みによる画質低下を補正する方法を考えていきたいと思います。