[[ゼミ資料(Colloquium Material)※ICL限定]]

*プログラミング練習1 [#w751818f]

**課題1 [#w7563351]
*プログラミング課題1[#w751818f]
 更新日 : 2011-04-09 (土) 14:03:45&br;

***1.1. モノクローム画像 home, barbara, harbor の輝度分布を測定するプログラムを作成し,輝度分布のグラフを作成しなさい.[#g137291c]

※輝度分布のグラフはX軸を輝度値とし,Y軸を出現頻度としてgnuplotを用いて作成しなさい.&br;
**課題1 モノクローム画像における統計量の測定[#w7563351]

***1. 輝度分布[#g137291c]
 モノクローム画像 home, barbara, harbor の輝度分布を測定するプログラムを作成し,輝度分布のグラフを作成しなさい.ただし,輝度分布のグラフはX軸を輝度値とし,Y軸を出現頻度としてgnuplotを用いて作成しなさい.&br;

***1.2. モノクローム画像 home, barbara, harbor に対して輝度の平均値,最大値,最小値,分散,電力,中央値および最頻値を測定しなさい.[#q8ab1d60]
***2. 輝度の平均値,最大値,最小値,分散,電力,中央値および最頻値[#q8ab1d60]
 モノクローム画像 home, barbara, harbor における輝度の平均値,最大値,最小値,分散,電力,中央値および最頻値を測定するプログラムを作成しなさい.&br;

***3. 1次元自己相関係数[#t17ab490]
 モノクローム画像 home, barbara, harbor における水平方向および垂直方向の自己相関係数を測定するプログラムを作成し,自己相関係数のグラフを作成しなさい.ただし,自己相関係数の計算において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類が考えられるので,両者の場合についてそれぞれ測定を行い,両者の結果を比較して考察を述べなさい.また,自己相関係数のグラフはX軸を画素間距離(0~20)とし,Y軸を自己相関係数としてgnuplotを用いて作成しなさい.&br;

***2. モノクローム画像 home, barbara, harbor に対して水平方向および垂直方向の自己相関係数を測定するプログラムを作成し,自己相関係数のグラフを作成しなさい.ただし,自己相関係数において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類について測定しなさい.また,両者の結果を比較し,考察を述べなさい.[#t8897705]
***4. 1次元自己共分散[#a97ab1af]
 モノクローム画像 home, barbara, harbor における水平方向および垂直方向の自己共分散を測定するプログラムを作成し,自己共分散のグラフを作成しなさい.ただし,自己共分散の計算において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類が考えられるので,両者の場合についてそれぞれ測定を行いなさい.また,自己共分散のグラフはX軸を画素間距離(0~20)とし,Y軸を自己共分散としてgnuplotを用いて作成しなさい.さらに,自己共分散関数と自己相関関数との関係式を確認し,それに対する考察を述べなさい.&br;

※画素間距離は0から20画素までとし,自己相関係数のグラフはX軸を画素間距離とし,Y軸を自己相関係数としてgnuplotを用いて作成すること.&br;
***5. 2次元自己相関係数[#ae8b87b8]
 モノクローム画像 home, barbara, harbor における2次元自己相関係数を測定するプログラムを作成し,自己相関係数のグラフを作成しなさい.ただし,自己相関係数の計算において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類が考えられるので,両者の場合についてそれぞれ測定を行いなさい.また,自己相関係数のグラフはX軸を水平方向の画素間距離(0~8)とし,Y軸を垂直方向の画素間距離(0~8)とし,Z軸を自己相関係数としてgnuplotを用いて作成しなさい.&br;

|CENTER: 画像名 |CENTER: 画像サイズ &br; (水平×垂直) |CENTER: 階調数 |
|CENTER:BGCOLOR(white): home.256 |CENTER:BGCOLOR(white): 512×512 |CENTER:BGCOLOR(white): 256 level (8bit/pel) |
|CENTER:BGCOLOR(white): barbara.256 |CENTER:BGCOLOR(white): 512×480 |CENTER:BGCOLOR(white): 256 level (8bit/pel) |
|CENTER:BGCOLOR(white): harbor_y.raw |CENTER:BGCOLOR(white): 4096×3072 |CENTER:BGCOLOR(white): 256 level (8bit/pel) |

***3. モノクローム画像 home, barbara, harbor に対して水平方向および垂直方向の自己共分散を測定するプログラムを作成し,自己共分散のグラフを作成しなさい.ただし,自己共分散において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類について測定しなさい.また,自己共分散関数と自己相関関数との関係式を確認し,考察しなさい.[#a97ab1af]

※画素間距離は0から20画素までとし,自己共分散のグラフはX軸を画素間距離とし,Y軸を自己共分散としてgnuplotを用いて作成すること.&br;
**課題2 カラー画像における統計量の測定[#ebc0f9cb]
 カラー画像 home, barbara に対してR-G間およびG-B間の2次元相互相関係数を測定するプログラムを作成し,相互相関係数のグラフを作成しなさい.ただし,2次元相互相関係数の計算において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類が考えられるので,両者の場合についてそれぞれ測定を行いなさい.また,相互相関係数のグラフはX軸を水平方向の画素間距離(0~8)とし,Y軸を垂直方向の画素間距離(0~8)とし,Z軸を相互相関係数としてgnuplotを用いて作成しなさい.&br;

|CENTER: 画像名 |CENTER: 画像サイズ&br;(水平×垂直) |CENTER: 階調数 |
|CENTER:BGCOLOR(white): home.rgb |CENTER:BGCOLOR(white): 512×512 |CENTER:BGCOLOR(white): RGB各256 level (8bit/pel) |
|CENTER:BGCOLOR(white): barbara.rgb |CENTER:BGCOLOR(white): 512×480 |CENTER:BGCOLOR(white): RGB各256 level (8bit/pel) |

***4. モノクローム画像 home, barbara, harbor に対して2次元自己相関係数を測定するプログラムを作成し,2次元自己相関係数のグラフを作成しなさい.ただし,2次元自己相関係数において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類について測定しなさい.[#ae8b87b8]

※画素間距離は8×8画素までとし,2次元自己相関係数のグラフはX軸を水平方向の画素間距離とし,Y軸を垂直方向の画素間距離とし,Z軸を2次元自己相関係数としてgnuplotを用いて作成しなさい.&br;
**課題3 Y,Cb,Cr 変換[#wd8e47ff]

***1. R,G,B → Y,Cb,Cr[#u665623f]
 カラー画像 home に対して R,G,B 成分を Y,Cb,Cr 信号に変換するプログラムを作成しなさい.&br;

| 画像名 | 画像サイズ(水平×垂直)| 階階調数 |
| home.256 | 512×512 | 256 level (8bit/pel) |
| barbara.256 | 512×480 | 256 level (8bit/pel) |
| harbor_y.raw | 4096×3072 | 256 level (8bit/pel) |
|CENTER: R,G,B → Y,Cb,Cr &br; (Y,Cb,Cr 変換) |CENTER: Y,Cb,Cr → R',G',B' &br; (Y,Cb,Cr 逆変換) |
|BGCOLOR(white):#ref(ycbcr.png)|BGCOLOR(white):#ref(rgb.png)|

***2. Y,Cb,Cr 信号の確認[#g724b2db]
 上記の1で作成した Y,Cb,Cr 信号が正しい値であるかを確認するために,下記を実行しなさい.&br;&br;
(1)各 Y,Cb,Cr 信号をモノクローム画像としてディスプレイに表示させなさい.ただし,信号値をディスプレイに表示する際,ダイナミックレンジが0から255となるように変換しなさい.&br;
(2)Y,Cb,Cr 信号を R,G,B 成分に逆変換するプログラムと画像間の PSNR を測定するプログラムを作成し,原画像と逆変換後の画像との PSNR を測定しなさい.このとき,原画像または原画像に近い輝度値に戻るかどうか確認しなさい.&br;
(3)原画像と逆変換後の画像が完全に一致しない場合があるが,なぜそれが起こるのかを考察しなさい.また,原画像と逆変換後の画像が完全に一致しない場合,初めて不一致が発生した画素位置とその位置から4×4画素分の R,G,B 成分値,Y,Cb,Cr 信号値および逆変換後の R,G,B 成分値を出力しなさい.&br;

***3. R,G,B → Y,Cb,Cr (JPEG 2000 の可逆コンポーネント変換)[#z32d317a]
 カラー画像 home に対して JPEG 2000 の可逆コンポーネント変換を行うプログラムを作成しなさい.&br;

**課題2[#ebc0f9cb]
|CENTER: R,G,B → Y,Cb,Cr &br; (JPEG 2000 の可逆コンポーネント変換) |CENTER: Y,Cb,Cr → R',G',B' &br; (JPEG 2000 の可逆コンポーネント逆変換) |
|BGCOLOR(white):#ref(ycbcr_jpeg2000.png)|BGCOLOR(white):#ref(rgb_jpeg2000.png)|

カラー画像 home, barbara に対してR-G間およびG-B間の2次元相互相関係数を測定するプログラムを作成し,2次元相互相関係数のグラフを作成しなさい.ただし,2次元相互相関係数において,画像外に相当する画素を使用する際,0として扱う場合と定義できる範囲内で計算する場合の2種類について測定しなさい.&br;
***4. Y,Cb,Cr 信号の確認 (JPEG 2000 の可逆コンポーネント変換)[#v64eac9f]
 上記の3で作成した Y,Cb,Cr 信号に対して,上記の2.(1),(2)と同様のことを実行し,上記1の場合と比較して考察を述べなさい.&br;

※画素間距離は8×8画素までとし,2次元相互相関係数のグラフはX軸を水平方向の画素間距離とし,Y軸を垂直方向の画素間距離とし,Z軸を2次元相互相関係数としてgnuplotを用いて作成しなさい.&br;


| 画像名 | 画像サイズ(水平×垂直)| 階調数 |
|home.rgb | 512×512 | RGB各256 level (8bit/pel) |
|barbara.rgb | 512×480 | RGB各256 level (8bit/pel) |


**課題3 [#wd8e47ff]

***1. カラー画像 home に対してR,G,B成分をY,Cr,Cb信号に変換するプログラムを作成しなさい.[#u665623f]

R,G,B → Y,Cr,Cb 変換&br;
Y=0.299R+0.587G+0.114B&br;
Cr=0.500R-0.419G-0.081B&br;
Cb=-0.169R-0.331G+0.500B&br;

Y,Cr,Cb → R,G,B 逆変換&br;
R=Y+1.403Cr&br;
G=Y-0.714Cr-0.344Cb&br;
B=Y+1.773Cb&br;


***2. 上記の1で作成したY,Cr,Cb信号が正しい値であるかを確認するために,下記のことを実行しなさい.[#g724b2db]

(1)Y,Cr,Cb信号をそれぞれモノクローム画像としてディスプレイに表示させなさい.ただし,信号値をディスプレイに表示する際,ダイナミックレンジが0から255となるように変換しなさい.&br;

(2)Y,Cr,Cb信号をR,G,B成分に逆変換するプログラムを作成し,原画像と逆変換後の画像とのPSNRを測定しなさい.このとき,原画像または原画像に近い輝度値に戻るかどうか確認しなさい.&br;

(3)原画像と逆変換後の画像が完全に一致しない場合もあるが,なぜそれが起こるのかを考察しなさい.また,原画像と逆変換後の画像が完全に一致しない場合,初めて不一致が発生した画素位置とその位置から4×4画素分のR,G,B成分値,Y,Cr,Cb信号値および逆変換後のR,G,B成分値を出力しなさい.&br;


***3. カラー画像 home に対してJPEG 2000の可逆コンポーネント変換を行うプログラムを作成しなさい.[#z32d317a]


***4. 上記の3で作成したY,Cr,Cb信号に対して,上記の2.(1),(2)と同様のことを実行し,上記1の場合と比較して考察しなさい.[#v64eac9f]

JPEG 2000の可逆コンポーネント変換

R,G,B → Y,Cr,Cb 変換  :ページ下部の添付ファイル "ycrcb.bmp" 参照

Y,Cr,Cb → R,G,B 逆変換:ページ下部の添付ファイル "rgb.bmp" 参照

#br
----
#br


*注意[#bed1b938]
*注意事項[#bed1b938]
 プログラミング課題は各自,独力で作成し,記述言語はCまたはC++とすること.これ以外の言語で課題に取り組みたい場合はレポートチェック担当者の承諾を得ること.また,課題の分からない箇所は他人に相談してもよいが,他人のプログラムをコピーしないこと.また,レポートはプログラミング演習のレポート形式に従って作成するため,レポートには以下の項目をすべて含むことを条件とする.ただし,サンプルソースに記述してあるデータ構造および関数の説明は不要である.&br;&br;

プログラミング課題は各自,独力で作成すること.課題の分からない箇所は他人またはM1に相談してもよいが,他人のプログラムをコピーしないこと.また,レポートはプログラミング演習のレポート形式に従って作成するため,以下の項目をすべて含むこと.ただし,サンプルソースに記述してあるデータ構造および関数の説明は不要である.&br;
 レポート必須項目&br;
 ・課題概要&br;
 ・ソースリスト&br;
 ・データ構造の説明&br;
  ・定数宣言 (マクロ,const)&br;
  ・構造体 (typedef,struct)&br;
  ・グローバル変数&br;
 ・関数&br;
  ・関数の説明&br;
  ・引数&br;
  ・戻り値&br;
 ・実行結果&br;
 ・考察&br;

・課題概要&br;
・ソースリスト&br;
・データ構造の説明&br;
 ・定数宣言 (マクロ,const)&br;
 ・構造体 (typedef,struct)&br;
 ・グローバル変数&br;
・関数&br;
 ・関数の説明&br;
 ・引数&br;
 ・戻り値&br;
・実行結果&br;
・考察&br;

#br
----
#br


*課題で使用する画像[#td738aca]
*使用画像[#td738aca]
 課題で使用する画像は共有サーバ prost にあるので,各自入手すること.&br;&br;
 URL : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\画像\&br;

課題で使用する画像は共有サーバ prost にあるので,各自入手すること.&br;

\\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\画像\&br;

#br
----
#br


*サンプルソース[#aeb697ac]
 サンプルソースは共有サーバ prost にあるので,自由に使用してよい.また,各自,1から作成してもよい.&br;&br;
 URL : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\サンプルソース\&br;

サンプルソースは共有サーバ prost にあるので,自由に使用してよい.ただし,サンプルソースは課題1の前半までしかサポートしないので,それ以降の課題については各自でソースを作成すること.&br;

\\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\サンプルソース\Sample-blank.zip&br;

#br
----
#br


*提出期限および提出先 [#o610d318]
 課題ごとにレポートを作成し,レポートが完成したら,以下の提出先に提出してからレポートチェック担当者にメールを出してレポートチェックを受けること.なお,レポートチェックを受けている間にも別の課題に取り組み,なるべく早めに課題を完了させること.また,レポートのファイル名は "[名前]_kadai[n]" とし,"doc" または "docx" 形式で提出すること.&br;

課題ごとにレポートを作成し,レポートが完成したら,以下の提出先に提出してから担当の先輩にメールを出してレポートチェックを受けること.なお,レポートチェックを受けている間にも別の課題に取り組み,なるべく早めに課題を完了させること.レポートのファイル名は "[名前]_kadai[n]" とし,"doc" または "docx" 形式で提出すること.&br;
 ※n : 課題番号&br;

※n : 課題番号&br;
 課題1の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題1\&br;
 課題2の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題2\&br;
 課題3の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題3\&br;

課題1の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題1\&br;
 &color(red){最終期限 : 2011/05/02(月) 24:00 時間厳守};

課題2の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題2\&br;

課題3の提出先 : \\prost\共有フォルダ3\ICL\平成23年度\プログラミング課題\プログラミング課題1\課題3\&br;

&color(red){最終期限 : 2011/05/02(月) 24:00 時間厳守};

#br
----
#br


Top   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS