Top / SJE2007 / 1203

SJE2007

画像をベクトルとして扱おう [edit]

PGM形式の画像 [edit]

  • 上記の画像ファイルをダウンロードしてlessコマンドで内容を表示しなさい
    $ less uni3ascii.pgm
  • displayコマンドで画像として表示しなさい
    $ display uni3ascii.pgm &
  • PGMReaderで読み込んでみなさい
    $ java PGMReader uni3ascii.pgm
  • PGMWriterで画像を出力し,displayで表示
    $ java PGMWriter hoge.pgm
    $ display hoge.pgm &

PGM画像からベクトルへ/ベクトルからPGM画像へ [edit]

  • PGM2Vecで画像をベクトルデータに変換.PGM2VecはPGMReaderを使うので,同じディレクトリに置くこと.その一,二の違いは?
    • その一
      $ java PGM2Vec uni3ascii.pgm > hoge.dat
      $ less hoge.dat 
    • その二
      $ java PGM2Vec uni3ascii.pgm 255 > hoge.dat
      $ less hoge.dat 
  • Vec2PGMでベクトルデータを画像に変換.Vec2PGMはPGMWriterを使うので,同じディレクトリに置くこと.
    • 上記その一で作った hoge.dat の場合
      $ java Vec2PGM hoge.dat 640 480 hoge.pgm
      $ display hoge.pgm &
    • 上記その二で作った hoge.dat の場合
      $ java Vec2PGM hoge.dat 640 480 hoge.pgm 255
      $ display hoge.pgm &

octaveで画像を加工 [edit]

以降では,上記のその二の方法によって,0から255までの画素値を0から1までの値に変換したベクトルデータを仮定する

  • PGM2Vecで作ったベクトルデータを &mimetex(\vec{x}); とおくとき,&mimetex(\vec{y} = 0.5\vec{x}); はどんな画像になるか.PGM2Vec, octave, Vec2PGMを使って試してみなさい
  • &mimetex(\vec{y} = \vec{1} - \vec{x}); はどんな画像になるか.&mimetex(\vec{1}); は,全ての要素が 1 のベクトル.
  • male.pgmから作ったベクトルを &mimetex(\vec{m});,female.pgmから作ったベクトルを &mimetex(\vec{f}); とする.

    #mimetex(\vec{c} = \frac{\vec{m}+\vec{f}}{2}); はどんな画像になるか.

  • 次式の &mimetex(\alpha); をいろいろ変えるとどんな画像になるか.

    #mimetex(\vec{c} = \alpha\vec{m}+(1-\alpha)\vec{f});

  • &mimetex(\alpha); をいろいろ変えながら,次の値を求めてみよ.
    • &mimetex(\vec{m}); や &mimetex(\vec{f}); との距離 &mimetex(|| \vec{c} - \vec{f} ||);
    • &mimetex(\vec{m}); や &mimetex(\vec{f}); との方向余弦

      #mimetex(\cos{\theta} = \frac{\vec{m}\cdot\vec{c}}{||\vec{m}||||\vec{c}||);


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19 (1771d)