コンピュータにおける数値と画像の表現・処理(資料集)
全体テキスト
全体テキスト [PDF]、[Word]
スライド資料
2進数、16進数、2の補数
[PDF]、[PowerPoint]
メモリ、メモリアドレス
[PDF]、[PowerPoint]
論理和と論理積、記憶と計算の仕組み
[PDF]、[PowerPoint]
デジタル画像と画素
デジタル画像は格子状に並んだ画素から構成され,輝度(明るさ)のみを持つ濃淡画像と,輝度と色の情報を持つカラー画像がある。 カラー画像の成分は,R(赤)・G(緑)・B(青)の3成分で表す方法と,輝度成分と色成分で表す方法がある。 畳み込み(フィルタ処理)は,周囲の画素にフィルタの重みを掛けて和をとり各画素の値とする操作で,ぼかし・エッジ検出・シャープ化などを実現できる。 空間周波数は明暗の変化の細かさを表し,スペクトルの中心は低周波,周辺は高周波に対応し,高周波除去でぼかし,低周波除去で輪郭抽出ができる。
スライド資料:
[PDF]、[PowerPoint]
動画
[MP4]
演習(クリックにより中身が表示されます)
演習 Setosa.io:画像にフィルタを適用
説明パートで学んだ「画像は画素値を並べた2次元配列である」「畳み込みは画像上の各位置で近傍の画素値とカーネル(フィルタ)の値の要素ごとの積の和を計算する操作である」という概念に対応する演習である.カーネル(フィルタ)を切り替えて出力画像の変化を確認する.出力画像および入力画像の任意の画素にマウスを合わせることで,3×3近傍の画素値とフィルタの値の積和演算の過程を数値で確認する.
URL: https://setosa.io/ev/image-kernels/
操作手順
- Webブラウザを起動する.
- Webブラウザで https://setosa.io/ev/image-kernels/ を開く.
- 顔画像と画素値(0〜255)の行列が表示されていることを確認する.
- ページ下部のプレイグラウンドで,「kernel」の下のメニューから「blur」を選び,出力画像の変化を確認する.
- 同様に「bottom sobel」「emboss」「identity(何も変化しないフィルタ)」「left sobel」「outline」「right sobel」「sharpen」「top sobel」を順に選び,それぞれの出力画像を確認する.
- 出力画像の任意の画素にマウスを合わせる.入力画像の対応する3×3近傍が強調表示され,3×3近傍の各画素値とフィルタの各値の要素ごとの積,およびその合計が表示されることを確認する.
観察と考察
- 「blur」と「sharpen」を切り替え,出力画像の違いを観察する.「blur」では隣接画素値の差が小さくなり,「sharpen」では隣接画素値の差が大きくなることを確認する.
- 「outline」を選んだとき,出力画像のどの位置で大きな値が現れるかを観察する.画像中の輪郭部分に対応していることを確認する.
- 「identity」フィルタを選ぶと,出力画像が入力画像と同一になることを確認する.フィルタの中心が1,他が0であるためにこの結果になることを,計算過程の表示から確認する.
演習 deeplizard:畳み込みを1ステップずつ確認する
演習④で確認した「フィルタを適用すると画像がどう変わるか」を踏まえ,本演習では「そのとき何が計算されているか」を確認する.フィルタが入力行列上を1マスずつスライドする過程を可視化し,出力行列の各要素がどの入力領域から計算されたかを追跡する.出力値の正(赤)と負(青)の色分けにより,畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が画像から特徴を抽出する原理を確認する.
URL: https://deeplizard.com/resource/pavq7noze2
操作手順
- Webブラウザを起動する.
- Webブラウザで https://deeplizard.com/resource/pavq7noze2 を開く.
- 入力行列,3×3のフィルタ,出力行列の表示欄の3つが表示されていることを確認する.フィルタサイズは3×3であることを確認する.
- 「Play(再生)」をクリックし,フィルタが入力行列上を1マスずつスライドし,出力行列の各要素が順次計算されていく過程を確認する.
- 出力行列の任意の画素にマウスを合わせる.対応する入力の3×3領域とフィルタの要素ごとの積,およびその合計が表示されることを確認する.
- 出力行列全体を見渡し,正の値(赤)と負の値(青)の分布を確認する.
観察と考察
- フィルタが入力行列上を左から右へ,上から下へとスライドし,各位置で1つの出力値が計算される過程を確認する.
- 出力値が正に大きい位置(赤)に対応する入力の3×3領域を確認する.その領域の画素値の並びとフィルタの値の並びを見比べ,両者のパターンが一致していることを確認する.
- 出力値が負に大きい位置(青)に対応する入力領域を確認する.フィルタのパターンと符号が反対のパターンになっていることを確認する.
- 出力値が0に近い位置に対応する入力領域を確認する.入力に変化が少ない領域や,フィルタのパターンとの相関が小さい領域であることを確認する.
- 本演習で確認された「入力のパターンとフィルタのパターンが一致する位置で大きな出力値が得られる」という性質が,特徴抽出の基本原理であることを確認する.
演習 2D Inverse Fourier Transform Playground:空間周波数を操作
本演習では,画像を周波数領域で表現したスペクトル上で編集を行い,その逆フーリエ変換(周波数を画像に戻す処理)結果を確認することで,空間周波数成分と画像の対応関係を確認する.スペクトル中心の低周波成分が画像の大局的な明暗に対応し,周辺の高周波成分が輪郭や細部に対応することを,スペクトルを削る操作を通じて確認する.
URL: https://monman53.github.io/2dfft/
操作手順
- Webブラウザを起動する.
- Webブラウザで https://monman53.github.io/2dfft/ を開く.
- 「Original image(原画像)」「Result(マスク適用後の逆フーリエ変換結果)」「Masked spectrum(編集可能なマスク付きスペクトル)」「Spectrum(スペクトル)」の4つが表示されていることを確認する.
- 右下の「白」のボタンをクリックする。このとき Result に原画像が表示されることを確認する.これは全ての周波数成分が通過している状態に対応する.
- Masked spectrum の周辺部(高周波成分)を左ドラッグで削る.削るための大きさは、マウスホイールで調整できる。マウスホイールで,削る範囲を調整して,様々な削り方を試す.結果として、Result の画像から輪郭や細部が失われていく過程を確認する.
- 次に,Masked spectrum の中心部(低周波成分)を左ドラッグで削る.Result の画像から大局的な明暗が失われ,輪郭成分が残ることを確認する.
- 途中で、右下の「白」のボタンをクリックして、もとに戻しながら、色々と試してみる。
観察と考察
- スペクトル周辺部(高周波)を削ったときの Result の変化を観察する.高周波成分の除去が空間領域でのぼかし処理に対応していることを確認する.
- スペクトル中心部(低周波)を削ったときの Result の変化を観察する.低周波成分の除去が空間領域でのエッジ検出処理に対応していることを確認する.
画像処理プログラム
[PDF]、[PowerPoint]
3次元画像処理
[PDF]、[PowerPoint]
3次元コンピュータグラフィックス
オブジェクトを様々な方向から撮影し,コンピュータでの処理により3次元データを得ることを3次元再構成という。 ポリゴン(平らな多角形)の集合体であるポリゴンメッシュで3次元モデルを表現することで,現実世界の物体をデジタルで再現できる。 3次元モデルはメッシュ表示,面表示,面表示・シェーディング(陰影付け)などの表示モードで表示できる。 Blenderは無料の3次元コンピュータグラフィックス(3DCG)の作成・編集ソフトウェアで,3次元モデル制作,アニメーション,画像出力などの機能を持つ。
スライド資料
[PDF]、[PowerPoint]
動画
[MP4]