演習3

今回の演習では Python の PIL (Python Imaging Library) を利用する。
python への path が通っていることを確認しておくこと。 (通っていない場合は /pub/sol8/bin を .cshrc の path 設定のところに 追加しておく)

  1. PILの練習
    tkikuchi@sis04% ls tanuki.jpg
    tanuki.jpg
    tkikuchi@sis04% python
    Python 2.2.1 (#3, May 22 2002, 15:29:49)
    [GCC 2.95.3 20010315 (release)] on sunos5
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import Image
    >>> im = Image.open("tanuki.jpg")
    >>> im.show()
    >>> Ctl+D コントロール+Dで終了
    
    画像が xv で表示されるのを確認したら、xv は(右クリック->Quit)で終了しておくこと。
  2. PIL の関数 ... 今回の演習で使う PIL 関数と使用例は以下のとおり
    open()画像ファイルを開き、Imageインスタンスを返す
    >>> im = Image.open("ファイル名")
    
    show()表示(実際には xv が起動される)
    >>> im.show()
    
    transform(AFFINE)アフィン変換
    書式: transform(サイズ,Image.AFFINE, 変換係数, 内挿法)
    サイズ:(x,y)2つの整数によるタプル
    変換係数:(a,b,c,d,e,f)6つの実数によるタプル、但し出力画像の座標を(x,y)とするとき、 入力画像のピクセル座標が (a*x + b*y + c, d*x + e*y + f) となる。
    内挿法: Image.NEAREST, Image.BILINEAR, Image.BICUBIC のどれか。 それぞれ、最近隣内挿法、共一次内挿法、3次畳み込み内挿法。 省略すると NEAREST
    >>> imx = im.transform(im.size, Image.AFFINE, (1.1,0.1,-40.0,0.05,1.2,-40.0))
    
    save()保存
    >>> imx.save('tanux.ppm','PPM')
    
    PIL のホームページ -> ハンドブック -> Image module には、さらに多くの関数についての説明が載っている
    PDF版 PIL Handbook
  3. 演習2に載せた画像から2つ以上を選んで アフィン変換の効果を試してみなさい。その際、
    1. 変換後の画像がバランスよく収まるように注意し、
    2. 拡大・縮小・反転それぞれの効果が入るように係数を調整し、
    3. 内挿法の違いによる効果についても確認し
    なさい。
  4. 以上の演習の結果を考察を交えて HTML 文書として作成し、~/public_html/image/ex3.html に保存しなさい。
  5. 余裕があれば PIL のその他の transform() についても調べて 実行してみるとよい。
  6. さらに余裕があれば、レンズの幾何歪を作るプログラム例 を PIL (Python) でプログラミングしてみるのも、なおよい。