Vad*_*ick 10 image-processing computer-vision cgaffinetransform ios sequence-alignment
我正在尝试使用相机拍摄两张图像,并使用iOS Vision框架对齐它们:
func align(firstImage: CIImage, secondImage: CIImage) {
let request = VNTranslationalImageRegistrationRequest(
targetedCIImage: firstImage) {
request, error in
if error != nil {
fatalError()
}
let observation = request.results!.first
as! VNImageTranslationAlignmentObservation
secondImage = secondImage.transformed(
by: observation.alignmentTransform)
let compositedImage = firstImage!.applyingFilter(
"CIAdditionCompositing",
parameters: ["inputBackgroundImage": secondImage])
// Save the compositedImage to the photo library.
}
try! visionHandler.perform([request], on: secondImage)
}
let visionHandler = VNSequenceRequestHandler()
Run Code Online (Sandbox Code Playgroud)
但这会产生严重错位的图像:
您可以看到我尝试了三种不同类型的场景 - 特写主题,室内场景和室外场景.我尝试了更多的室外场景,几乎每一个场景的结果都是一样的.
在最坏的情况下,我期待轻微的错位,但不是完全错位.出了什么问题?
我没有将图像的方向传递到Vision框架中,但这不应该是对齐图像的问题.这仅仅是面部检测等问题,在这种情况下,旋转的面部不会被检测为面部.在任何情况下,输出图像都具有正确的方向,因此方向不是问题.
我的合成代码工作正常.这只是Vision框架的一个问题.如果我删除了对Vision框架的调用,放上三脚架的手机,组合就能完美运行.没有错位.所以问题是Vision框架.
这是在iPhone X上.
如何让Vision框架正常工作?我可以告诉它使用陀螺仪,加速度计和罗盘数据来改善对齐吗?