画像計算のノウハウ
本節では画像計算に関する基礎知識を説明します。一般的にはカラー画像が用いられ明日が、説明を簡単にするために、白黒画像を中心に取り扱います。デジタル画像では、水平方向にx個、鉛直方向にy個の整数個の区画に区切られて、それぞれの区画にカラーであれば[RGB](赤緑青)3色の情報が、白黒であれば1色の情報が埋め込まれた構造になっており、通常はそれらの色情報は8ビット[0から255]までの整数で記録されます。以下では話を簡単にするためにx=y=nの正方形の画像について考えていきます。 次ページ 2014.10.18作成 2017.1.26改定
データの質や特長について考えるときには、最大最小値と平均値および標準偏差を求めることが多くあります。nの2乗個の画像データについてそれらを計算する場合には、
max=0;
min=255;
sum=0;
rms=0;
for(j=0;j
sum=sum/(n*n);
rms=sqrt(rms/(n*n)-sum*sum);
の計算を行い、計算の総数は4n^2+6回となります。この計算でも問題はないのですが、通常はヒストグラム(輝度分布)を用いて以下のように計算します。
for(i=0;i<255;i++)h[i]=0;
for(j=0;j
for(max=255;max>0;max--) if(h[max]>0)break;
sum=0;
rms=0;
for(i=0;i<255;i++){sum+=h[i] *i;rms+=h[i]*i *i;}
sum=sum/(n*n);
rms=sqrt(rms/(n*n)-sum*sum);
この方式では計算の総数はn^2+256*4以下となります。おおざっぱに計算すると、画素数が18x18より小さい場合には直接計算するほうが早く、18x18より大きい場合にはヒストグラムを用いたほうが早くなります。また、ヒストグラムは画像データの質や特長を考える上で重要な情報ですから、常にヒストグラムは求めておいた方がよいと考えています。