前回は「最近のカメラだったら出来て当然」のお顔検出。今回も「できて当然」機能です。複数枚の写真を繋ぎあわせて「パノラマ画像」を作るような操作。Image Stitchingと唱えるようです。前々回でやったような画像特徴点を取り出して「同じ」とみなせる点を重ねていくみたいです。でもHELP例がエラーになるのよ。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※Windows11上の Scilab2024.0.0およびScilab上のScilab IPCVツールボックスを使用させていただいております。
imstitchimage関数とその処理例
今回、試用してみるのは imstitchimage関数です。関数の入力に複数枚の画像を詰め込んだリストを与えると、内部で画像特徴点を取り出して照合してくれ、対応する点を重ねて連結画像を生成して1枚の画像として吐き出してくれる関数です。
Helpファイルの処理例を拝見すると、IPCVインストールフォルダ内の /images/stitching/ に格納されている全6枚の画像を一気に重ね合わせようとしているみたいです。挑戦的?
なんなん、これは? どうも内部の処理でコケているみたいです。当方の設定がどこか良くないのか、それともPCのリソースが不足なのか?
当方で実行可能であった処理
「6枚を一気に」というところに多少の危惧を抱いた素人老人、まずは最低枚数ということで2枚からやってみることにいたしましたぞ。使用したコードが以下に。
S = list(); S(1) = imread(fullpath(getIPCVpath() + "/images/stitching/sk1.jpg")); S(2) = imread(fullpath(getIPCVpath() + "/images/stitching/sk2.jpg")); St = imstitchimage(S); scf(0); subplot(121); title('Left'); imshow(S(1)); subplot(122); title('Right'); imshow(S(2)); scf(1); title('Stitching'); imshow(St);
デモ用の画像2枚だけをとりだして imstitchimage してみました。何のことはありません。これならOKよ。結果はこんな感じ。
LeftとRightは、2枚の元画像です。光の当たり方も違うのか写真そのものの色合いも大分違う感じです。
下に並べたのが imstitchimage の結果です。お惚け老人にはちゃんとパノラマ画像化されとるように見えます。つなぎ目は分からん?
なお、上下の画像サイズは画面上、適当に手動でサイジングして並べただけなので縦横ピクセル数などいい加減です。
まあ2枚ならStitchingできるみたいね。6枚までのどこかでコケるのだろうけど、メンドイのでこの先はパス。めんどくさがりだな。