本文へスキップ
医用画像情報学

標本化と量子化(ナイキスト周波数・データ量・画像圧縮)

いまの医用画像はすべてデジタルです。しかし、体を通り抜けてきたX線そのものは連続量で、デジタルではありません。どこかで必ず、連続を飛び飛びの数値に置き換える作業が入ります。

この置き換えは2段階で行われ、それぞれ別のものを決めています。標本化が空間分解能、量子化が濃度分解能です。ここを取り違えた選択肢が、試験では繰り返し出ます。

この記事では、標本化と量子化の意味から、標本化定理とエリアシング、データ量の計算、画像圧縮までをまとめて扱います。前の記事「MTFの測り方」で出てきたナイキスト周波数も、ここで正面から整理します。

デジタル化は2段階:標本化と量子化

標本化と量子化アナログ信号をデジタル化する2段階を示した図。1番目はもとのアナログ信号で、連続した明暗の変化である。2番目は標本化すなわちサンプリングで、等間隔の位置だけを読み取って点にする。3番目は量子化で、読み取った値を決まった段階に丸めて階段状にする。標本化は位置を決め、量子化は値を決める。標本化は画素の細かさすなわち空間分解能を決め、量子化は何段階の濃さを表せるかすなわち濃度分解能を決める。この2つを取り違えた選択肢が定番で、濃度分解能は量子化ビット数で決まる。デジタル化は2段階:標本化と量子化位置を飛び飛びにするのが標本化、値を段階に丸めるのが量子化① もとのアナログ信号連続した明暗の変化② 標本化(サンプリング)等間隔の位置だけ読む③ 量子化値を決まった段階に丸める標本化は「位置」、量子化は「値」標本化 → 画素の細かさを決める → 空間分解能量子化 → 何段階の濃さを表せるかを決める → 濃度分解能この2つを取り違えた選択肢が定番。「濃度分解能は量子化ビット数で決まる」
標本化は「位置」、量子化は「値」。標本化が空間分解能を、量子化が濃度分解能を決める。

標本化(サンプリング)は、連続した信号を等間隔の位置だけ読み取る操作です。どれくらい細かい間隔で読むかが、そのまま画素の細かさ=空間分解能になります。

量子化は、読み取った値を決まった段階に丸める操作です。何段階まで表せるかが、濃度分解能になります。

この2つは独立です。画素をいくら細かくしても階調が2段階なら白黒の絵にしかなりませんし、階調を 65,536 段階にしても画素が粗ければぼやけた絵のままです。

試験では「濃度分解能を向上させるのはどれか」といった形で、どちらが効くかを問われます。濃度分解能は量子化ビット数、空間分解能は標本化間隔(画素サイズ)。この対応を固定してください。

標本化定理とエリアシング

エリアシングとアンチエリアシングフィルタエリアシングのしくみを示した図。本当は1.6サイクル毎ミリメートルの細かい縞があるのに、0.5ミリメートルごとすなわち標本化周波数2サイクル毎ミリメートルで読み取ると、標本点をつないだ形は0.4サイクル毎ミリメートルのまったく別の粗い縞になってしまう。これがエリアシングである。標本化定理は、記録したい最高周波数の2倍より細かく標本化せよというもので、ナイキスト周波数は標本化周波数の半分である。これを超えた成分が折り返す。アンチエリアシングフィルタは標本化する前にナイキスト周波数以上の成分を減衰させるもので、正体はローパスフィルタである。代償として画像は少しなまる。エリアシング:細かすぎる縞は、別の縞に化けるだから標本化する「前」に、入りえない成分を捨てておく細かい縞を、粗い間隔で読むと「別の縞」に化ける● 標本点(0.5 mm ごと = 標本化周波数 2 cycles/mm、ナイキスト周波数 1 cycles/mm)灰 = 本当の縞 1.6 cycles/mm   赤 = 見えてしまう縞 0.4 cycles/mm標本化定理記録したい最高周波数の2倍より細かく標本化するナイキスト周波数 = 標本化周波数 ÷ 2これを超えた成分が折り返すアンチエリアシングフィルタ標本化する「前」にナイキスト周波数以上を減衰させる正体はローパスフィルタ代償として画像は少しなまる
本当は 1.6 cycles/mm の細かい縞なのに、0.5 mm ごとに読むと 0.4 cycles/mm の別の縞に化ける。これがエリアシング。

標本化の間隔が粗すぎると、細かい縞がまったく別の粗い縞として記録されてしまいます。図の例では、本当は 1.6 cycles/mm の縞なのに、0.5 mm ごと(標本化周波数 fsf_s = 2 cycles/mm)で読んだために、標本点をつなぐと 0.4 cycles/mm の縞に見えています。標本点の値は両者でぴったり一致するので、記録したあとではどちらが本物か区別できません。

これがエリアシング(折り返し)で、画像ではモアレとして現れます。

これを防ぐ条件が標本化定理です。

fs>2fmax⁡⟺fN=fs2>fmax⁡f_s > 2 f_{\max} \qquad\Longleftrightarrow\qquad f_N=\frac{f_s}{2}>f_{\max}

fsf_s は標本化周波数で、1 mm あたりに何回標本を取るか(cycles/mm)を表します。fmax⁡f_{\max} は記録したい画像に含まれる最高周波数です。つまり、fmax⁡f_{\max} の2倍より細かく標本化する、と覚えます。標本化周波数 fsf_s の半分がナイキスト周波数 fNf_N で、これを超えた成分が折り返してきます。

画素間隔 Δ\Delta で言い換えると、

fs=1Δ,fN=12Δf_s=\frac{1}{\Delta}, \qquad f_N=\frac{1}{2\Delta}

画素 100 µm(0.1 mm)なら fN=5f_N = 5 cycles/mm、画素 50 µm なら 10 cycles/mm です。

では、もともと入ってくる信号に高い周波数が含まれていたらどうするか。標本化する前に削ってしまう、というのが答えです。これがアンチエリアシングフィルタで、正体はローパスフィルタです。ナイキスト周波数以上の成分をあらかじめ減衰させておけば、折り返す成分そのものがなくなります。

代償として、画像は少しなまります。これはエリアシングを防ぐための引き換えで、避けられません。

量子化:階調数 = 2 の ビット数 乗

量子化ビット数と階調数量子化ビット数と階調数の関係を示した図。左は2ビットすなわち4階調で量子化したもので段差が粗く、中央は4ビットすなわち16階調で量子化したもので、もとのなめらかな曲線に近づく。右の表は階調数が2のビット数乗になることを示し、8ビットで256階調、10ビットで1024階調、12ビットで4096階調、16ビットで65536階調となる。逆に1024階調と言われたら10ビットである。ビット数が増えると濃さの段階が増え濃度分解能が上がる。段階が粗いとなだらかな濃度変化が段々に見える擬似輪郭が生じる。医用画像は10ビットから16ビットが中心で、一般的な写真の8ビットでは足りない。空間分解能は標本化すなわち画素の細かさで決まり、ビット数では決まらない。量子化ビット数:階調数 = 2 の ビット数 乗ビット数が決めるのは「濃さの段階」。細かさ(空間分解能)ではない2 bit = 4 階調段差が粗い4 bit = 16 階調なめらかになる階調数 = 2 の ビット数 乗8 bit256 階調10 bit1,024 階調12 bit4,096 階調16 bit65,536 階調逆に「1,024階調」なら 10 bitビット数が増えると「濃さの段階」が増える = 濃度分解能が上がる段階が粗いと、なだらかな濃度変化が「段々」に見える(擬似輪郭)医用画像は 10〜16 bit が中心。一般的な写真の 8 bit では足りない空間分解能は標本化(画素の細かさ)で決まる。ビット数では決まらない
階調数 = 2 の ビット数 乗。段階が粗いと、なだらかな濃度変化が「段々」に見える。逆に 1,024 階調なら 10 bit。

量子化のビット数 nn と階調数の関係は単純です。

階調数=2n\text{階調数}=2^{n}
ビット数階調数
8 bit256
10 bit1,024
12 bit4,096
16 bit65,536

逆向きも使えるようにしておきます。「1,024 階調」と言われたら 2102^{10} なので 10 bit、「4,096 階調」なら 12 bit です。データ量の計算問題では、この逆算から始まることがよくあります。

段階が粗いと、なだらかな濃度変化が段々に見えます(擬似輪郭)。医用画像で 10〜16 bit が使われるのは、一般的な写真の 8 bit では診断に必要な濃度の違いを表しきれないからです。

データ量の計算

画像データ量の計算画像データ量の計算手順と3つの例題を示した図。手順は3段階で、第1に縦の画素数と横の画素数を掛けて画素数を出す、視野を画素サイズで割って出すこともある。第2にビット数を8で割って1画素あたりのバイト数を出し、端数はバイト単位に切り上げる。第3に画素数とバイト数を掛け合わせ、1メガバイトを約100万バイトとして割る。例題の1つ目は2048掛ける2048画素で1024階調のとき、画素数は約400万、1024階調は2の10乗で10ビットだが端数を切り上げて2バイトとなり、答えは8メガバイトである。2つ目は画素100マイクロメートルのFPDで視野43センチメートル四方、16ビットのとき、430ミリメートルを0.1ミリメートルで割って4300画素、4300掛ける4300で約1849万画素、16ビットは2バイトなので答えは約37メガバイトである。3つ目は1024掛ける2048画素で16ビットのとき、約200万画素に2バイトを掛けて4メガバイトである。最大の失点はビットのまま掛けてしまうことで、16ビットは2バイトと最初に直してしまえば間違えない。なお1メガバイトを100万バイトとするか1024掛ける1024バイトとするかで数パーセントずれるが、設問は最も近いものを選ばせる形なので選択肢で判断すればよい。データ量の計算は、いつも同じ3ステップ画素数 × 1画素あたりのバイト数。ビットのまま掛けないこと① 画素数を出す縦の画素数 × 横の画素数視野 ÷ 画素サイズ で出すことも② 1画素のバイト数ビット数 ÷ 8端数はバイト単位に切り上げ③ 掛け合わせる画素数 × バイト数そのあと 1 MB = 約100万バイト で割る2,048 × 2,048 画素1,024 階調2,048 × 2,048 = 約 4 M 画素1,024 階調 = 2¹⁰ = 10 bit→ 端数を切り上げて 2 byte4 M × 2 = 8 MB画素 100 µm の FPD視野 43 × 43 cm、16 bit430 mm ÷ 0.1 mm = 4,3004,300 × 4,300 ≒ 1,849 万画素16 bit = 2 byte1,849 万 × 2 ≒ 37 MB1,024 × 2,048 画素16 bit1,024 × 2,048 = 約 2 M 画素16 bit = 2 byte2 M × 2 = 4 MB最大の失点は「ビットのまま掛けてしまう」こと16 bit = 2 byte と最初に直してしまえば、間違えようがない1,024 階調は 10 bit だが、実データは 2 byte で格納する(1 byte では足りない)※ 1 MB を 100万バイトとするか 1,024×1,024 とするかで数%ずれる。設問は「最も近いのはどれか」なので選択肢で判断する
手順はいつも同じ3ステップ。ビットのまま掛けないこと。16 bit = 2 byte と最初に直してしまう。

計算問題は、次の3ステップから外れません。

  1. 画素数を出す。縦 × 横。視野と画素サイズが与えられていれば、視野÷画素サイズ\text{視野} \div \text{画素サイズ} で1辺の画素数を出す
  2. 1画素あたりのバイト数を出す。ビット数÷8\text{ビット数} \div 8。端数はバイト単位に切り上げる
  3. 掛け合わせる。そのあと MB に直す

最大の失点は、ビットのままで掛けてしまうことです。答えがちょうど8倍になるので、選択肢にその値が必ず用意されています。最初に「16 bit = 2 byte」と直してしまうのが確実です。

ステップ2の「切り上げ」にも注意が要ります。1,024 階調は 10 bit ですが、実際のデータはバイト単位で格納されるので、10 bit でも 2 byte を使います。1 byte(8 bit=256階調)では足りないからです。

暗算を速くする関係も2つ覚えておくと有利です。

  • 2,048×2,048≒42{,}048 \times 2{,}048 \fallingdotseq 4 M 画素、1,024×1,024≒11{,}024 \times 1{,}024 \fallingdotseq 1 M 画素
  • 2 byte/画素なら、容量は画素数の2倍

なお、MB への換算には 1,000,0001{,}000{,}000 バイトとする流儀と 1,024×1,0241{,}024 \times 1{,}024 バイトとする流儀があり、数%の差が出ます。国家試験は「最も近いのはどれか」という聞き方をするので、選択肢の中から近いものを選べば問題ありません。

画像圧縮:可逆と非可逆

画像圧縮画像圧縮の分類を示した図。可逆圧縮すなわちロスレスは完全に元どおりに戻せるが圧縮率は低くおおむね2対1程度で、ランレングス符号化やハフマン符号化やJPEG-LSがあり、診断に使う原画像の保存に向く。非可逆圧縮すなわちロッシーは元どおりには戻せないが圧縮率は高く10対1以上も可能で、離散コサイン変換を使うJPEGやウェーブレット変換を使うJPEG2000があり、目立ちにくい高周波を粗く捨てる方式である。圧縮しすぎると診断に影響が出る。圧縮ではないものとの区別も問われる。ウィンドウ処理とヒストグラム平坦化は階調変換、ボケマスク処理は鮮鋭化、サブトラクションは画像の引き算であり、どれもデータ量は減らない。圧縮に使うのは離散コサイン変換やウェーブレット変換である。画像圧縮:可逆と非可逆圧縮ではない処理と取り違えないこと可逆圧縮(ロスレス)完全に元どおりに戻せる圧縮率は低い(おおむね 2 : 1 程度)ランレングス符号化ハフマン符号化JPEG-LS診断に使う原画像の保存に向く非可逆圧縮(ロッシー)元どおりには戻せない圧縮率は高い(10 : 1 以上も可能)離散コサイン変換(DCT)→ JPEGウェーブレット変換 → JPEG 2000目立ちにくい高周波を粗く捨てる圧縮しすぎると診断に影響が出る「圧縮ではないもの」との区別が問われるウィンドウ処理階調変換ボケマスク処理鮮鋭化ヒストグラム平坦化階調変換サブトラクション画像の引き算どれもデータ量は減らない。圧縮に使うのは 離散コサイン変換 や ウェーブレット変換
可逆は元どおりに戻せるが圧縮率は低い。非可逆は戻せないが圧縮率は高い。ウィンドウ処理やボケマスクは圧縮ではない。

画像圧縮は2種類に分かれます。

可逆圧縮(ロスレス)は、圧縮前と完全に同じデータに戻せる方式です。ランレングス符号化、ハフマン符号化、JPEG-LS などがこれにあたります。情報を捨てないぶん圧縮率は低く、おおむね 2 : 1 程度にとどまります。診断に使う原画像の保存に向いています。

非可逆圧縮(ロッシー)は、元どおりには戻せない代わりに圧縮率が高い方式です。離散コサイン変換(DCT)を使うのが JPEG、ウェーブレット変換を使うのが JPEG 2000 です。どちらも画像を周波数成分に分解し、人間の目が気づきにくい高周波成分を粗く捨てることでデータ量を減らします。

圧縮しすぎると診断に影響が出るため、医療では圧縮率に注意が必要です。

試験でよく狙われるのは、圧縮ではない処理との区別です。

処理正体データ量
離散コサイン変換・ウェーブレット変換圧縮に使う変換減る
ウィンドウ処理階調変換減らない
ヒストグラム平坦化階調変換減らない
ボケマスク処理(アンシャープマスク)鮮鋭化減らない
サブトラクション処理画像の引き算減らない

試験で問われやすいポイント

論点覚える形
標本化が決めるもの空間分解能(画素の細かさ)
量子化が決めるもの濃度分解能(階調の段階数)
標本化定理fs>2fmax⁡f_s > 2f_{\max}。最高周波数の2倍より細かく
ナイキスト周波数fN=fs÷2=1÷(2Δ)f_N = f_s \div 2 = 1 \div (2\Delta)
エリアシングナイキスト周波数を超えた成分が折り返す。モアレの原因
アンチエリアシングフィルタ標本化の前にナイキスト周波数以上を減衰。ローパス
その代償画像は少しなまる
階調数2ビット数2^{\text{ビット数}}。1,024 階調 = 10 bit
データ量画素数 × バイト数。16 bit = 2 byte に直してから
切り上げ10 bit でも実データは 2 byte
可逆圧縮完全に戻せる。圧縮率は低い
非可逆圧縮戻せない。DCT → JPEG、ウェーブレット → JPEG 2000

まとめ

  • デジタル化は標本化と量子化の2段階。標本化が空間分解能、量子化が濃度分解能を決める
  • 標本化定理は「記録したい最高周波数の2倍より細かく標本化する」。半分がナイキスト周波数
  • 超えた成分は消えず折り返す。これがエリアシングで、モアレの原因になる
  • アンチエリアシングフィルタはローパスフィルタ。標本化の前にかけ、代償として画像はなまる
  • 階調数 = 2 の ビット数 乗。1,024 階調は 10 bit だが、実データは切り上げて 2 byte
  • データ量は画素数 × 1画素あたりのバイト数。ビットのまま掛けない
  • 圧縮は可逆(戻せる・圧縮率は低い)と非可逆(戻せない・圧縮率は高い)。非可逆の中核が DCT とウェーブレット変換

次は、ここで出てきた「周波数成分に分解する」という考え方を正面から扱います。フーリエ変換と空間フィルタ処理です。

この分野のほかの記事

← トップに戻る | 医用画像情報学の記事一覧