【问题标题】:How to Detect corners on image using GPUImageHarrisCornerDetectionFilter如何使用 GPUImageHarrisCornerDetectionFilter 检测图像上的角点
【发布时间】:2014-06-11 19:44:13
【问题描述】:

我正在尝试通过检测角来裁剪带有正方形的图像。下面的方法试图找到角落,但我不确定如何完成这个过程。有什么想法吗?

最佳函数会检测角点,使用这些角点裁剪图像,然后返回裁剪后的图像(图片中的正方形)。

-(NSArray *)cornersForImage:(UIImage *)inputImage{

    NSMutableArray *results = [NSMutableArray new];

    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];

    GPUImageHarrisCornerDetectionFilter *cornerFilter1 = [[GPUImageHarrisCornerDetectionFilter alloc] init];
    [cornerFilter1 setThreshold:0.1f];
    [cornerFilter1 forceProcessingAtSize:self.displayImage.frame.size];

    [stillImageSource addTarget:cornerFilter1];
    [stillImageSource processImage];

    [cornerFilter1 setCornersDetectedBlock:^(GLfloat *, NSUInteger, CMTime) {

        //get corners?
    }];
    return [NSArray arrayWithArray:results];
}

【问题讨论】:

  • 你有没有让它正常工作?你有愿意分享的代码吗?

标签: ios objective-c gpuimage gpuimagestillcamera


【解决方案1】:

您能否发布有关 GPUImageHarrisCornerDetectionFilter 的文档,特别是 setCornersDetectedBlock 方法?

请注意,您编写的代码可能无法正常工作。在我看来,过滤器被设计为异步运行,所以在你调用 setCornersDetectedBlock 之后,它会在结果可用之前返回。您可能将代码放在处理角点检测结果的块中。

【讨论】:

  • 是的,这是有道理的。我会把它放在它自己的回调中。在实际投入生产之前,我只是在测试这个功能。
【解决方案2】:

你将把你的角重新放在一个数组中:

[(GPUImageHarrisCornerDetectionFilter *)filter setCornersDetectedBlock:^(GLfloat* cornerArray, NSUInteger cornersDetected, CMTime frameTime) {
}];

其中cornersArray 在上面是一组 GLfloat 值对,描述了每个角的标准化 X 和 Y 坐标(数组的大小为cornersDetected * 2)。这些值被归一化到 0.0-1.0 的范围内。

如果您要裁剪的矩形是与整个图像对齐的矩形,您可以使用 GPUImageCropFilter 根据这些标准化坐标裁剪出感兴趣的矩形。

但是,您很可能不会得到对齐的矩形。这就是事情变得有点复杂的地方,因为您需要处理矩形的旋转和透视。我目前没有任何东西可以做到这一点,尽管this questionthis questionthis one 描述了可用于生成可用于进行所需投影的变换的数学。我一直想在框架中加入这样的东西,但还没有时间计算出正确的变换数学,以应用于从一个任意四边形到另一个四边形的映射。

【讨论】:

  • 甜蜜。谢谢。我会试试这个,并尝试从其他问题中实现自动轮换。我会告诉你进展如何。
  • @brad-larson 从静止图像中获取cornersArray 的过程有点难以理解。它在任何地方都有记录吗?我对此提出了一个问题,但到目前为止还没有运气stackoverflow.com/questions/36115650/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
相关资源
最近更新 更多