こんにちは、eSOL エンジニアリング本部Medical課のS.Yです。
Medical課では、医療機器や研究向け製品をはじめとした医療・科学分野のエンジニアリングサービスを提供しています。
このブログシリーズでは、医療や科学分野において活用される画像認識技術や、それに付随する基礎的な画像処理技術について学ぶ社内勉強会において私が得た知見についてご紹介しています。
第5回(前回)では、タイリングについて紹介しました。
最終回となる第6回では、複数の位置にピントを合わせた画像を合成して、複数位置にピントが合っているような画像を作成する「焦点合成」について取り上げます。
1. 焦点合成とは
焦点合成とは、焦点(ピント)位置の違う複数の画像を合成して、撮影範囲全体にピントが合った画像を作成する技術です。
カメラの焦点は厳密には被写体のある一点にしか合わず、その点よりもカメラからの距離が近い位置や遠い位置はぼやけて写ります。
被写体同士の距離が近く、片方に焦点を合わせたときに焦点からもう一方の被写体までの距離が小さい場合は、人間の目ではぼやけ具合が判別できず両者にピントが合っているように見えます。
しかしながら、被写体同士の距離が離れている場合はその両者にピントが合っているように見せることは難しく、片方の被写体はぼやけて見えてしまいます。
このようなケースでも、被写体の数だけピントが合っている画像を用意することで、あたかもすべての被写体にピントが合っているかのような画像を作成できるのが焦点合成技術です。
医療や科学分野では、Zスタック画像と呼ばれるZ軸方向(奥行き方向)に連続して撮影した複数画像の合成などに用いられます。

図6-1-1 被写体同士の距離が遠い撮影イメージ図

図6-1-2 焦点合成のイメージ図
2. 焦点合成の手順
焦点合成は、以下のような手順で行いました。
- 合焦点領域の検出
- 合焦点領域の抜き出し
- 合焦点領域の合成
- 合焦点領域の検出
合焦点合成を行う上で、まず各画像の全画素のうち画像合成に採用する画素を決定する必要があります。
撮影範囲全体にピントが合った画像を作成するのが目的なので、各画像に対して焦点が合っている領域(合焦点領域)を採用画素として検出します。
詳細な手順とサンプル画像に対して実際に合焦点領域の検出を行った結果は、3章でご紹介します。
図6-2-1 合焦点領域検出のイメージ図
- 合焦点領域の抜き出し
合焦点領域を検出したら、それらを合成するために抜き出します。
①で焦点が合っている領域を画素単位で検出できていれば、それらの画素のみを残して他の画素を黒塗りすることで抜き出すことができます。
詳細な手順とサンプル画像に対して実際に合焦点領域の抜き出しを行った結果は、4章でご紹介します。
図6-2-2 合焦点領域抜き出しのイメージ図
- 合焦点領域の合成
すべての画像に対して①と②を実施し、複数の合焦点領域を取得できたら、最後にそれらをすべて合成して焦点合成は完了です。
詳細な手順とサンプル画像に対して実際に合焦点領域の合成を行った結果は、5章でご紹介します。
3. OpenCVを使った合焦点領域の検出
焦点が合っているかあっていないかの判断基準には、画像のコントラストを使いました。
画像のコントラストとは明暗の差のことであり、明るい部分がより明るく、暗い部分がより暗く写っている画像はコントラストが高いと言えます。
同じ被写体を撮影して、その被写体に焦点が合っている画像と合っていない画像を比較すると、焦点が合っている画像の方はコントラストが高くなります。
このように、コントラストと「焦点が合っているかどうか」は密接に関係するため、カメラのオートフォーカス機能などにもコントラストが使われています。
焦点合成では、合焦点位置の異なる複数画像を用意して合成します。
すべての画像で撮影範囲が一致しているのであれば、画像をいくつかの領域に分けて領域ごとにコントラストを比較することで、どの画像がどの領域に焦点が合っているか調べることができます。
3.1. コントラスト比の取得
画像中の最小輝度値と最大輝度値の比は「コントラスト比」と呼ばれ、コントラストの高さを定量的に表現するために用いられます。
OpenCVではCv2.MinMaxLocというメソッドにより画像中の最小輝度値と最大輝度値を取得することができます。
画像データを指定することで最小輝度値と最大輝度値の両方を取得できるため、その比を計算するだけでコントラスト比を取得できます。
例えば図6-3-1の2枚の画像では、左側が最小輝度値0、最大輝度値255と得られ、右側が最小輝度値2、最大輝度値254と得られました。
最小輝度値が0の場合はコントラスト比が計算できなくなるため、最小輝度値と最大輝度値をそれぞれ1加算してからコントラスト比を算出したところ、図6-3-1の左側が256、右側が85と得られました。
中央の花に焦点が合っている左側の方のコントラスト比が高いというのがわかります。
図6-3-1 コントラスト比
3.2. 合焦点領域の検出
画像中には焦点が合っている被写体と合っていない被写体が含まれるため、画像全体でコントラスト比を計算するのではなく、以下の手順で画像をいくつかの領域に分けてコントラスト比を取得し、コントラスト比較を行います。
今回は基準となる1枚目の画像(基準画像)と比較して、2枚目の画像(比較対象画像)のコントラスト比が高い領域を「合焦点領域」として検出することにしました。
下記手順で合焦点領域検出を行うプログラムを実装しました。
- 基準画像と比較対象画像をいくつかの領域に切り分ける
- 切り分けた領域ごとに両画像のコントラスト比を算出して比較する
- 基準画像よりも比較対象画像のコントラスト比が高い領域を検出
図6-3-2の2枚の画像は、4つの微細藻類のうち3つを平滑化フィルタでぼかすことで、疑似的に1つの微細藻類のみに焦点が合っているように加工した画像です。
左側の画像は中央上側の微細藻類のみ明瞭に見えているのに対して、右側の画像は中央下側の微細藻類のみ明瞭に見えており、撮影範囲は同じで焦点領域が異なるような画像になっています。
実装したプログラムを使って、実際に左側を基準画像、右側を比較対象画像として合焦点領域検出を行いました。
図6-3-2 焦点領域の異なる2画像(微細藻類)
7画素×7画素の領域毎にコントラスト比を比較し、比較対象画像のコントラスト比が高い領域のみ赤い枠で囲んだ結果が図6-3-3です。
比較対象画像で焦点が合っている中央下側の微細藻類に赤い枠が集まり、想定通り比較対象画像の合焦点領域を検出できているのがわかります。
図6-3-3 合焦点領域検出の結果
4. OpenCVを使った合焦点領域の抜き出し
4章では、3章で検出した合焦点領域を画像から抜き出します。
合焦点領域は小さな赤い枠の集まりとして得られていましたが、抜き出す領域を明確にするためにはこれらの赤枠すべてを囲む大きな矩形を考える必要があります。
この矩形は、赤枠の各辺で最も外側にある辺、右側の辺であれば最もx座標が大きい辺、左側の辺であれば最もx座標が小さい辺を探すことで取得できます。
実際に合焦点領域を囲む矩形を画像中に描いたのが図6-4-1の右側です。

図6-4-1 合焦点領域を囲む矩形を取得
続いて合焦点領域を抜き出すためのマスクを作成します。
図6-4-2の左側は、図6-4-1で取得した合焦点領域の矩形内の画素を白、それ以外の画素を黒としたマスク画像です。
右側の画像は、このマスク画像を使って微細藻類の画像からマスク部分のみを抜き出すイメージで作成した画像です。
OpenCVでは、CopyTo()メソッドに対象の画像とマスク画像を指定することで、画像から特定範囲のみを抜き出すことができます。
実際にCopyTo()メソッドに比較対象画像と図6-4-2のマスク画像を指定し、抜き出した結果が図6-4-2の下側の画像です。
比較対象画像から合焦点領域のみを抜き出すことができました。

図6-4-2 合焦点領域の抜き出し
5. OpenCVを使った合焦点領域の合成
3章では基準画像と比較対象画像のコントラスト比を比較することで合焦点領域を検出し、4章ではその合焦点領域を抜き出しました。
5章では、基準画像に対して比較対象画像から抜き出した合焦点領域を置換することで焦点合成画像を作成します。
5.1. 2画像の焦点合成
基準画像のうち比較対象画像の合焦点領域のみを置換するために、まずは基準画像の置換したい部分のみを黒塗り(画素値を0)にする必要があります。
これは、4章で使用した合焦点領域のマスク画像の白い領域と黒い領域を反転させたマスク画像を用意することで実現できます。
OpenCVのCopyTo()メソッドに基準画像と上記反転マスク画像を指定して作成した画像が図6-5-1の左側です。
比較対象画像の合焦点領域に対応するマスク部分のみを黒塗りにすることができました。
この画像と、4章で合焦点領域のみ抜き出した比較対象画像を足し合わせることで焦点合成画像を作成することができます。

図6-5-1 合焦点領域の合成
実際に焦点合成を行った結果が図6-5-2の下の画像です。
基準画像で焦点が合っている中央上側の藻と、比較対象画像で焦点が合っている中央下側の藻の両方に焦点が合っているような画像を作成することができました。

図6-5-2 焦点合成結果
5.2. 複数画像の焦点合成
ここまで基準画像1枚と比較対象画像1枚で焦点合成の流れを説明してきましたが、比較対象画像を複数用意して基準画像との焦点合成を繰り返すことで、複数画像の焦点合成を行うこともできます。
図6-5-3は、図6-3-2と同様に疑似的に1つの微細藻類のみに焦点が合っているように加工した画像で、4枚それぞれ異なる微細藻類1つのみが明瞭に見えるようにしたものです。
左上の画像を基準画像、それ以外の3枚を比較対象画像として、焦点合成を行った結果が図6-5-4の右側です。
期待通り4つすべての微細藻類に焦点が合っているような画像を作成することに成功しました。

図6-5-3 基準画像(左上)と3枚の比較対象画像

図6-5-4 複数画像の焦点合成結果
6. 最後に
第6回では焦点合成についてご紹介しました。
焦点合成にもいくつかの方法がありますが、今回は2枚の画像を基準画像と比較対象画像に分けてコントラスト比を比較し、比較対象画像のコントラスト比が高い個所を合焦点領域として基準画像に合成するという方法をとりました。
コントラスト比を算出するために必要な最小輝度値、最大輝度値の取得や、合焦点領域の抜き出し、合成にはOpenCVのメソッドを使用しました。
撮影範囲が同じで焦点位置が異なる画像を用意するのが難しかったため、部分的に平滑化フィルタをかけて疑似的に焦点が合っていない領域を作った画像を複数用意して、実装したプログラムを適用してみました。
その結果、基準画像と比較対象画像の2画像の焦点合成だけでなく、1枚の基準画像に対して複数の比較対象画像を用意しての焦点合成も可能であることを確認しました。
このブログシリーズでは、6回にわたり医療・科学分野で活用される画像認識技術についてお話してきましたが、今回が最終回となりました。
これまでにご紹介した内容は、それぞれの画像認識技術の基礎的な知識ではありますが、どういった技術があるのか、どのように実現するのかを知る一助となれば幸いです。
また冒頭でご紹介した通り、eSOLは医療分野のエンジニアリングサービスを提供しており、豊富な実績があります。
医療分野のみならず、車載・産業などの幅広い領域における開発実績で身に着けた安全性の高い開発プロセスなどの知見や技術力は、お客様の求めるお客様が目指す高性能で高品質な開発を強力に支援します。
医療分野の製品開発で課題がある、今回ご紹介したような画像認識技術に関わる開発を実施したい、エンジニアリングサービスについて詳しく知りたい、という方はぜひお気軽にeSOLにご相談ください。
Medical課 S.Y

