【HALCON】add_image 関数について - 2つの画像を加算する

【HALCON】add_image 関数について - 2つの画像を加算する

2024-08-23

2024-08-23

HALCONadd_image関数は、2つの入力画像を加算し、その結果を新しい画像として出力するための関数です。この関数は、画像の合成やフィルタリング後の補正、エフェクトの生成など、様々な場面で使用されます。

たとえば、2つの異なる画像を重ね合わせる場合や、異なる画像フィルタリング結果を組み合わせて調整する際に利用されます。add_image関数は、各ピクセルのグレースケール値をスケーリングし、それらを加算して結果を出力します。

使用例

次に、add_image関数を使用して2つの画像を加算し、その結果を表示する例を示します。

* 画像1と画像2を読み込む
read_image(&Image1, "image1.png")
read_image(&Image2, "image2.png")

* 画像を加算する
add_image(Image1, Image2, &ResultImage, 1.0, 0.0)

* 結果を表示する
disp_image(ResultImage, WindowHandle)

このコードでは、read_image関数で2つの画像を読み込み、それらのピクセル値を1.0倍にスケーリングして加算した後、disp_image関数で結果を表示しています。

引数

  • Image1
    最初の入力画像。グレースケール画像または複数チャネルの画像である必要があります。

  • Image2
    加算する2つ目の入力画像。Image1と同じ形式の画像である必要があります。

  • ImageResult
    加算結果を格納する出力画像。この画像には、2つの画像のピクセルごとの加算結果が保存されます。

  • Mult
    スケーリング係数。各ピクセルのグレースケール値に適用されるスケーリング係数で、通常は1.0に設定されます。必要に応じて他の値を指定することも可能です。

  • Add
    加算値。各ピクセルの結果に追加される定数で、全体の輝度を調整するために使用します。デフォルトは0.0です。

出力

add_image関数の出力は、2つの入力画像のピクセルごとの加算結果です。結果はImageResultとして返され、新しい画像として表示したり、次の処理に使用することができます。

応用例

エフェクトの生成

add_image関数は、画像処理でのエフェクト生成に使用できます。たとえば、2つの画像を重ね合わせて輝度やコントラストを調整することができます。以下のコードは、スケーリングと加算値を変更して、画像の輝度を調整する例です。

* エフェクトを強調するためにスケーリング係数を使用
add_image(Image1, Image2, &ResultImage, 0.5, 10.0)

この例では、Image1のグレースケール値を0.5倍し、各ピクセルに10.0を加算することで、明るさを調整した結果を得ています。

複数チャネル画像の処理

add_image関数は、複数チャネルの画像処理にも対応しています。RGB画像などでは、各チャネルごとに加算処理が行われ、合成された結果が出力されます。

* RGB画像のチャネルごとに加算
read_image(&Image1, "rgb_image1.png")
read_image(&Image2, "rgb_image2.png")

add_image(Image1, Image2, &ResultImage, 1.0, 0.0)

このコードでは、RGB画像の各チャネルの値を加算し、新しい合成画像を生成しています。

並列処理の活用

HALCONのadd_image関数は、SIMD技術やOpenCLを使用した並列処理にも対応しており、大規模な画像データの処理にも最適です。これにより、複数の画像を効率的に処理し、リアルタイムの画像解析でも高速な処理が可能です。

* OpenCLを使用して加算処理を高速化
set_system("opencl_device", "gpu")

add_image(Image1, Image2, &ResultImage, 1.0, 0.0)

このコードでは、OpenCL対応デバイスを使用して、GPUで加算処理を高速化しています。GPUを使用することで、複数の画像を一度に処理する場合でも、パフォーマンスを大幅に向上させることができます。

注意点

add_image関数を使用する際、注意すべき点として、各ピクセルのグレースケール値がスケーリングされた後に加算されるため、値がオーバーフローやアンダーフローを起こす可能性があります。特に、結果画像のダイナミックレンジが入力画像の範囲を超える場合は、適切なスケーリングや範囲制御が必要です。

また、複数チャネル画像を処理する際は、各チャネルの加算結果が予期しない色合いになる可能性があるため、チャネルごとのバランスを確認しながら加算処理を行うことが推奨されます。

まとめ

HALCONadd_image関数は、2つの画像を加算し、新しい画像を生成するための便利なツールです。グレースケール値のスケーリングや加算値の調整により、画像の合成やエフェクト生成が容易になります。並列処理技術やOpenCLのサポートにより、大規模な画像データの処理にも効果的で、リアルタイム画像処理においても有効に活用できます。

Recommend