2

iOS Vision Framework のVNHomographicImageRegistrationRequest. 出来ますか?

これまでのところ、画像を修正していないように見える 3x3 ワープ マトリックスを取得しました。

ワープ マトリックスはどのように使用されるのですか (オンラインで例を見つけることができませんでした)。

さらに、画像の位置合わせは画像の修正とどう違うのですか (画像の修正は理解していますが、画像の位置合わせは理解していません)。

Xcodeプレイグラウンド:

import UIKit
import Foundation
import Vision

var li = UIImage(named: "left.png")
var ri = UIImage(named: "right.png")

let handler = VNSequenceRequestHandler()
let request = VNHomographicImageRegistrationRequest(targetedCGImage: li!.cgImage!, options: [:]) { (req, err) in
    let observation = req.results?.first as! VNImageHomographicAlignmentObservation
    print(observation.warpTransform)
}

try! handler.perform([request], on: ri!.cgImage!)

OpenCV 画像ワープ:

import numpy as np
import cv2

# read the pair of images
li = cv2.imread('left.png', 0)
ri = cv2.imread('right.png', 0)

# get the 3x3 warp matrix provided by Vision Framework
ios_vision_warp_mat = np.transpose(np.array([
    [0.746783, -0.0139349, -0.000149109],
    [-0.0426033, 0.861793, -2.39433e-05],
    [133.91, 22.0962, 0.999471]
]))

# warp the image
warped = cv2.warpPerspective(ri, ios_vision_warp_mat, (ri.shape[1], ri.shape[0]))
combined = cv2.addWeighted(warped, 0.5, li, 0.5, 0.0)

cv2.imshow('Combined pair', combined)
cv2.imshow('Unrectified pair', np.concatenate([li, warped], axis=1))

cv2.waitKey(0)
4

0 に答える 0