ホーム ] 実行例 ] 処理速度 ] 画像処理メソッド構造 ] 技術解説 ]

上へ
高速化
色空間変換
画像色変換処理
画像濃度変換処理
空間フィルタ
非線形フィルタ
機能フィルタ

技術解説

画像色変換処理

最終更新日:2007/04/26  修正

●概要

 ここで提供している画像の色変換処理 ImageColor メソッドについて解説している。

●処理内容

 主としてカラー画像を単色で表す処理である。モノクロ化は、RGB各値を同じ値にすることで得られる。以下の処理を行っている。

○Y_Image

 YCC 変換し、そのYの値をRGB各値にする。

○Cb_Image 

 YCC 変換し、Cb (色差 青)の値を、0から255に写像して、RGB各値にする。

   Y = 0.299 * R + 0.587 * G + 0.114 * B
   Cb = B - Y

なので、

 Cb = B - (0.299 * R + 0.587 * G + 0.114 * B)
      = 0.886 * B - (0.299 * R + 0.587 * G)

Cb の最大値は、B = 255、R = G = 0 のときで、Cbmax = 225.93、最小値は、B = 0、R = G = 255 のときで、Cbmin = -225.93 となる。これを 0から255に写像するには、

       Cb' = 255 / (Cbmax - Cbmin) * (Cb - Cbmin)

なる線形変換を行う。安全のため閾値処理を追加する。

○Cr_Image 

 YCC 変換し、Cr (色差 赤) の値を、0から255に写像して、RGB各値にする。

   Y = 0.299 * R + 0.587 * G + 0.114 * B
   Cr = R - Y

なので、

 Cr = R - (0.299 * R + 0.587 * G + 0.114 * B)
      = 0.701 * R - (0.587 * G + 0.114 * B)

Cr の最大値は、R = 255、G = B = 0 のときで、Crmax = 178.755、最小値は、R = 0、G = B = 255 のときで、Crmin = -178.755 となる。これを 0から255に写像するには、

       Cr' = 255 / (Crmax - Crmin) * (Cr - Crmin)

なる線形変換を行う。安全のため閾値処理を追加する。

○H_Image 

 HSL変換し、色相H をそのままで、S = 1、L = 0.5 にして、RGB変換し、その色相における純色にて新しい画像とする。

○S_Image 

 HSL変換し、彩度S を、0から255に写像して、RGB各値にする。

○L_Image

 HSL変換し、明度L を、0から255に写像して、RGB各値にする。

○R_Image

 Rをそのままで、G = B = 0 とした画像。

○G_Image 

 Gをそのままで、R = B = 0 とした画像。

○B_Image

 Bをそのままで、R = G = 0 とした画像。

・R_Image + G_Image + B_Image にて、元のカラー画像になる。

●高速化

○Y_Image

 YCC変換関数を使うと、無駄な演算が含まれるので、直接、Yのみを求める。

○Cb/Cr_Image

 YCC変換関数を使うと、無駄な演算が含まれるので、直接、CbやCr を求める。 

○C++

 それぞれ、C++版がある。