• 検索結果がありません。

マルチメディア基礎 Professor Nishi's Lectures

N/A
N/A
Protected

Academic year: 2018

シェア "マルチメディア基礎 Professor Nishi's Lectures"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

マルチメディア基礎

(第 7 回  5 月 31 日 )

西 宏之

(2)

授業計画 ( シラバスより )

オリエンテーションにより,メディアの種類と概念を学ぶ→【復習】プログラミング環境 (Visual Studio Comunity) を各自 インストール

色情報がコンピュータ上でどのように表現されているかを学び,色情報を加工するための基礎知識を身に付ける.光の三原 色,えのぐの三原色の関係を理解する.

上記の理解度小テスト1を実施する. Visual Studio Community のインストール方と使い方を学ぶ.→【復習】講義中に作 成開始した簡単な画像表示プログラムを完成

理解度小テストの復習・振り返りを行うとともに,写真表示プログラムの練習問題を完成させる. →【復習】講義中に作 成開始した簡単な画像切り替え表示プログラムを完成

Visual Basic の基本的文法を学ぶ.繰り返し処理,判断分岐,ピクセル情報の読み込み,書き出し方法を学ぶ. その知識 を基に,カラー画像をモノクロ化する手法を学ぶ.→【復習】講義中に作成開始したモノクロ化プログラムを完成させるこ と

モノクロ化プログラムを作成する.→【復習】講義中に作成開始したモノクロ化プログラムを完成

ネガポジ反転処理およびしきい値処理による,二値化画像作成処理を学ぶ.ネガポジ,二値化プログラムを作成する.→

【復習】二値化プログラムの完成.

色画像情報を加工して,色合いや画像の雰囲気を変更・加工するアイデアを考案する.それに基づく,プログラムを企画す る.→【復習】これまでに学んだ知識を組合せ,さらにアイデアを盛り込んだ画像処理プログラムを考案し,プログラム作 成を開始する.

これまでに学んだ,画像処理および独自のアイデアを盛り込んだ画像処理プログラムを完成させる.→画像処理プログラム

「レポート1」提出

ゲームプログラミングの構成と考え方を学ぶ.→【復習】各自,自分が知っているゲームがどのような計算機能を行ってい るかを分析しておくこと.

ゲーム処理に必要なタイマー管理とそのプログラミング作法を学ぶ.→【復習】タイマー管理技法を応用して,「ストップ ウオッチ」プログラムを作成

ゲーム処理に必要な乱数発生とそのプログラミング作法を学ぶ.→【復習】乱数発生技法を応用して,「ビンゴ」プログラ ムを作成

ゲーム処理に必要なサウンド再生機能とそのプログラミング作法を学ぶ.→【復習】サウンド再生機能を応用して,音楽プ レーヤーアプリを作成

これまでに学んだ,技法を応用したモグラたたきゲームプログラムを作成する.→これまでの理解度小テスト2を行う

モグラたたきゲームに,ハイスコア表示など独自の機能を付け加える企画を行い,そのプログラム作成を開始する.→【復 習】独自機能を追加したモグラたたきゲームを作成する.

企画した独自機能付きモグラたたきゲームプログラムを完成する.→【復習】継続して独自機能を追加したモグラたたき ゲームを作成し, 「レポート2」提出

(3)

プログラム作成上の注意点

 教材と実際の画面が違うことがあります.

 単なるバージョンの違いや、インストール時の設

定の違いです

 書いてあることを読めば,違いは問題にならない

ようになっています.

 サンプルプログラム中のコメント文に

「 ’」がないものがあります.その場合は

「 ’」を文頭に補ってください.

(4)

今日の学習内容

ネガポジ反転

ネガポジ反転とは

色合いを にすること

赤が 強い 色は赤を 弱く

緑が 弱い 色は緑を 強く . というように

 じゃ,どうやればそうなる?

 今日は「新規作成」ではなく、「プロジェクト

を開く」

(5)

画像処理の流れ

前処理

① 元画像ファイル名を取得する

② 取得した画像ファイルを新規のビットマップオブジェク

トとして宣言する

③ 画像処理用の変数をカラー構造体として宣言し,元画像

用ピクチャーボックスに表示する.

② 取得した画像ファイルのビットマップオブジェク

トから 1 つの点の色情報を取得する.

取得した色情報を ネガポジ反転 する. ( ここが

④ キモ ) 画像処理した色情報を描画する

⑤ 上記②~④をすべての点について繰り返し処理す

る.

(6)

本日作成するプログラム

処理対象の画像フ

ァイルを読込み

左の画面に表示

モノクロ画像にし

て右の画面に表示

FAX のような白黒

画像にして右画面

に表示

ネガポジ反転し

て右の画面に表

(7)

前処理~読み込みボタンが押されたとき

前回と全く同じです。つまり、今日は何もいじ

りません。

' OpenFileDialog コントロールを使う

Dim fname As String ' ~ファイル名を格納する文字列型の変数名を宣言

OpenFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif “

' ~ファイル名を表示する際に特定の拡張子のファイルだけを表示

OpenFileDialog1.ShowDialog()

' ~これが,ダイアローグ

fname = OpenFileDialog1.FileName

' ~取得したファイル名を宣言した変数に代入

Dim bmpa As Bitmap = New Bitmap(fname)

' ~指定されたファイル名の中身画像を格納する

' ビットマップ構造体を宣言

PictureBox1.Image = bmpa

' ~ビットマップの中身をピクチャーボックスに表示

(8)

ネガポジ反転の方法

RGB 各々の値に対して

 強さを逆にするには...

 最大値である 255 から引いた値にしてやれば

よい

 元が 0 なら 255 に

 元が 255 なら 0 になる

 元が 50 なら 205 に (255 -  50  =  205)

 元が 200 なら 55 に

(9)

ネガポジ変換

' ① まず,宣言

  Dim bmpa As Bitmap = PictureBox1.Image

Dim bmpb As Bitmap = New Bitmap(PictureBox1.Width, PictureBox1.Height)

Dim iroa, irob As Color

Dim heikin, i, j As Integer

' ② 繰り返し処理は FOR NEXT 文で回す

For i = 0 To PictureBox1.Width - 1

For j = 0 To PictureBox1.Height - 1

iroa = bmpa.GetPixel(i, j)

' ~元画像の 1 つの点の色情報を取得する.

irob = Color.FromArgb(255 - Val(iroa.R), 255 - Val(iroa.G), 255 - Val(iroa.B))

' ~ 255 から引算 ( 反転 ) した値を RGB 値としてもつ色を作成する.

bmpb.SetPixel(i, j, irob)

' ~それを返還先のビットマップオブジェクトにセットする

Next

Next

PictureBox2.Image = bmpb

' ~最後にビットマップをピクチャーボックスに貼付る

(10)

次の課題~二値化

 与えられたしきい値より,明るい色なら

「白」にしてしまい,暗い色なら「黒」にし

てしまう.

 結果的に FAX のような絵になる.

具体的には,

RGB の平均値を求め,その値 ( つまりその点

の明るさ ) がしきい値より大きければ,25

5を入れる.小さければ,0をいれる.→ 

If 文を使う

 しきい値をユーザが入力するテキストボック

スが必要

(11)

If 文 とは?

If ○○ =△△  then

   □□□

Else

   ■■■

End If

という構文をもち、意味は下記のようになる

「もし、〇〇が△△に等しいならば□□□ を

実行し 

 等しくなければ■■■ を実行する」

(12)

2 値化

' ① まず,宣言~これはモノクロ化と同じなので省略

' ② 繰り返し処理は FOR NEXT 文で回す

For i = 0 To PictureBox1.Width - 1

For j = 0 To PictureBox1.Height - 1

iroa = bmpa.GetPixel(i, j)

' ~元画像の 1 つの点の色情報を取得する.

heikin = Int((Val(iroa.R) + Val(iroa.G) + Val(iroa.B)) / 3)

If heikin > Val(TextBox1.Text) Then ' ~ この文の意味がわかるかな?

irob = Color.FromArgb(255, 255, 255)

Else

irob = Color.FromArgb(0, 0, 0)

End If

bmpb.SetPixel(i, j, irob)

' ~それを返還先のビットマップオブジェクトにセットする

Next

Next

PictureBox2.Image = bmpb

' ~最後にビットマップをピクチャーボックスに貼付る

(13)

最後に作成した画像を保存しよう.

これも前回と全く同じなので、ノー

タッチ

Dim fname As String

Dim bmpb As Bitmap = PictureBox2.Image

SaveFileDialog1.Filter = "Bitmap Image|*.bmp"

SaveFileDialog1.ShowDialog()

fname = SaveFileDialog1.FileName

bmpb.Save(fname)

(14)

終了ボタン これもいじりませ

ん。

 Me.Close() でよい

 さあ,動かして見よう.

(15)

だんだんわかってきたかな

 左の画像( bmpa )にどのような操作をほど

こすと右の画像がどうなるのか?

 自分のアイデアで,何か画像の操作を考えて

みてください.

 → これがレポートの課題となります

(16)

ネガポジ反転の練習問題

 「モノクロネガポジ」というボタンを配置し

なさい.

 「モノクロネガポジ」ボタンをクリックする

と,モノクロでかつネガポジ反転された画像

を表示するプログラムを作成しなさい.

(17)

2値化の練習問題

 「赤2値化」というボタンを配置しなさい.

 「赤2値化」ボタンをクリックすると,赤い

色だけの2値化画像を表示するプログラムを

作成しなさい.

参照

関連したドキュメント

といったAMr*"""erⅣfg"'sDreα

[Publications] M.Tsuchiya: "Some analytical aspecl of diflusion processes with obligue reflection" Japan-Russion Symposium on Probability Theory and.

[Publications] Masaaki Tsuchiya: "A Volterra type inregral equation related to the boundary value problem for diffusion equations"

[Publications] S.Kanoh,M.Motoi et al.: "Monomer-isomerization, Regioselective Cationic Ring-Opening Polymerization of Oxetane Phthalimide Involving Carbonyl

"A matroid generalization of the stable matching polytope." International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). "An extension of

The reported areas include: top-efficiency multigrid methods in fluid dynamics; atmospheric data assimilation; PDE solvers on unbounded domains; wave/ray methods for highly

[r]

Rumsey, Jr, "Alternating sign matrices and descending plane partitions," J. Rumsey, Jr, "Self-complementary totally symmetric plane