テクニカルティップス

自動的にフォーカス

uEye LE USB 3.1 Gen 1 AF ボードレベルカメラがオートフォーカス対応になりました

新しいコントラストベースのオートフォーカスで、uEye LE AF ボードレベルカメラの用途範囲が広がります。オートフォーカスはこれらのカメラモデルの「アクティブ」液体レンズ制御に基づいており、ソフトウェアで簡単にトリガーできます。オートフォーカスは用途に応じて個別に設定できるので、即座に完璧にピントを合わせられます

uEye ソフトウェアをバージョン 4.92 にアップデートすると、uEye LE AF ボードレベルカメラのソフトウェアベースのオートフォーカス機能が実現し、これまで手動で制御していた液体レンズ制御が自動化されます。このため、被写体との距離が変動する用途でカメラを使用するチャンスが広がります。対象領域のサイズと位置を調整でき、さまざまな画像シャープネス測定アルゴリ

「uEye LE USB 3.1 Gen 1 AF」のオートフォーカスの一般的な使用方法の詳細は、IDS Software Suite 4.92 マニュアルを参照してください。uEye Cockpit の [Focus] ダイアログにあるすべての設定オプションは、uEye API 関数 is_Focus() を使用して、ユーザー固有のアプリケーションにも使用できます。マニュアルには、この関数の詳細な説明と、すべてのインターフェースパラメーターおよびソースコードのサンプルが記載されています。

アルゴリズムと多彩な設定オプションを備え、どのような状況でも目的のフォーカス範囲で、最適な画像シャープネスをすばやく確実に決定します。

テクニカルティップスでは、アプリケーションに最適なオートフォーカスの事前設定方法に関する、その他の情報やヒントを説明します。

uEye Cockpit の [フォーカス] ダイアログウィンドウ
uEye Cockpit の [フォーカス] ダイアログウィンドウ

オートフォーカス

オートフォーカスは、シャープな画像を得るためにカメラのレンズを被写体との正しい距離に自動的に調節する機能です。オートフォーカスシステムでは uEye LE AF ボードレベルカメラの液体レンズ制御を使用して、さまざまな距離に焦点を合わせます。 自動モードはソフトウェアトリガーで起動され、対象領域で最適なシャープネスが得られるまで機能します。その後、自動的に非アクティブになります (「シングルショット」処理)。 オートフォーカスは、ホスト PC 上の画像データ分析に基づいてカメラの液体レンズを閉ループで制御します。

最適なシャープネスを決定する制御の閉ループ
最適なシャープネスを決定する制御の閉ループ

この「閉ループオートフォーカス」と呼ばれる機能により、液体レンズとピクセルパス (コントラストやビニングなど) の設定が画像の内容に直接影響を与え、画像のシャープネス測定結果にも影響します。この評価を基にして、次に画像を撮影する前に液体レンズを調節します。このような画像ベースの方法では最適なフォーカス値を計算できないので、画像撮影、測定、焦点距離調整を含む閉制御ループを、あらかじめ数回通過させる必要があります。フォーカス値と計算された画像シャープネスから判定された値のペアの最初の分析から、関連するフォーカスフィールドの最適な (最大) 画像シャープネスを決定するヒントが得られます。

画像のフォーカスが調整されたとき

画像のシャープネスを測定する方法はいくつかありますが、基づく基本原則は 2 つだけです。最初の原則はエッジシャープネスです。隣接するピクセル間でグレー値が大きく異なる部分を実際の画像コンテンツから検索して、エッジまたは輪郭をハイライトします。これらのエッジのコントラストにより、画像のシャープネスを判定できます。エッジの画像が鮮明になると、基の画像のシャープネスのレベルも上がります。

2 番目の原則は、画像のヒストグラム値の分析に基づきます。標準偏差を使用して、画像の平均グレー値を中心とするピクセル値の偏差の程度を計算できます。偏差が大きければ、既存のグレー値のエッジと画像のコントラストが高くなります。 画像のフォーカスが外れると、グレー値の大きな差 (エッジ) は、傾斜を表す勾配とみなされます。 偏差と画像のコントラストは減少します。つまり、画像が鮮明になると、グレースケールの分布が広がり、画像のコントラストも高くなります。

  画像 ハイライトされたエッジ ROI のヒストグラム
フォーカスされた画像
フォーカスされていない画像

エッジが強く標準偏差が大きいと、コントラストとフォーカスレベルが高くなります。

画像シャープネスの測定

実際には、被写体の表面が光学的フォーカス測定に理想的であることは、ほとんどありません。このため、測定結果の信頼性が低く、不安定な場合がよくあります。ただし、uEye ソフトウェアのオートフォーカス機能により、さまざまな画像の状況でさまざまな測定方法を利用できます。 

オートフォーカスのアルゴリズム「Mean Score」と「Tenengrad」は、画像データを分析し、エッジシャープネスの原則を使用します。このために、隣接するピクセルとの関係も含めて、ピクセル単位で分析します。「Mean Score」は「Tenengrad」よりもシンプルなピクセル計算と小規模な隣接関係を使用します。このため、少し高速になりますが、「Tenengrad」アルゴリズムよりもノイズの影響を受けやすくもなります。

ヒストグラム偏差」は、対象領域 (ROI) のヒストグラム値を使用して画像シャープネスを判定します。全体的なアプローチなので、このアルゴリズムにはフィルター特性があります。シャープネス限度は、測定された値範囲での明度カーブとして表示されます。ノイズが結果に及ぼす影響はわずかです。ただし、探索されたフォーカス領域に短焦点の極大値がいくつかある場合、ヒストグラム偏差では明確に区別できません。ローパスと同様に、アルゴリズムによって極大値が被覆曲線に「平準化」されます。 「Tenengrad」と「Mean Score」での小規模なピクセル隣接の分析は、グレー値の変化への影響がはるかに小さくなります。そのためエッジは一層鮮明に表示されます。両方のアルゴリズムは個々の最大値を明確に区別して表示しますが、ノイズなどの干渉の影響を受けやすくなります。

「Tenengrad」と「ヒストグラム偏差」のシャープネス値の比較
「Tenengrad」と「ヒストグラム偏差」のシャープネス値の比較

計算原則が異なるため、3 つのアルゴリズムは、画像ごとのシャープネス値の計算時間も異なります。Sobel および Laplace フィルターなどの複雑なピクセル変換は、平均グレー値から、シンプルな標準偏差計算よりも高い計算負荷を生成します。広い範囲の画像領域 (広い対象領域) を分析すると、獲得したカメラフレームレートがすぐに低下してしまいます。シーンおよびアプリケーションの要件に応じて、使用できるアルゴリズムを選択して測定の速度と精度を変更できます。 計算方法としては「Mean Score」および「ヒストグラム偏差」のほうが、平均的な PC ハードウェアでの時間の制約がある計算に適しています。それに対して、Tenengrad の計算効率は、広範な測定ウィンドウでは、達成できるフレームレートを犠牲にすることになります。

対象領域とフォーカス範囲の設定

シャープネス測定は通常、対象領域 (ここでは「測定ウィンドウ」と呼びます) で実行されます。これは計算時間のスピードアップに役立ちます。

測定ウィンドウが大きくなると、ホスト CPU での画像ごとのシャープネス計算に必要な計算時間と電力が増加します。計算時間 (画像ごと) が長すぎると、設定されたフレームレートが減少します。高速フレームレートを達成するには、できるだけ小さい測定ウィンドウを選択します。

測定ウィンドウの一とサイズを指定し、フォーカス対象の画像コンテンツだけがマークされるようにします。焦点面は 1 つで、最大フォーカスも 1 つです。ただし、複数のローカルシャープネス極大値が指定した探索範囲にあり、終端条件のあるピーク探索アルゴリズムを使用している場合、このアルゴリズムは最初の明確な極大値が検出されると探索をその時点で終了します。

測定ウィンドウとフォーカス範囲には複数のフォーカス極大値が含まれることがあります。
測定ウィンドウとフォーカス範囲には複数のフォーカス極大値が含まれることがあります。

「正しい」フォーカスレベルの探索を正確に指定するには、次の方法があります。

1. レンズのフォーカス範囲を制限する

フォーカス測定を、アプリケーションで要求されるレンズのフォーカス範囲のみに制限します。レンズと画像シーンの距離と使用されるレンズの被写界深度に応じて、小さな領域でも十分です。また、必要なシャープネス計算が減少するので、最大探索時間も短縮されます。

レンズのフォーカス範囲の制限
レンズのフォーカス範囲の制限

フォーカス範囲の設定箇所が不明な場合は、測定された値のウィンドウと、小さなヒステリシス.があるフォーカス範囲全体の「フルスキャン」を表示することを推奨します。

2. 測定ウィンドウのサイズと位置を変更する

アルゴリズムでシャープネスを決定するには、少しの明確な特徴があれば十分です (小さな構造、明確なエッジ、明確なグレー値の分散)。測定ウィンドウが小さければ、フォーカスの決定が速くなり、フォーカス対象が 1 つの画像領域ならさらに明確になります。このため、測定ウィンドウをできるだけ小さく、必要なだけ大きくします。アプリケーションで被写体をフォーカスする画像の位置が再生可能なら、測定ウィンドウのサイズと位置をうまくプリセットできます。

測定ウィンドウのサイズと位置を確認します
測定ウィンドウのサイズと位置を確認します

極大シャープネスの検出

オートフォーカスの目的は、撮影した画像の測定ウィンドウ内のシャープネス値が最大となる、フォーカス設定をできるだけ迅速に見つけることです。これを検出するため、uEye ソフトウェアには複数の基本ピーク探索アルゴリズムが搭載されています。シーン (画像コンテンツ) または速度および画質の要件に応じて、適切なものを選択できます。 最も信頼性が高く、低速な方法は、各フォーカス設定を順番に設定し、一度に 1 つの写真を撮影し、そのシャープネスを確認することです。 最適なシャープネス値を見つける処理をスピードアップするには、さまざまな方法に従い、最初にフォーカス設定をスキップ (インターバル) して「ランダムサンプル」のみを撮影します。それ以降の処理の実行で、「ピーク」が見つかったら、これらをさらに精細にスキャンします。  個々のアルゴリズムでは中断条件によって探索時間が短縮されますが、最適な結果が得られるとは限りません。 このため、uEye ソフトウェアでは使用したい探索方法を選択できます。

オートフォーカスのフォーカス計算は画像コンテンツに基づいており、極大値を見つけるには複数の計測が必要なので、画像コンテンツが探索処理中に変更されてはいけません。

ピーク探索アルゴリズム   特性
黄金比探索
  • 探索領域を「黄金比」で分割して、極大値の探索範囲を絞り込みます。
  • 探索領域が大規模でも非常に高速な探索方法です。
  • 探索領域が広い場合、大まかに探索して極大シャープネスをスキップすることができます。事前に探索範囲を縮小するか、単峰形のシャープネス勾配 (シャープネス極大が 1 つだけ) のみを使用してください。
山登り法
  • 範囲の両端で、広い探索間隔で粒度の粗い探索を開始します。
  • シャープネス値が増加しなくなったところで「極大」を検出し、その後、シャープネス値が最初に減少したフォーカス領域で探索を中止します。
  • 探索間隔を狭めて、これ以降の探索実行で見つかった極大範囲での測定結果が絞り込まれます。
  • ヒステリシスより小さくなっ場合にのみ終了します。
  • 「グローバル探索」よりも高速
  • 最初に見つかった極大はグローバルな極大値ではない場合があります。
  • 探索領域が広い場合、大まかに探索して極大シャープネスをスキップすることができます。事前に探索範囲を縮小するか、単峰形のシャープネス勾配のみを使用してください。
グローバル探索
  • 範囲の両端で、広い探索間隔で粒度の粗い探索を開始します。
  • 探索領域全体で、粒度の粗い探索を実行します。
  • 探索間隔を狭めて、これ以降の探索実行で見つかった極大範囲での測定結果が絞り込まれます。
  • ヒステリシスより小さくなっ場合にのみ終了します。
  • 「フルスキャン」よりも高速です。
  • 探索領域が広い場合、大まかに探索して極大シャープネスをスキップすることができます。事前に探索範囲を縮小するか、単峰形のシャープネス勾配のみを使用してください。
フルスキャン
  • 探索方法を使用せず、1 つのパスで探索範囲全体でシャープネス値を計算します。
  • ヒステリシスは測定間隔を定義します。
  • 小さなヒステリシスでシャープネスのグローバルな極大値を確実に見 つけるので、「ブラインドサーチ」にも適しています。
  • 小さなヒステリシスと広い探索範囲では、時間がかかります。最悪の場合、1024 個のフォーカス値 (uEye LE AF のフォーカス設定の最大値) が決定されます。

探索アルゴリズムの特性

一部のアルゴリズムは、対象領域の被写界深度が不十分な場合、グローバル極大値がない場所に近接するフォーカス設定を探索します。このような場合、「グローバル探索」や「フルスキャン」のみが適しています。

極大探索の精度

ヒステリシスは、最大シャープネスの探索が停止する、最小ステップサイズを指定します。最大値探索で達成できる精度も決定されます。「フルスキャン」の場合のみ、ヒステリシスは探索領域全体のスキャンに使用される一定のステップ幅を指定します。

フォーカスカメラの使用事例

一般に、液体レンズとオートフォーカスを搭載した uEye LE AF ボードレベルカメラは、被写体との距離が変動するあらゆる用途に適しています。焦点面を手動またはカメラソフトウェアで自動調節すると、レンズを操作できない場合にも便利です。特にロボットアームなどのモバイル用途では、小型のボードレベルカメラは常に被写体やコードにピントを合わせて、ロボットが移動するたびに明瞭に読み取ります。

HALCON などの画像処理と組み合わせると、uEye オートフォーカスシステムの処理範囲はさらに広がります。 たとえば HALCON は、あらゆるフォーカス設定の画像について、すべてのフォーカスレベルで被写体を明瞭に示す、連続的にシャープな画像を計算します。露出 (High Dynamic Focus) ではなく、フォーカスに関連する「HDR」という画像です。

すべての焦点面上の被写体シーンを「スキャン」することで、HALCON はこのような画像のシャープネス測定に基づいて奥行き情報 (Depth from Focus) も計算できます。

すべての焦点面の焦点値から計算された、奥行き情報
すべての焦点面の焦点値から計算された、奥行き情報

この方法で、3D カメラがなくても被写体の体積も決定できます。  また、被写体が同じ床面にあるかどうかも確認できます。  uEye LE USB 3.1 Gen 1 AF と直接併用できる既製のフォーカス画像処理サンプルが、HALCON の標準インストールに付属しています。その他のコードサンプルや、フォーカス関数の詳細情報およびすべてのインターフェースパラメーターについては、IDS Software Suite 4.92 のマニュアルを参照してください。