HALCON 2値化処理

こんにちは、ゆたんぽです。

本日は引き続きHALCONの記事を書いていきます。

今回は、よく利用する2値化処理について書いていきます。

二値化とは

画像の二値化とは、画像を2つの値(白と黒)のいずれかに変換する処理です。

具体的には、ある閾値を設定し、その閾値を基準に画像中の各画素の輝度値を比較し、閾値以上であれば白、閾値以下であれば黒とすることで画像を2値化します。

HALCONでの画像の二値化方法

HALCONでは、Threshold関数を使用して画像を二値化することができます。

Threshold関数は、指定された閾値以下の画素値を0(黒)に、閾値以上の画素値を255(白)に変換する関数です。

以下は、HALCONを使用して画像を二値化するサンプルコードです。

// 画像を読み込む
HObject image;
HOperatorSet.ReadImage(out image, "input.jpg");

// 画像をグレースケールに変換する
HObject imageGray;
HOperatorSet.Rgb1ToGray(image, out imageGray);

// 画像を二値化する
HObject imageBin;
HOperatorSet.Threshold(imageGray, out imageBin, 128, 255);

// 画像を表示する
HOperatorSet.DispObj(imageBin);

// メモリを解放する
HOperatorSet.ClearObj(image);
HOperatorSet.ClearObj(imageGray);
HOperatorSet.ClearObj(imageBin);

まず、ReadImage関数を使用して、”input.jpg”というファイル名の画像を読み込んでいます。

次に、Rgb1ToGray関数を使用して画像をグレースケールに変換しています。

その後、Threshold関数を使用して画像を二値化しています。

Threshold関数は、グレイ値 g が以下に示す条件を満足するピクセルを入力画像から選択します。 

下限値 ≦ g ≦ 上限値

Threshold関数の第3引数には、閾値の下限値を指定し、第4引数には閾値の上限値を指定します。

この場合、輝度値128を閾値としています。

最後に、DispObj関数を使用して二値化された画像を表示し、使用したオブジェクトをクリアしています。

このようにすることで入力した画像から2値化した画像を出力することができます。

まとめ

画像の二値化は、画像処理において基本的な処理の1つであり、HALCONを使って簡単に実装することができます。

Threshold関数を使用することで、指定した閾値を基準に画像を2値化することができます。また、グレースケールに変換することで、RGBカラー画像でも二値化を行うことができます。

二値化は、画像の前処理としてよく使用され、画像中の対象物を抽出するために必要な処理です。

しかし、閾値を適切に設定しないと、画像中の重要な情報を失うことになるため、適切な閾値の決定が重要です。

また、画像の明るさやコントラストが異なる場合には、閾値を自動的に決定する方法もあります。

これらの手法については、別の機会に詳しく説明していきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です