第12回 アプリケーション2の設計(7月7日)

今日の課題

■ 最終課題アプリケーションの要求仕様

タイトル:画像結合パッケージ imgcats(イメージキャッツ)

1. ソフトウエアの目的

ファイルリストにあげられた画像ファイルを結合して1つの画像ファイルを生成すること、また、特定条件を満たすファイルをファイルリストから選出して別のファイルリストを作ること。前者を本体プログラム imgcat と呼び、後者を支援プログラムと呼ぶ。全体を imgcats というパッケージ名とする。

2. ソフトウエアの使用条件

UNIX のコマンドライン上で使用する。

画像ファイルは、グレイスケールの pgm ファイル、または、カラーの ppm ファイルとする(いずれもピクセル値はバイナリーとする)。

本体プログラムや支援プログラムは、それぞれが独立した UNIX コマンドとして実行できるものとする。特に支援プログラムは、画像の選択条件ごとに別の名前で存在する。たとえば、ic_light_filter は、明るさを条件としてファイルリストのフィルタリングを行い、ic_name_filter は、ファイル名を条件としてフィルタリングを行う。

本体プログラムと支援プログラムは、ファイルリストを通じてか、あるいは、UNIX のコマンドライン上のパイプなどを使用して、動作する。使用例を以下に示す。

% ./imgcat < imglistfile > image_all.pgm

imglistfile は、画像ファイル名を1行ごとに記載したファイルである。imgcat は、ファイルリストの画像ファイルをすべて結合し image_all.pgm に出力する。

% cat imglistfile | ./ic_light_filter 100 | ./imgcat > image_all.ppm

ic_light_filter は、imglistfile の中から平均輝度が 100 以上の画像ファイルの名称を出力する。ここで、出力結果は、imgcat への入力となる。imgcat はファイル名リストを入力し、結合した結果を出力する。ここでは標準出力に出力しているので、image_all.ppm に保存される。

% cat imglistfile | ./ic_light_filter 100 | ./ic_name_filter pika | ./imgcat > image_all.ppm

輝度による条件の他に、ファイル名に「pika」が有るかどうかによりファイルを選択し、その結果に対して画像を結合する。

3. その他

プログラミング言語は、C言語を用いる。

■ 最終課題の要項

上述の要求使用を満たすように、最終課題プログラムのレポート、および、プログラムを作成し提出すること。

レポートの書式は以下のとおりとする。
1. 内部設計書
1.1 プログラム構造設計
  モジュールの関係図
1.2 プログラム内設計
  関数の名称、入力条件、出力条件
1.3 物理データ設計
  データ構造やファイルの構造
2. 操作説明
2.1 パッケージの機能説明
  パッケージ全体にどんな機能があるのかを紹介
2.2 操作コマンドの説明
  どんな入力をコマンドラインから入力すれば実行できるのかを説明
  動作例も付随させること。  
3. 考察
3.1 完成度の自己評価
  A,B,Cのいずれかを明記する。
  A:仕様書通りに完全に動作
  B:結合した画像が生成できるが、ある場合は生成できない
  C:結合した画像が全く生成できない
  ※ B,Cの場合、問題点を説明する。
3.2 〈その他、節のタイトルは自由〉 - - - 
3.3 〈その他、節のタイトルは自由〉 - - -
  プログラム上の工夫した点、自分が以前作った pgmcat より進歩した点
  などを自由にアピール。アピール内容は箇条書きし、項目数がわかるように書く。
4. 感想
  〈採点外なので、自由に書いて下さい〉
付録1
プログラム一式(Makefile、ヘッダファイル、ソースプログラム)

プログラムの作成については、必須機能の実現とオプション機能の実現の数により評価する。また、レポートには、必須機能についての内部設計、操作説明、考察が記載されていること。もちろん、オプション機能が実現できている場合には、その機能についても記載すること。

下記のオプション機能は、参考である。順序は問わず実現できそうなものからチャレンジして良い。もちろん、独自の機能を追加して良い。

必須機能(各3点)

オプション機能(各4点)

■ Important Dates

  1. 補講(7月13日(水)、15日(金)5限目):出席日数の足らない人は出席すること。内容はプログラム設計やコーディングについて自由質問を受け付けます。もちろん、出席の足りている人も質問があれば自由に参加してください。
  2. アプリケーションの発表会(7月21日):TAが巡回して、動作を確認し、完成度を採点する。作成した機能ごとに、動作している様子が説明できること。デモンストレーション・説明の上手な人が得をします。説明の準備をしておこう。
  3. レポート提出期限(8月12日(金)17時):上述の要項に従った形式で書くこと。計算機Cの提出箱に入れること。期限より早く提出しても良い。

2005.7.5 by tokuhisa