mrcal カメラ キャリブレーション ライブラリ

opencv よりも強力であると主張するライブラリは、自らを「次世代カメラ モデリング ツールキット」と呼び、これも C++ で書かれており、Python API を備えています。
ライブラリをインストールするのは死ぬほどで、Pythonよりもはるかに面倒です。ここの
インストールチュートリアルは、ubuntu22.04 で利用できます。

apt install mrcal libmrcal-dev python3-mrcal

そこで仮想マシンをインストールしてみました。
ただし、古いバージョンの Ubuntu を自分で設定することもできます。

古いディストリビューションの場合、または mrcal の最新リリースを入手したい場合は、mrcal APT リポジトリを使用できます。現在、
Debian/buster (10)
Debian/bullseye (11)
Debian/bookworm (12)
Debian/sid (最先端) Ubuntu/
bionic (18.04 LTS)
Ubuntu/focal (20.04 LTS)
Ubuntu/jammy (22.04)のパッケージを配布しています。 LTS)
amd64 および arm64 アーキテクチャのみ (amd64 のみである Ubuntu/bionic を除く)。これらを使用するには、/etc/apt/sources.list に追加します:
deb [trusted=yes] http://mrcal.secretsauce.net/packages/DISTRO/public/ DISTRO main
(DISTRO は
バスター
ブルアイ
ブックワーム
バイオニック
フォーカルの 1 つ)
ジャミー
それから、apt アップデート && apt インストール mrcalチェス盤コーナー ファインダーは、厳密には必須ではありませんが、チェス盤ベースのキャリブレーションを行う場合には必要です。適切なインストール mrgingham
なんというか、私は技術屋なので技術的なことばかりですが、このチュートリアルは非常にカジュアルかつ自由に書かれています。

Python APIはこちら
Pythonでパッケージ化されたgithubライブラリコードはこちら
豊富なチュートリアルはこちら
最初にバグに遭遇しました、その写真はコーナーポイントを識別できます、

mrgingham --jobs 4 --gridn 14 '*.JPG' > corners.vnl 

Gridn はチェッカーボードのサイズ、14 は 14x14 で、次のように書くことができます。

mrgingham --jobs 4 --gridn 9,6 '*.JPG' > corners.vnl 

corners.vnl は、corners.vnl ファイルに出力されます。
–jobs
このライブラリの 4 スレッド mrgingham コマンド

ポイントが検出された場合、corners.vnl は次のようになります。
ここに画像の説明を挿入します

その後

< corners.vnl       \
  vnl-filter -p x,y | \
  feedgnuplot --domain --square --set 'xrange [0:6000] noextend' --set 'yrange [3376:0] noextend'

vnl-filterはcorners.vnl内のx,y座標値をフィルタリングできるライブラリです。
feedgnuplot は絵を描くために使用され、x 座標値と y 座標値を絵上に描画します。
しかし、この 2 つのライブラリは mrcal の作者が書いたもののようで、本当に素晴らしいです。
ここに画像の説明を挿入します

ここに画像の説明を挿入します
上は元の画像、下は検出された角で、非常にきれいに見えます。
しかし、自分で使ってみたところ角は検出できませんでした。
ここに画像の説明を挿入します
私は狼です。

mrgingham は NxN 市松模様にしか適応できないためと思われます。
その後、別の実行メソッド mrcal-calibrate-cameras を見つけましたが、作者は、このメソッドは NxN 以外のチェッカーボードにも適用できると述べています。
実行後もバグが残っています。

mrcal-calibrate-cameras
    --corners-cache corners.vnl
    --lensmodel LENSMODEL_OPENCV8
    --focal 1700 --object-spacing 0.01 --object-width-n 10
    --outdir /tmp
    --pairs
    'left*.png' 'right*.png'

インストールされているライブラリのバージョンに問題があるようです。ここは非常に不快です。.local/lib/python3.10/site-packages/ のライブラリはなぜ呼ばれるのでしょうか? 私の仮想仮想環境は明らかに ~/anaconda3/envs/ChessBoardCornersDetection/ です。混乱した。

ここに画像の説明を挿入します
私の mrcal は apt install でビルドされているため、コマンドラインでは仮想環境のライブラリではなくシステムのライブラリを直接呼び出しているようですが、仮想環境を使いたい場合は、make を使って自分で mrcal ライブラリをビルドする必要があります。ラントさん。

しかし、このステップは調整のようです。コーナーを検出しません。このステップを実行する前に、まずコーナーを検出する必要があります。尻。

どういうふうに言えばいいでしょうか? Matlab はとても使いやすく、カメラのキャリブレーションに最適なツールです。
あなたの卑劣なミスターカルはとても迷惑です。
しかし、後でいくつかの比較実験を行ったところ、
opencv では認識できない画像もあり、MATLAB ではよく認識できる画像もあれば、MATLAB では認識が非常に悪い画像もありますが、opencv では非常に良好に認識できる画像もありました。それぞれに独自の長所と短所があります。
一般的に言えば、opencv の方が適応性が高くなりますが、matlab ではより大きな画像領域を占有するためにチェッカーボードが必要になります。チェッカーボードの傾斜角度は大きすぎてはなりません。
ということで、なぜ mrcal ライブラリが悪いのか分からないので、当面は手を付けません。
検出できない理由はピクセルに関係している可能性があります。結局のところ、作者が提供する画像は解像度が高いため、後でいくつか大きな写真を撮って試してみることができるかもしれません。

おすすめ

転載: blog.csdn.net/onlyyoujojo/article/details/135090611