- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在测试 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 数据集中获得合理的单应性结果。
提前致谢
最佳答案
为了将来引用,我能够将 Apple 的单应矩阵与 Opencv 的矩阵相关联。基本上,Core Image 的图像原点是图像的左下角。 Opencv 的原点是左上角。要将 Core Image 的单应矩阵转换为 Opencv 坐标,需要应用以下变换:
H_opencv = Q * H_core_image * Q
where Q = [1 0 0; 0 -1 image.height; 0 0 1]
更新注释:
我将 Q 定义为行主矩阵。
Apple 的 simd 矩阵是列优先的。 Opencv 的矩阵是行优先的。要使上述等式成立,您可能必须使用 Q 的转置。
关于ios - 如何应用iOS VNImageHomographicAlignmentObservation warpTransform?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52805400/
我正在测试 Apple 的 Vision Alignment API,对 VNHomographicImageRegistrationRequest 有疑问。有人让它工作吗?我可以从中获取 warpT
我是一名优秀的程序员,十分优秀!