ここ最近、画像処理関連のお仕事を行っていたので、そのメモです
ふとした相談で、現在工業用カメラを用いて機器の測定を行っているものを、そこそこの精度でいいから安くできないか? と言われたことから、今回の結構大変だったソフト作成が始まったのでした・・・
事の始まりは、工業用カメラで 0.2mm の隙間を10万分の 1mm という精度で測定していたものを、別用途で50分の 1mm 程度の精度でよいからということで、安い web カメラ(USB カメラ)で接写した画像を処理することで測定したらどうかと提案してしまったのです
工業用カメラは画像解像度が高く、ディストーション(歪曲収差)と呼ばれるレンズの特性からくるレンズ外縁部の画像の歪みが少ないため、非常に高価です(会社で使っていたものは1台300万円以上らしいです)
工業用の距離測定カメラはどんなに安くても10万程度するため、ちょっとした検討で複数台を使った装置を作ろうとすると、画処理用FA機器と組み合わせると100万円単位で費用が発生してしまいます
一方で、web カメラといえば近くの量販店に行けば3000円~8000円程度で買えるカメラですが、工業用カメラとは対照的に画像解像度は低く(3000円の web カメラで 640×480 程度)、ディストーションが大きく測定用途では歪みが影響しすぎて普通は使えません
しかし、画処理をPC上で行うことができれば、実質の費用は web カメラ数台分で済んでしまいます
(わたしが作成したものは、カメラを含むシステムよりメカ屋さんが作成した固定用の置台のほうが高くついてます・・・)
今回の測定ではそれほど精度が高い必要はないので、精度については接写することで満足できそうですが、ディストーションの影響は可能な限り小さくなるように補正する必要があります
そこで、OpenCV というオープンソースの画像ライブラリを組み合わせて利用することにより、ディストーションを補正して安い web カメラでもそこそこの精度で測定ができるようになります
今回のお話はかなり長くなるので、数回に分けてのお話になります
Part 1 では、カメラを扱う前の画処理について OpenCV をプロジェクトに組み込む方法を説明します