第01回 デジタル画像処理

デジタル画像処理の用途

デジタル画像処理の用途は大きく分けて2つ

デジタル画像

そもそも「デジタル画像」とは…


標本化

課題1

演習室のPCでGIMPを使って画素数を変えた画像を作り、そのファイルサイズが元画像と比べてどうなるかを調べる。

  1. 適当に画像検索してサンプル用の画像(デジカメで撮った写真のようなものがよい)をデスクトップに保存する。
  2. 画像の形式に応じて以下の変更を加える。
  3. GIMPを起動する。
  4. 下の図のようにして、GIMPのメイン部分に画像をドラッグ&ドロップする (次のメニューでは「変換」を選択する)。


  5. 上のメニューから「画像」→「画像の拡大・縮小」を選び、幅の数値に「32」を入れて「拡大縮小」ボタンを押す。


    これで画像が横32, 縦24ピクセルのサイズに縮小される。
    Ctrlキーを押しながらマウスホイールをまわしてみると、画像が荒くなっていることが確認できる。


  6. 上のメニューから「ファイル」→「名前をつけてエクスポート」を選び、「1縮小32.png」という名前をつけて「エクスポート」を押す。次の確認ウィンドウではそのまま「エクスポート」を押す。
  7. Ctrl+Zキーを押して縮小前の状態に戻し、今度は幅を64に変換して「1縮小64.png」という名前でエクスポートする(「1縮小32.pngに再エクスポート」ではなく、「名前をつけてエクスポート」で)。
  8. 「ファイル」→「ビューを閉じる」を選択する (GIMPに画像を読み込む前の状態になる)。


  9. デスクトップの「1縮小32.png」にカーソルを当ててしばらく待つ。すると図のようにファイルの情報が表示されるので、テキストエディタを開いて「サイズ」の値を記録する。


  10. 同様にして「1縮小64.png」のサイズの値を記録する。


    ※ 「1縮小64.png」の画素数は、「1縮小32.png」の4倍。ファイルサイズは単純に画素数に比例するわけではないが、「1縮小64.png」の方が大きくなっているはず。


  11. ここで作る提出物 ここで記録するもの

量子化

それぞれのピクセルの色はRGB(赤・緑・青)の明るさの組み合わせで表される。

課題2

今度は色数を減らしてみてファイルサイズがどうなるかを調べる。ベースとするのは課題1でサイズを変える前の元の画像。

  1. GIMPのメイン部分に「1縮小64.png」をドラッグ&ドロップする (次のメニューでは「変換」を選択する)。
  2. Ctrlキーを押しながらマウスホイールを回して適当に拡大し、画像の状態がわかるようにする。


  3. 上のメニューから「色」→「Posterize...」を選ぶ。
  4. 「Posterize levels」の値を適当に変えてみて、数値を増減させたときに色数が変化することを確認する (この数値は、「ピクセルのR, G, Bを何段階で表すか」を意味する。実際の色数はその3乗になる)。
    (色数が少ないと、グラデーションのあるエリアに擬似エッジが現れる)


  5. 数値を4にしてOKボタンを押す。
  6. 上のメニューから「ファイル」→「名前をつけてエクスポート」を選び、名前を「2減色4.png」にしてエクスポートする。
  7. Ctrl+Zキーを押して変更前の状態に戻し、今度は色数を8に変換して名前を「2減色8.png」にしてエクスポートする。
  8. それぞれの画像のサイズの値を記録する。


  9. ここで作る提出物 ここで記録するもの
    ※ ここで作った2つのファイルは課題1の「1縮小64.png」をベースにしてデータを落としているので、サイズの大小関係は

    「2減色4.png」のサイズ < 「2減色8.png」のサイズ < 「1縮小64.png」のサイズ

    になるはず。

Processingでの画像表示

  1. Processingを起動する。
  2. 以下のコードを入力(or コピペ)し、「img01」という名前で適当なところに保存する。
    PImage img;
    void setup(){
      img = loadImage("1元.jpg");
      size(800, 600);
    }
    void draw(){
      background(0);
      image(img, 0, 0);
    }
    
  3. さっき使用した元画像をProcessingのエディタ画面にドラッグ&ドロップする。
  4. プログラムを実行する。
    imageメソッドの引数の意味は、それぞれ(画像変数, 画像の左上の位置(横), 画像左上の位置(縦))。元画像のサイズが大きい場合は、下の図のようにその一部分だけが表示される。


  5. プログラムの
    image(img, 0, 0);
    
    の部分を
    image(img, 0, 0, width, height);
    
    に書き換えて実行してみる。こんどは画面ぴったりに画像が表示される。この場合のimageメソッドの引数の意味は、それぞれ(画像変数, 画像の左上の位置(横), 画像左上の位置(縦), 表示横幅, 表示縦幅)。



課題3

提出

※ 出席確認は課題提出によって行う。5/1(金)までに以下の様式に従って提出すれば出席となる(必要なファイル・情報がないメールは無効)。

小テスト予告



戻る inserted by FC2 system