サンプルプログラム

サンプルプログラムを用意いたしました.こちらからダウンロードください.(最終更新日:2005/7/6
※Windows上で実行できないバグを修正しました.(2005/7/5) ⇒ 2005/7/5版をダウンロードされた方,2005/7/6版を新たにダウンロードしていただきますようお願いします.
プログラム中のコメントに使用している文字コード(EUC-Japan,SJIS)とファイルの圧縮形式(tar+gz,zip)別に4種類のファイルを用意しています.
プログラムの内容は4種類とも変わりません.環境に合わせて適当なものをダウンロードしてください.

gcc 3.3.2で動作確認をしております.不明な点・不具合等がございましたらalcon@mm.media.kyoto-u.ac.jpまでご連絡ください.

利用法

makeコマンドが実行可能な環境であれば,Makefileを適宜編集してmakeコマンドを実行してください.コンパイルできるとTESTというファイルが生成されます.

./TEST fg.ppm bg.ppm

とすれば実行できます.fg.ppmが対象画像,bg.ppmが背景画像です.実行するとresult.ppmという名前で二値画像(各画素の値が(0,0,0)もしくは(255,255,255))が出力されます.

なお,

./TEST fg.ppm bg1.ppm bg2.ppm

とすることで,複数枚の背景画像(Level3)に対応します.

※サンプルプログラムの使用法についての説明書(PDF形式)を準備いたしました.

提出ファイル

Silhouette.cが提出していただくファイルです.Silhouette.cに含まれる関数

void Extract( VGAimage *pDiffImg, INPUTimage *pInput);

により,pInputで与えられた対象画像・背景画像より物体が写っている領域を抽出してpDiffImgに書き込んでください.なお,画像のサイズは幅640高さ480です(imageio.hの中で#defineされています).

VGAimageは複数枚の画像をリスト構造で表す構造体です.

pDiffImg->p[i][j].r : i行j列の赤の画素値
pDiffImg->p[i][j].g : i行j列の緑の画素値
pDiffImg->p[i][j].b : i行j列の青の画素値
pDiffImg->next_image : 次の画像(VGAimage)へのポインタ.次の画像が存在しない場合NULL

また,INPUTimageは入力データを表す構造体です.

pInput->bgnum :背景画像の枚数
pInput->fgnum : 対象画像の枚数(今回のコンテストではこの値は常に1です)
pInput->bg : 1枚目の背景画像(VGAimage)へのポインタ
pInput->fg : 対象画像(VGAimage)へのポインタ

サンプルデータ

各レベルに対してサンプルデータを掲載しております.今後データを追加していく予定です.(最終更新日:2005/7/5)
※2005/7/5のデータ中にInputImage()で読み込めないデータがありましたので修正しました.(2005/7/6)
※Level1〜3についてサンプルデータを追加しました(2005/7/5)
※Level2と3の正解データを追加いたしました(2005/6/27)

Level.1

背景画像 対象画像 正解画像

Level.2

背景画像 対象画像 正解画像

Level.3

背景画像 背景画像 対象画像