190 likes | 292 Views
2010 年マルチメディア論 画像処理演習(2). http://www.nier.go.jp/saka/rika/pic2009.txt ( pic1.txt ~ pic8.txt ). 1.プログラム環境の準備. (1) 検索エンジンで「 Tiny Basic 」をキーワードにして、「 Tiny Basic for Windows 」のトップページを開く。 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ (2)「 Tiny Basic for Windows Ver. 1.21 」をダウンロードする。
E N D
2010年マルチメディア論画像処理演習(2) http://www.nier.go.jp/saka/rika/pic2009.txt (pic1.txt ~pic8.txt)
1.プログラム環境の準備 (1) 検索エンジンで「 Tiny Basic 」をキーワードにして、「Tiny Basic for Windows 」のトップページを開く。 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ (2)「Tiny Basic for Windows Ver. 1.21」をダウンロードする。 → 左の「ダウンロード」をクリックし、「最新版 Ver. 1.21」を選択する。 → 保存したファイル(セットアップファイル)をクリックする。 (3)TBasic のフォルダを開いて、Tbasic.exe を実行(クリック)する。 (4)プログラム-新規作成 で、以下のプログラムを入力して、実行してみる。 (5)Tiny Basic for Windows のWEBページがあるので参考にしてください。
2.画像とプログラム • 画像を z: のドライブにダウンロードする。 • http://www.nier.go.jp/saka/rika/koizumi.jpg • http://www.nier.go.jp/saka/rika/koizumi3.jpg • 「プログラム」-「新規作成」の画面に以下のプログラムをコピーする。 • http://www.nier.go.jp/saka/rika/pic1.txt • 「即実行」をクリックする。
3.座標系を知る (0,400) (300,400) (600,400) (0,0) (300,0) (600,0)
4.1 LINEと色番号 • 直線を描く方法: line (始点)-(終点),色番号 • 【例】line (150,0)-(150,400),14 • グラフィックで使える色は16色で,色番号0から15まで指定できます。 色は次のように割り当てられています。
4.2 LINEで長方形を描く • 長方形を描く方法: line (始点)-(終点),色番号,bf • 【例】line (300,0)-(600,400),14,bf←塗りつぶす • 【例】line (300,0)-(600,400),14,b←塗りつぶさない • 長方形の色は16色で,色番号0から15まで指定できます。 色は次のように割り当てられています。
【演習1】LINEの演習 (0,400) (300,400) (600,400) 簡単な漢字をLINEで書く ここを黒く塗る (0,0) (300,0) (600,0)
5.画素(ピクセル) • http://www.nier.go.jp/saka/rika/pic2.txt • (x,y)の色を読み取る方法 iro$ =GetRGBPixel(x,y) ※GetRGBPixelのy座標(次頁参照)に注意すること。 • (x+300,400-y)に色を書き込む方法 forecolor=iro$ pset(x+300,400-y)
6.GetRGBPixel(x,y)のy座標 (0,400) (300,400) (600,400) y の値 pset(x+300,400-y) x の値 (0,0) (300,0) (600,0)
【演習2】 画像を斜め傾ける (0,400) (300,400) (600,400) (0,0) (300,0) (600,0)
7.1 RGBを16進数で表示 • http://www.nier.go.jp/saka/rika/pic3.txt • RGBを16進数で表示 zr$="&h"+mid$(iro$,2,2) zg$="&h"+mid$(iro$,4,2) zb$="&h"+mid$(iro$,6,2) • iro="#FF005A" のとき、 mid$(iro$,2,2) は、FF mid$(iro$,4,2) は、00 mid$(iro$,6,2) は、5A
7.2 RGBを10進数で表示 • http://www.nier.go.jp/saka/rika/pic3.txt • iro="#FF005A" のとき、 mid$()によって、 zr$="&hFF" になる。 zg$="&h00" になる。 zb$="&h5A" になる。 • RGBを10進数で表示 nr=val(zr$) → nr=16x15+15=255 ng=val(zg$) → ng=16x 0+ 0= 0 nb=val(zb$) → nb=16x 5+10= 90
8.1 画像(カラー)を赤色のみに • http://www.nier.go.jp/saka/rika/pic4.txt • iro="#xx????" のとき、 mid$()によって、 zr$="#xx0000" にする。 • zr$="&h"+mid$(iro$,2,2) または、 zr$=mid$(iro$,1,3) forecolor=zr$+"0000" pset(x+300,0)
8.2 画像(カラー)をモノクロに • http://www.nier.go.jp/saka/rika/pic5.txt • nrとngとnbの平均を求め、整数化する。 nx=int((nr+ng+nb)/3) • nxを16進数にする。 zx$=right$("0"+hex$(nx),2) • RGBをすべて同じ zx$ にして、その色をpset の座標に置く。 forecolor="#"+zx$+zx$+zx$ pset(x+300,400-y)
【演習3】 画像を2値化する • 2値化とは、白か黒にする。白と黒の中間(灰色)は使わない。 • 前頁のnxは、nrとngとnbの平均なので、 0≦nx≦255 となる。 • 2値化の場合、nxを0(nx<128のとき) または 255(128≦nx≦255のとき)のどちらかにする。 • BASICの条件分岐 If nx<128 Then nx=0 Else nx=255
9.画像をぼかす • http://www.nier.go.jp/saka/rika/pic7.txt • n5のまわりの画素(n1~n9)の平均を nx とする。 • nx=int((n1+n2+n3+n4+n5+n6+n7+n8+n9)/9) zx$=right$("0"+hex$(nx),2) forecolor="#"+zx$+zx$+zx$
【演習4】 カラー画像をぼかす • n5のまわりの画素(n1~n9)について、RGBそれぞれの平均を求める。
10.画像のエッジを抽出する • http://www.nier.go.jp/saka/rika/pic8.txt • N1(上の画素)とn4(下の画素)の差を nx とする。 • nx=int((n1-n4)/4) zx$=right$("0"+hex$(nx),2) forecolor="#"+zx$+zx$+zx$
【演習5】 エッジ抽出後にぼかす • エッジ抽出画像は、白黒がはっきりと描かれている。そこで、この画像をぼかしてみよう。 • 元画像を左に、エッジ抽出画像を右に描いたので、今度はエッジ抽出画像(右の画像)をベースにして、左にぼかした画像を描いてみよう。