情報工学実験U: 課題4:
画像がどのくらい似ているかを数値化する |
課題4 |
2つの画像について色ヒストグラムを求めることで, それらの画像がお互いにどのくらい似ているかを,1つの数値で出力するプログラムを作成しなさい.
| |
<<課題4のヒント>>
●
入力となる画像ファイルが2つあるので,
./ex4 image_data/0.ppm image_data/1.ppm
と,プログラムの引数として,2つのファイルのファイル名を与えることにします.
●
C言語のプログラムで,与えられた引数の個数を得るには,変数「argc」を,引数そのものを文字列として得るには,変数「argv」を使います.
●
下は,与えられた引数を,すべてそのまま,1行ずつに分けて,標準出力に出力するプログラムです. #include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i;
for (i = 0; i < argc; i ++)
printf("%s\n", argv[i]);
exit(0);
}
●
標準入力(stdin)や,標準出力(stdout)以外のファイルを扱う前には,まず,そのファイルを開く必要があります.そのためには,関数「fopen」を使います.
●
標準入力(stdin)や,標準出力(stdout)以外のファイルを扱った後には,そのファイルを閉じる必要があります.そのためには,関数「fclose」を使います.
● 2つの色ヒストグラムが,どのくらい似ているのかを,どうやって1つの数値で表したらよいかは,
自分で考えてみましょう.(他の人と相談してもよいです.)
●
いくつかのヒント
☆ ある色が,一方の画像では,どのピクセルにも出てこないのに,他方の画像では,1000個のピクセルに出てくる.
・・・
これらの画像は,似ていないかも.
☆ ある色が,両方の画像で,どのピクセルにも出てこない.
・・・ これらの画像は,似ているかも.
☆
ある色が,一方の画像では,1000個のピクセルに出てくるし,他方の画像でも,1000個のピクセルに出てくる.
・・・
これらの画像は,似ているかも.
☆
ある色が,一方の画像では,1000個のピクセルに出てくるが,他方の画像では,5000個のピクセルに出てくる.
・・・
これらの画像は,どの程度似ているのか???
☆
上のように考えて,64通りあるそれぞれの色で,別々に類似度を計算しておいて,それらの類似度を,後から足し合わせればよいでしょう.
問題4-1)
あなたは,どのようなアイデアにもとづいて,2つの色ヒストグラムの類似度を数値にしましたか、また、数値の求め方を数式で表しなさい。
問題4-2)
なぜそのアイデアを思いついたのか,なぜそのアイデアがうまくいきそうだと思ったのか,この2点を,詳しく書いてください.
提出すべきもの |
問題4の答え 課題4のソースコードと出力結果(どの画像とどの画像の類似度を求めたか,明記すること.)
| |
[戻る]