iphone - 硬件加速图像比较/搜索?

标签 iphone ios image-processing opengl-es

我需要找到小图像在大图像中的位置。较小的图像是较大图像的子集。要求还包括像素值可能略有不同,例如,如果图像是由不同的 JPEG 压缩生成的。 我已经通过使用 CPU 比较字节来实现该解决方案,但我现在正在研究加速该过程的任何可能性。 我能以某种方式利用 OpenGLES 并因此利用 iPhone GPU 吗?

注意:图像是灰度的。

最佳答案

@Ivan,这是视频压缩中的一个非常标准的问题(找到当前宏 block 在前一帧中的位置)。您可以使用像素差异的度量,例如绝对差异之和 (SAD)、平方差异之和 (SSD) 或 Hadamard 变换差异之和 (SATD)。我假设您不是在尝试压缩视频,而是在寻找水印之类的东西。在许多情况下,您可以使用梯度下降类型搜索来查找局部最小值(最佳匹配),根据经验观察将图像(您的小图像)与相同的稍微偏移版本(匹配其位置已经'被准确地找到)产生比与另一幅图像的随机部分比较更接近的度量。因此,您可以先对所有可能的偏移量/位置(视频编码中的运动矢量)的空间进行相当粗略的采样,然后围绕最佳结果进行局部优化。局部优化的工作原理是将匹配项与一定数量的相邻匹配项进行比较,如果有比当前匹配项更好的匹配项,则移动到其中最好的匹配项,重复。这比蛮力(检查每个可能的位置)快得多,但它可能并非在所有情况下都有效(这取决于所匹配内容的性质)。不幸的是,这种算法不能很好地转化为 GPU,因为每一步都依赖于前面的步骤。它可能仍然值得;例如,如果您检查 256x256 图像位置的 16 个邻居,这足以将并行计算发送到 GPU,是的,它绝对可以在 OpenGL-ES 中完成。然而,所有这些问题的答案实际上取决于您是在进行蛮力搜索还是局部最小化类型的搜索,以及局部最小化是否适合您。

关于iphone - 硬件加速图像比较/搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417530/

相关文章:

java - matlab细化算法java实现

ios - 将图像和视频上传到亚马逊 S3(arm64 错误)

iphone - 如何在 iPhone 的 Xcode 中创建 Core Data 模型后创建类

应用程序打开时的 iOS 应用程序通知(如 whatsapp)

ios - 在 iOS 中同时管理文本转语音和语音识别

java - 加载太多 JPEG 文件(100 秒)导致内存不足错误

iphone - 覆盖 UITextView 中的自动滚动?

iphone - 如何通过从 iPhone 中的 UITapGestureRecognizer 的角落拖动 View 来增加 View 的大小和高度?

html - <a href onClick ="return false;"> 在 Safari/iOS 中不工作?

image - 为像素分配负值