GreyscaleDistance

カラーの In-Sight センサおよびカラーを有効にしたエミュレータのみに使用可能な GreyscaleDistance 関数は、次のさまざまなユーザ設定のカラーパラメータに基づいて、カラーの画像または対象領域 (ROI) 内の各ピクセルを、グレースケール値、つまり白黒に変換します。カラー表現 (赤、緑、および青、または色相、彩度、明度) および RGB または HSI カラーとしきい値に関するユーザ入力値です。グレースケール画像は、各ピクセルのカラーのユークリッド距離から得られます。

閉じたユークリッド距離に関する詳細情報

各ピクセルは 3 つの個別の色成分によって構成されています。RGB または HSI です。GreyscaleDistance 関数は、各ピクセルの全体的な RGB または HSI の値を計算し、「ユークリッド距離」を使用してその最も近いグレースケールの一致を検出します。ユークリッド距離は、ルーラで計測することができる 2 つの点の間の「通常の」距離として定義され、大部分のユーザが「距離」について話すときに指すものです。ユークリッド距離は、ピクセルの色成分の差の二乗の合計の平方根を取得することによって計算します。数式は次のとおりです。

式の内容:

x0 = プロパティシートの [カラー] セクションで、ユーザが指定した赤/色相の値

x1 = 入力ピクセルの実際の赤/色相の値

y0 = プロパティシートの [カラー] セクションで、ユーザが指定した緑/彩度の値

y1 = 入力ピクセルの実際の緑/彩度の値

z0 = プロパティシートの [カラー] セクションで、ユーザが指定した青/明度の値

z1 = 入力ピクセルの実際の青/明度の値

D の値は 0 ~ 442 であり、0 は完全一致を表し、442 は一致がないことを表します。それぞれの D の値を 3 (成分の数の平方根) で除算し、グレースケールスペクトラムに反転します。そこで 0 は黒 (一致なし)、255 は白 (完全一致) です。

:  ColorToGreyscaleFilter 関数と似てはいますが、GreyscaleDistance 関数はより多くのコントロールと柔軟性をユーザに提供します。1 つ大事なこととして、「不純な」色 (つまり、グレーまたは白を含んでいる色) は、「純粋な」色のみのフィルタを含んでいる ColorToGreyscaleFilter 関数よりも、GreyscaleDistance 関数を使用した方が良好に変換されます。両方で試してみて、アプリケーションに最適なカラー変換関数を決定する必要があります。

GreyscaleDistanceの入力パラメータ

Syntax:GreyscaleDistance(画像 ,フィクスチャ.行 ,フィクスチャ.列 ,フィクスチャ.角度 ,領域.X ,領域.Y ,領域.高さ ,領域.幅 ,領域.角度 ,カラー表現 ,カラー.赤/色相 ,カラー.緑/彩度 ,カラー.青/明度 ,しきい値.赤/色相 ,しきい値.緑/彩度 ,しきい値.青/明度 ,表示)

画像

この引数は有効なカラー画像データ構造体を含んでいるスプレッドシートのセルを参照している必要があります。デフォルトで参照されるセルは A0 で、このセルに AcquireImage 関数によって返される 画像データ構造体が含まれています。

:  : 有効なカラー 画像データ構造体を返す関数は、AcquireImage 関数だけです。
フィクスチャ

フィクスチャ入力、またはビジョンツール関数の画像座標系の出力に関連する対象領域 (ROI) を定義します。フィクスチャに関連する ROI を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して ROI を確実に回転または移動できます。

デフォルト設定は画像の左上隅で、(0, 0, 0) になります。

画像座標での行オフセットを指定します。
画像座標での列オフセットを指定します。
角度 画像座標での角度を指定します。
領域

これは対象領域 (ROI) とも呼ばれ、画像処理の対象となる画像の領域を指定します。変換および回転可能な矩形の画像領域を作成します。このパラメータを選択して、[領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。

X フィクスチャ座標での原点の X オフセットを指定します。
Y フィクスチャ座標での原点の Y オフセットを指定します。
高さ 領域の X 軸に沿った寸法を指定します。
領域の Y 軸に沿った寸法を指定します。
角度 フィクスチャ座標での角度を指定します。
:  [フィクスチャ] および [領域] パラメータは、画像の範囲内で定義されている必要があります。画像の範囲内で定義されていない場合、この関数は #ERR を返します。
カラー表現

カラー変換に使用するカラー表現を指定します。

0 = RGB (デフォルト) 赤、緑、青
1 = HSI 色相、彩度、明度
カラー

選択されたカラー表現に応じて、カラー変換に使用するカラーを指定します。3 つすべてのカラー値としきい値は、出力画像のピクセルの外観に反映されます。例えば、3 つのしきい値がすべて -1 に設定されている RGB 255-0-0 は、出力画像ですべての「純」赤のピクセルを白として表示し、その他の色はすべて、255-0-0 からのユークリッド距離に応じて暗いグレースケール値として表示します (例えば、白は暗く表されます)。

赤/色相 0 ~ 255 (デフォルト = 0) カラーの赤/色相の成分を指定します。
緑/彩度 0 ~ 255 (デフォルト = 0) カラーの緑/彩度の成分を指定します。
青/明度 0 ~ 255 (デフォルト = 0) カラーの青/明度の成分を指定します。
しきい値

選択されたカラー表現に応じて、各カラー座標の白黒 (「バイナリ」) のしきい値を指定します。

:  3 つのしきい値のデフォルトはすべて -1 であり、ユークリッド距離に基づいてグレースケールの出力画像を生成します。

[Threshold] パラメータが -1 よりも大きい整数に設定された場合は、指定されているしきい値に基づいて、出力は白黒の画像になります。

[Threshold] パラメータは「±」の値を表します。このしきい値は、上記の [カラー] セクションで指定されているカラー値との間で減算と加算が行われ、RGB または HSI 成分のしきい値の最小値と最大値を作成します。例えば、RGB または HSI の値を 200-100-50 に設定し、しきい値を 20-10-5 と設定した場合、しきい値の最大値と最小値はそれぞれ 220-110-55 および 180-90-45 となります。RGB または HSI の値がしきい値以内のピクセルは、白で表示されます。しきい値の範囲外のピクセルは、黒で表示されます。
赤/色相
-1 = 自動 (デフォルト) ユークリッド距離に基づいて、自動変換ルーチンを有効にします。
0 ~ 255 カラーの赤/色相の成分のバイナリしきい値を直接指定します。
緑/彩度
-1 = 自動 (デフォルト) ユークリッド距離に基づいて、自動変換ルーチンを有効にします。
0 ~ 255 カラーの緑/彩度の成分のバイナリしきい値を直接指定します。
青/明度
-1 = 自動 (デフォルト) ユークリッド距離に基づいて、自動変換ルーチンを有効にします。
0 ~ 255 カラーの青/明度の成分のバイナリしきい値を直接指定します。
表示

画像の上に表示されるグラフィックスオーバレイを指定します。

0 = 非表示 GreyscaleDistance 関数を含んでいるセルがスプレッドシート上でハイライトされている場合を除き、入力画像領域は表示されません。
1 = 結果のグラフィックスのみ 処理された画像が常に表示されます。
2 = 入力のグラフィックスのみ 入力画像領域が常に表示されます。

GreyscaleDistanceの出力

戻り値 処理済みの画像を含んでいる画像データ構造体。入力パラメータが無効であれば #ERR を返します。
結果 GreyscaleDistance 関数が初めてセルに挿入されると、スプレッドシート内に結果テーブルが自動的に作成されます。

GreyscaleDistanceデータアクセス関数

次のデータアクセス関数がスプレッドシートに自動挿入され、結果テーブルが作成されます。

暗ピクセル GetDarkPixelCount(画像) バイナリしきい値レベルを下回るピクセルの数
明ピクセル GetBrightPixelCount(画像) バイナリしきい値レベル以上のピクセルの数
:  3 つのしきい値がすべて -1 (デフォルト) に設定されている場合、前述の 2 つの関数は #ERR を返します。

GreyscaleDistance 関数の例

この例では、入力画像内の対象物は黄色の Cognex センサであり、ColorToGreyscaleFilter 関数の例でも使用されています。画像のランダムサンプリング ([表示] メニューで [オーバレイ] をクリックし、センサ上でカーソルを動かしてウィンドウの左下隅にあるステータスバーに RGB 情報を表示することで、オーバレイビューをオフに切り替えて実行します) は、このセンサについて 205-185-124、193-177-110、175-154-39、133-104-2、および 115-91-6 の RGB 値を表示します。

この例では、GreyscaleDistance 関数のシンプルな設定を使用して、グレースケール出力画像を生成します。

In-Sight スプレッドシートに関数を挿入した後、プロパティシートで「領域」という単語をダブルクリックして ROI を定義します。画像の上に赤い ROI ボックスが現れます。カーソルを使用してボックスを移動するかサイズを変更し、[ジョブの編集] ツールバーにある [OK] ボタンをクリックし、選択を確定してプロパティシートに戻ります。Enter キーを押すか、ROI 内をダブルクリックすることで、選択を確定することもできます。

RGB カラー表現を選択し、プロパティシートの [カラー] セクションにある [RGB] フィールドに「205-185-124」と入力して、そのほかのパラメータについてはデフォルト設定を受け入れ、プロパティシートで [OK] をクリックしてこの例の設定を完了し、関数を入力画像に適用します。

下記は、GreyscaleDistance 関数によって生成された出力画像です。RGB の値 205-185-124 は、センサの一部の領域と完全一致であるため、センサは非常に明るいピクセルで表されています。

ColorToGreyscaleFilter 関数の赤のフィルタを使用して生成された下記の画像と、上記の画像を比較します。下記の画像ではセンサが明るくなっていますが、上記の画像では強められているコントラストがありません。