1. HOME
  2. 【画像処理マスターへの道】 サンプルコード再発見 ~リージョン活用テクニック集~

装置メーカー 画像処理ソフト

【画像処理マスターへの道】
サンプルコード再発見
~リージョン活用テクニック集~

画像処理に関連するさまざまな情報をお届けする連載です。
今回は、画像処理ライブラリのリファレンスに掲載されているサンプルコードの中から、リージョン関係の処理をまとめてご紹介します。

 

 

はじめに

画像処理ライブラリWILをインストールすると、スタートメニューの「FAST WIL 3.1.0」フォルダにいくつかのショートカットが登録されます。今回はその中の「FIE Reference」に掲載されているサンプルコードの中から、リージョンに関連するものを取り上げます。
(左側のツリーで[モジュール]-[FIE module]-[サンプルコード]と辿ります。)

ここには、各関数の基本的な使い方のサンプルがカテゴリごとにまとめられているだけではなくて、複数の関数を組み合わせた「応用サンプルコード」もいくつか掲載されています。関数から探すだけではなく、目的に応じて関数を探す際の一助としてお役立ていただければ幸いです。

 

リージョンとは

画像の中の矩形に限らない任意の形状の領域のことをリージョン(region)と呼びます。
例えば、2値ブロブ解析で取得したブロブをリージョンに変換して、そのリージョン内の画像統計値(濃度値の最大/最小値や平均値、標準偏差など)を解析することで、色味による分類や検査などに使用されます。
また、特定の領域を処理したい(または処理から除外したい)ときの指定にも使用されます。

 


 

リージョンの作成

2値ブロブ解析の結果からリージョンを作成する他、一般形状(矩形や円、楕円、多角形など)から決まった形状のリージョンを作成したい場合があります。この用途にはfnFIE_create_region_xxx()シリーズの関数が用意されています。
(参照:[モジュール]-[FIE module]-[リージョン処理]-[リージョン作成])

処理結果画像例

左から順にfnFIE_create_region_rect()、fnFIE_create_region_circle()、
fnFIE_create_region_ellipse()、fnFIE_create_region_polygon()の処理結果画像例(fnFIE_region_decode()で画像に描画した結果)

ペイントのような画像編集ツールには、クリックした位置の類似色の領域を取得する機能があります。この機能の再現のヒントとなる応用サンプルコードが「マジックワンド風リージョン取得」と「指定した点を囲む輪郭を元にリージョンを作成」です。

1つ目の「マジックワンド風リージョン取得」は、画像内の指定された座標と同じような色の領域を取得するサンプルコードです。指定された座標から取得した濃度値(色情報)から範囲を算出して、2つの固定閾値を用いたセグメンテーション処理(バンド閾値2値化)を行い、2値ブロブ解析を経てリージョンを取得します。

「マジックワンド風リージョン取得」の動作イメージ

「マジックワンド風リージョン取得」の動作イメージ
黄色の円で示された座標と似た色の範囲で2値化して、その座標を含む領域(右図の青色部分)を取得
画像の右上にも似た色の領域はあるが、ブロブとして分離しているので除外される

 

2つ目の「指定した点を囲む輪郭を元にリージョンを作成」は、色情報よりもエッジ情報を使用して指定された座標を囲む輪郭の領域を取得するサンプルコードです。エッジを検出して連結、クラスタ情報によるフィルタリング、折れ線化を行い、多角形リージョンを取得します。

「マジックワンド風リージョン取得」の動作イメージ

「指定した点を囲む輪郭を元にリージョンを作成」の動作イメージ
検出したエッジを利用して多角形の輪郭を作り、その座標を含む領域(右図の青色部分)を取得
画像の右上にもエッジの輪郭で囲われた領域があるが、輪郭として分離しているので除外される


 

処理範囲としての使用

ブロブと同様にリージョンの主に形状に関する特徴量をfnFIE_region_{calc/get}_xxx()シリーズの関数で取得できる他、画像とリージョンをセットで入力してリージョン内の統計値を計算する関数群が用意されています。例えば、リージョン内の濃度値のヒストグラムや総和、最大/最小値、平均値、標準偏差、濃淡重心などです。(参照:[モジュール]-[FIE module]-[リージョン処理]-[特徴量計算]と[画像特徴量計算])

リージョン内の濃度値の平均値を計算するfnFIE_img_meanpixel()のサンプルコードの処理結果例

リージョン内の濃度値の平均値を計算するfnFIE_img_meanpixel()のサンプルコードの処理結果例
左から順に入力画像、生成した3個のリージョンを入力画像に白で描画した画像、
3個のリージョン内の濃度値の平均値を取得してその±5の範囲で2値化した画像

 

画像処理フィルタの処理範囲は矩形(FIEではチャイルド画像、WILではCFviImage.Window)が基本ではありますが、上記は画像の統計量を計算する範囲として任意の形状のリージョンで指定する関数に相当します。その他の画像処理フィルタでもやや間接的な方法ながら任意形状の処理範囲を実現することができます。

エッジ検出とリージョン

エッジ検出を利用する処理では任意形状のリージョン内のエッジを除去または抽出したいときがあります。

例えば、エッジベースの特徴点対応マッチングのFPMでは、サーチパタンに対して不要なエッジを無視するfnFIE_fpm_set_pattern_mask()関数があります。
(参照:[モジュール]-[FIE module]-[サーチ]-[FPM]-[パタン操作]-[関数])

一方で、対象画像の特定の範囲の中からFPMでサーチしたいときや、エッジ情報を利用した処理(円近似や直線近似など)で特定の範囲のエッジ情報のみに限定したいときなどに対しては、fnFIE_refilter_edge_by_mask()関数を利用できます。
(参照:[モジュール]-[FIE module]-[ビジョンツール]-[2次元エッジ操作]-[関数])

もちろん後者の用途では、2次元エッジ検出でなくてfnFIE_edge1d_radial()関数などの1次元エッジ検出への置き換えも選択肢の一つです。

fnFIE_refilter_edge_by_mask()のサンプルコードの処理結果例

fnFIE_refilter_edge_by_mask()のサンプルコードの処理結果例
左から順に入力画像、指定したリージョン部分以外を白で塗りつぶした参考画像、検出したエッジ可視化画像、
リージョンでフィルタした結果のエッジ可視化画像

 

各種画像処理フィルターとリージョン

平滑化などの前処理フィルタに対する最も単純な方法は、画像全体を処理してから特定の領域のみをマスク転送で書き戻す方法が考えられます。しかしこの方法は、リージョンの境界部分で範囲外をフィルタの計算で参照してしまい、意図した結果とならないことがあります。

この影響を解消するべく開発された関数がfnFIE_calc_nearest_pixel_region_excludes()です。多くの画像処理フィルタで画像端の部分の処理方法をborder_modeの引数で指定できます。ボーダー拡張しないF_BORDER_NONEでは画像端の外周部分は処理されませんが、F_BORDER_CONTINUOUSで端延長モードとすると画像端の値でボーダー拡張して処理できます。本関数はこの端延長モードと類似のことを任意形状のリージョンに対して再現しようとした関数です。
(参照:[モジュール]-[FIE module]-[リージョン処理]-[ツール]-[関数])

 

  1. 処理から除外したい範囲のリージョンを作成
  2. 本関数でリージョン内を埋めるのに参照するリージョン外の座標(ワープマップ)を計算
  3. ワープマップで、リージョン外はそのままに、リージョン内は最短のリージョンを参照して転送
  4. 任意の画像処理フィルタを適用
  5. リージョンをマスク画像に変換して、元画像からリージョン内をマスク転送

 

次図はサンプルコードの処理結果例です。

左端の入力画像に対して、中央の明るい円形部分を処理から「除外したい範囲のリージョン」として、上記のフローで平均化フィルタ(15×15)を掛けたものが中央の出力画像です。

比較画像は、上記フローの2.と3.のワープマップの計算と転送をスキップしたときの結果です。リージョン内が明るいことの影響で、リージョン外の周辺部分が明るくなってしまっていることがわかります。

サンプルコードの処理結果例

サンプルコードの処理結果例
左から順に入力画像、出力画像、比較画像

 


 

まとめ

今回はライブラリのリファレンス(FIE Reference)に掲載されているサンプルコードを、リージョンの作成から処理範囲としての活用までのリージョン特集の形で改めてご紹介しました。

これらは極一部で、リファレンスには各関数の使い方となる基本的なサンプルコードの他、複数の関数を組み合わせた目的別の「応用サンプルコード」の掲載がある他、「ファースト製品 サンプルプログラムダウンロード」(各画像処理ライブラリの製品ページの「サンプルプログラムダウンロード」のリンクから移動できます)にも多数の掲載がございます。あわせて、目的から手段となる関数を探す際の一助となれれば幸いです。

また、いずれの関数も想定される用途があって開発されたもので、皆様からのご相談・ご要望が新しい機能のモチベーションですから、ぜひちょっとしたご相談でもお問合せフォームやサポート窓口まで、お気軽にご連絡いただけますと幸いです。

 


 

リンク類

 

関連製品

関連記事 一覧

装置メーカー 画像処理ソフト

【画像処理マスターへの道】AIを使いこなす鍵は、“弱点の補完”にあり!

装置メーカー 画像処理ソフト

【画像処理マスターへの道】ライティングとフォトメトリックステレオ法の最前線―― CCS × TED 技術対談「第1弾」

装置メーカー 画像処理ソフト

【画像処理マスターへの道】ライブラリ新機能のご紹介~ピント合わせのお悩み解決~

装置メーカー 画像処理ソフト

【画像処理マスターへの道】二光束干渉が切り拓く3次元計測と、画像処理を支える最新ライティング技術―― CCS × TED 技術対談「第2弾」

装置メーカー 画像処理ソフト

【画像処理マスターへの道】実は身近で使われている画像処理

装置メーカー 画像処理ソフト

【画像処理マスターへの道】次の一歩を手前の一歩から考える~分割点灯の照らす世界~

装置メーカー 画像処理ハード

【画像処理マスターへの道】画像処理装置に新しいファミリーが増えています!

装置メーカー 画像処理ソフト

【画像処理マスターへの道】研究トレンド最前線 ~ブレイク直前の技術を先取り!~

装置メーカー 計測・検査・位置合わせ

【画像処理マスターへの道】高精度位置決めリベンジ報告~めざせ、サブミクロンを1回で~

装置メーカー 計測・検査・位置合わせ

【画像処理マスターへの道】高精度位置決め実験レポート~超精密ステージで1μmの壁に挑む!

お見積り・資料請求・
技術的なお問い合わせ等

PAGE TOP