【OpenMv】画像処理のグレースケールと二値化

転送元 | 新しいマシン ビジョン

グレースケールと二値化

画像処理では、RGB の 3 つの要素 (R: 赤、G: 緑、B: 青)、つまり赤、緑、青の 3 原色を使用して、真の色を表現します。 R コンポーネント、G コンポーネント、および B コンポーネントは 0 ~ 255 です。たとえば、コンピューター画面上の赤いピクセルの 3 つのコンポーネントの値は、255、0、0 です。

ピクセル

ピクセル画像の最小単位. 画像は多くのピクセルで構成されています. 下の画像は、美しい女性の大きな白い脚の画像です.

ここに画像の説明を挿入

この画像の情報を表示します。サイズは 800 * 800、幅は 800 ピクセル、高さは 800 ピクセルです。つまり、この絵は800×800ピクセルの行列で構成されており(行列の意味が分からなくても、行列はC言語の二次元配列として理解できます)、この行列は800行 800 列, ピクセルは画像の最小単位です. この画像の幅は長さ 800 ピクセル, 高さは長さ 800 ピクセルです. 合計で 800 * 800 = 640,000 ピクセルがあります.

ここに画像の説明を挿入

ピクセルの色は RGB の 3 つの値で表されるため、ピクセル マトリックスは R マトリックス、G マトリックス、B マトリックスの 3 つのカラー ベクトル マトリックスに対応し、すべて 800*800 マトリックスです。以下は、この美しい写真のカラー マトリックス データの一部を示しています。

これは R マトリックスの一部です
ここに画像の説明を挿入
これは G マトリックスの一部です
ここに画像の説明を挿入
これは B マトリックスの一部です
ここに画像の説明を挿入

たとえば、各行列の 1 行目と 1 列目の値は、R: 240、G: 223、B: 204 であるため、このピクセルの色は (240, 223, 204) であり、値は3 つの行列の 1 対 1 の対応は必ずしも必要ではありません. これは、読者の便宜のためにのみ行われます.

画像のグレースケール

画像がピクセルマトリックスで構成されていることを理解すると、画像処理はこのピクセルマトリックスの操作であることがわかります. 特定のピクセルの色を変更したい場合は、このピクセルマトリックスの色を変更するだけで済みます.行 x と列 y など、このピクセルの位置を見つけると、このピクセル マトリックス内のこのピクセルの位置は (x, y) として表すことができます。これは、ピクセルの色が赤、緑、青の 3 色であるためです。変数が表すので、これらの 3 つの変数に値を割り当てることで、このピクセルの色を変更します。たとえば、赤 (255, 0, 0) に変更します。これは (x, y, (R=255, G =0、B=0))。

では、写真とはグレースケール毛糸?実際、これは非常に単純です。つまり、ピクセル マトリックス内の各ピクセルが次の関係を満たすようにします。R=G=B (つまり、赤の変数の値、緑の変数の値、および青の変数、これらの 3 つの値は等しい、「=」はプログラミング言語の代入ではなく、数学の等号を意味します)、この時点でのこの値は呼び出されますグレースケール値

グレースケール処理の方法

方法 1:

  • グレースケール後のR = (処理前のR + 処理前のG + 処理前のB) / 3
  • グレースケール後のG=(処理前のR+処理前のG+処理前のB)/3
  • グレースケール後のB=(処理前のR+処理前のG+処理前のB)/3

方法 1 によってグレースケール化された後のビューティー ピクチャの効果は次のとおりです。

ここに画像の説明を挿入

方法 2:

  • グレースケール後のR = 処理前のR * 0.3 + G * 処理前の0.59 + B * 処理前の0.11
  • グレースケール後の G = R * 処理前の 0.3 + G * 処理前の 0.59 + B * 処理前の 0.11
  • グレースケール後の B = R * 処理前の 0.3 + G * 処理前の 0.59 + B * 処理前の 0.11

方法 2 によってグレースケール化された後のビューティー ピクチャの効果は次のとおりです。

ここに画像の説明を挿入

個人的には2番目の方法の方が加工効果は高いと思いますが、1番目の方法で加工した画像は少しぼやけてしまいます。

画像の二値化

画像の二値化とは?二値化画像のピクセルマトリックスの各ピクセルのグレー値を 0 (黒) または 255 (白) にすること、つまり、画像全体が白黒だけに見えるようにすることです。グレースケール イメージのグレー値の範囲は 0 ~ 255 で、2 値化イメージのグレー値の範囲は 0 または 255 です。

黒:

  • 2値化後R = 0
  • 2値化後G = 0

白:

  • R = 255 二値化後
  • 2値化後G=255
  • 2値化後 B = 255

では、グレースケール後のピクセルのグレースケール値を 0 または 255 に変換するにはどうすればよいでしょうか。たとえば、グレー値が 100 の場合、2 値化後は 0 か 255 か? これには、しきい値を取る問題。

一般的に使用される二値化方法

方法 1:

しきい値を 127 (0 ~ 255 の中央値、(0+255)/2=127 に相当) とし、127 以下のグレー値を 0 (黒)、127 より大きいグレー値を255 (白) になると、この利点は計算が小さく速度が速いことですが、このしきい値は別の写真では 127 であるため、欠点も明らかですが、別の写真の色分布は非常に異なるため、 127 をしきい値として使用し、キャベツと大根を使用すると、効果はまったく良くありません。

方法 2:

  1. ピクセル マトリックス内のすべてのピクセルのグレー値の平均を計算します
  2. (ピクセル 1 のグレー値 + ... + ピクセル n のグレー値) / n = ピクセルの平均値 avg
  3. 次に、各ピクセルを avg と 1 つずつ比較します。avg 以下のピクセルは 0 (黒)、avg より大きいピクセルは 255 (白) であり、方法 1 よりも優れています。

方法 3:

ヒストグラム法(別名バイモーダル法) 二値化のしきい値を見つけるために、ヒストグラムは画像の重要な特徴です。ヒストグラム法では、以下で構成される画像を考慮します。見込みバックグラウンド組成、グレースケール ヒストグラムでは、前景と背景の両方がピークを形成し、2 つのピークの間の最も低い谷がしきい値です。しきい値を取得したら、それらを 1 つずつ比較できます。

以下は二値化後の美しい女性の写真です。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_62361050/article/details/127837220