Apple の Vision Alignment API をテストしていて、VNHomographicImageRegistrationRequest に関して質問があります。誰かがそれを機能させましたか?そこから warpTransform を取得できますが、意味のあるマトリックスをまだ見ていません。つまり、画像を元の画像にワープする結果を取得できません。ワープを処理するために Opencv warpPerspective を使用しています。
変換を取得するためにこれを呼び出しています。
class func homography(_ cgImage0 : CGImage!, _ cgImage1 : CGImage!, _ orientation : CGImagePropertyOrientation, completion:(matrix_float3x3?)-> ())
{
let registrationSequenceReqHandler = VNSequenceRequestHandler()
let requestHomography = VNHomographicImageRegistrationRequest(targetedCGImage: cgImage1, orientation: orientation)
let requestTranslation = VNTranslationalImageRegistrationRequest(targetedCGImage: cgImage1, orientation: orientation)
do
{
try registrationSequenceReqHandler.perform([requestHomography, requestTranslation], on: cgImage0) //reference
if let resultH = requestHomography.results?.first as? VNImageHomographicAlignmentObservation
{
completion(resultH.warpTransform)
}
if let resultT = requestTranslation.results?.first as? VNImageTranslationAlignmentObservation
{
print ("translation : \(resultT.alignmentTransform.tx) : \(resultT.alignmentTransform.ty)")
}
}
catch
{
completion(nil)
print("bad")
}
}
これは機能し、ホモグラフィ行列を出力しますが、その結果は、SIFT + Opencv findHomography ( https://docs.opencv.org/3.0-beta/doc/tutorials/features2d/feature_homography/feature_homography. html )
画像のペアに関係なく、Apple Vision データセットから妥当なホモグラフィック結果を得ることができません。
前もって感謝します、