使用iOS 5 AV Foundation和core-image实时确定一张纸的边angular
我目前正在build立一个相机应用程序原型,应该能够识别桌子上的纸张。 关于这个的线索是它应该实时地进行识别,所以我捕捉了相机的videostream,这在iOS 5中可以很容易地用AV基础来完成。 我看着这里和这里
他们正在那里做一些基本的对象识别。
我发现在这个实时环境中使用OpenCV库不能以高性能的方式工作。
所以我需要的是一个algorithm来确定没有OpenCV的图像的边缘。
有没有人有一些示例代码片段展示了如何做到这一点,或指出我在正确的方向。
任何帮助,将不胜感激。
你不能在iOS中使用当前的Core Image实现,因为angular点检测需要一些核心图像还不支持的操作。 不过,我一直在开发一个名为GPUImage的开源框架,它具有所需的function。
为了find一个物体的angular落,你可以使用我刚刚开始工作的哈里斯angular点检测algorithm的GPU加速实现。 您可能需要调整阈值,敏感度和input图像大小以适合您的特定应用程序,但是它能够返回在场景中find的纸张的angular落:
它还会find该场景中的其他angular落,因此您可能需要使用二进制阈值操作或稍后的处理来确定哪些angular落属于矩形纸张,哪些属于其他物体。
我在Signal Processing中描述了这个过程,如果你感兴趣,但是在你的应用程序中使用这个过程,你只需要从GitHub获取最新版本的GPUImage,并使GPUImageHarrisCornerDetectionFilter成为GPUImageVideoCamera实例的目标。 然后你只需要添加一个callback来处理从这个filter返回给你的angular落数组。
在iPhone 4上,angular点检测过程本身在640x480video下以〜15-20 FPS的速度运行,但是我目前的CPU限制angular点列表程序将其降低到〜10 FPS。 我正在用一个基于GPU的例程代替它,它应该快得多。 iPhone 4S目前可以以20-25 FPS的速度处理所有事情,但是我应该能够显着提高速度。 希望这将有资格作为您的应用程序实时接近。
我使用Brad的库GPUImage来做到这一点,结果是完美的,但足够好。
在检测到的哈里斯angular落,我的想法是select:
- 工作表左上angular最左上angular的位置
- 表格右上angular的最右上angular
- 等等
@Mirco – 你有没有find更好的解决scheme?
@Brad – 在你的屏幕截图中,你使用Harrisfilter的参数来检测5个angular点? 我有很多比…
- 如何将Photoshop的水平调整映射到核心图像filter?
- 当向UIImage应用filter时,结果是颠倒的
- CGImageDestinationFinalize或UIImageJPEGRepresentation – 在IOS 10上保存大文件时发生崩溃
- CIDetector不会释放内存 – swift
- 使用GPU(可能CIFilters)将图像放在较大的canvas上,而不使用Image Context
- 什么是“需要一个swizzler,使RGB8可以阅读”关于该核心图像给iOS9?
- iOS UIImage在通过CIFilter后被旋转
- 在iOS中使用CIEdgeWorkfilter
- CIDetector和UIImagePickerController