淡色化処理


画像の淡色化とは色の鮮やかさを失わせる処理である. 淡色化を行った画像は色があせたように見える. 淡色化した後,RGB値を全体的に底上げ(255に近づける)してやれば, ホームページの背景などによく使われる 白みがかった感じの画像になる.

色の鮮やかさとは,その画素のRGB値が3値の平均からどのくらい離れているか ということである. 離れているほど鮮やかな画像ということになる. 逆に言えば,RGB値を3値の平均に近づけてやれば,鮮やかでない,つまり淡色化された 画像にすることができる.

以下のコードはフルカラーの画像を淡色化するものである. Whitenessの値を変えてやることで白みの度合を変えることができる. TRGB型と関数RoundToByteの定義はここ

procedure TForm1.Button2Click(Sender: TObject);
var
  Bmp: TBitmap;
  P: PRGB;
  I, J, Gray, Whiteness: Integer;
begin
   Whiteness := 0;
   Bmp := TBitmap.Create;
   try
     Bmp.Assign( Image.Picture.Bitmap );
     for J := 0 to Bmp.Height - 1 do
     begin
        P := Bmp.ScanLine[ J ];
        for I := 0 to Bmp.Width - 1 do
        begin
           Gray := Trunc( ( P^.R + P^.G + P^.B ) / 3 );
           P^.R := RoundToByte( Trunc( ( P^.R + Gray ) / 2 ) + Whiteness );
           P^.G := RoundToByte( Trunc( ( P^.G + Gray ) / 2 ) + Whiteness );
           P^.B := RoundToByte( Trunc( ( P^.B + Gray ) / 2 ) + Whiteness );
           Inc( P );
        end;
     end;
     Image.Picture.Bitmap := Bmp;
   finally
     Bmp.Free;
   end;
end;

実行例を以下に示す.
原画像
Whiteness=0
Whiteness=64
Whiteness=128


お問い合わせはメールにて: akasaka@klc.ac.jp

戻る
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送