ヒストグラムの線形変換

寄稿:東條遼平

全体的に明るくすることができる

輝度が一部に偏ってしまうと全体的に暗い感じの画像になってしまいます.例えば暗い画像は次のようなヒストグラムになってしまいますが,使えるレンジがまだまだ残っているのに一部の範囲しか使っていないのももったいない話です.そこでこのような画像の輝度が0から255まで目一杯使うように線形変換をしてみます.ヒストグラムに関係する変換方法はいろいろあるのですが,これが一番簡単です.結構取り繕った感のある方法ですが,以外といい結果が得られます.

hist1.jpg

変換の方法ですが,単純に正規化して最大値を255にあわせています.式は次のようになります.

img33.png

max,minは原画像に含まれる輝度の最大値と最小値です.プログラムは次のようになります.

void Histlinearconversion(Image *img)
{
  int max=0, min=255;
  int i;

  for(i=0; i<img->width*img->height; i++){
    if(max < img->rgb[i].r) max = img->rgb[i].r;
    if(min > img->rgb[i].r) min = img->rgb[i].r;
  }

  if(!max)return;

  for(i=0; i<img->width*img->height; i++){
    img->rgb[i].r = img->rgb[i].g = img->rgb[i].b = 
                    255.0*(img->rgb[i].r - min)/(max - min);
  }
}

これによって変換した画像のヒストグラムは以下のようになります.比が小さすぎて表示されていませんが輝度の最大値は255になっています.

hist2.jpg
Valid XHTML 1.1! home > コンピュータ > プログラミング >
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.2.17HTML convert time to 0.092 sec.