サーマル画像とカメラ画像の重ね合せ方法

2017年5月21日 - 未分類

Lepton ModuleSeek Thermalで熱画像が撮影できます。

サーマル画像

しかし、熱画像は画素も粗く、熱分布しか映らないので、どこがどこなのかよく分かりません。そこで、カメラ画像と合成して、どこの場所の温度なのか分かるようにします。

カメラ画像

カメラ画像の上に、サーマル画像を拡大、移動して重ねてみました。

なんとなく、合っているような気もしますが、もっと正確に一致させる方法を考えてみました。

 

基本的に、2枚の画像の重ね合わせはアフィン変換でできます。アフィン変換のマトリックスを求めればいい訳です。アフィン変換のマトリックスは3行3列なので、3点の一致点が分かれば算出できます。Pythonのコードでは、OpenCVを使えばgetAffineTransformで簡単にできます。


import cv2
import numpy as np
img = cv2.imread('lena.jpg',1)
rows,cols,ch = img.shape
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
M = cv2.getAffineTransform(pts1,pts2)
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('input',img)
cv2.imshow('output',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

では、どのようにすれば正確な3点の一致点を得ることができるでしょうか?

点熱源が3つ必要になります。100円ライターでもいいですが、できれば、固定して使える点熱源がいいでしょう。いろいろ探してみました。やはり電子的に熱を発生させるほうが使いやすそうです。

電子ライター

AMAZONに電子ライターというものが売られていました。1個、725円で、1回の充電で100回ほど、タバコに火が点けられるというものです。これを3個購入しました。

三箇所に両面テープで貼りつけます。電子ライターを購入して分かったのですが、10秒で自動的に電源が切れる仕組みのようです。なので、3つ同時に点けることができませんでした。仕方がないので、ひとつづつ点火して3枚の画像を撮影して、1枚に合成しました。最初に、電子ライターを付けない状態での背景画像を撮影して差分を取って、合成です。

点熱源のサーマル画像

ノイズも映っていますが、点熱源の位置は判別できます。二つの点で映っていることころがありますが、これは、消火後にケーツに入った状態でも、熱が残っているからです。上の点が正しい位置です。手動で点熱源のピクセル位置を測定します。PhotoShopとかImageMagickでできます。

得られたアフィンマトリックスは、


M= [
[ 3.0437788 0.05069124 46.53686636]
[ -0.09965438 3.10829493 35.31739631]
]

でした。この行列を使って合成画像を作成できます。

これで、サーマル画像とカメラ画像の位置合わせができました。

Translate »