// ReviceHistgram.v ヒストグラム補正モジュール
// 並列化不可能な中間処理です。
module ReviceHistgram(Histgram,Reviced:parameter)
int Histgram[256]; // 元のヒストグラム
int Reviced[256]; // 補正されたヒストグラム
{
{
int i;
int sum; // ヒストグラムの部分話
int pixnum = 0; // 入力画像の全画素数
float a_freq[256]; // ヒストグラムの累積度数
float vmin; // 累積度数の最小値
float vmin_inv; // 累積度数計算時の定数部分
// 全画素数を計算
for(i = 0; i < 256; i++)
pixnum += Histgram[i];
// 累積度数を初期化
for(i = 0; i < 256; i++)
a_freq[i] = 0.;
// 累積度数を計算
sum = 0;
for(i = 0; i < 256; i++){
sum += Histgram[i];
a_freq[i] = (float)sum / pixnum;
}
// 累積度数の最小値を別名保存
vmin = a_freq[0];
vmin_inv = 255./(1.-vmin);
// 均一化されたヒストグラムの計算
for(i = 0; i < 256; i++)
Reviced[i] = (int)((a_freq[i] - vmin)*vmin_inv);
}
}
コントラスト補正メインフローへ戻る
VIOS トップページ