接缝雕刻–访问可可中的像素数据

| 我想通过Avidan / Shamir实现接缝雕刻算法。在可以使用核心图像滤镜实现的能量计算阶段之后,我需要计算能量最低的接缝,因为它使用动态编程,所以无法将其作为核心图像滤镜实现(您没有使用opengl着色语言访问以前的计算)。 所以我需要一种在Objective-C可可中有效访问图像的像素数据的方法。 伪代码省略了边界检查:
for y in 0..lines(image) do:
  for x in 0..columns(image) do:
    output[x][y] = value(image, x, y) + 
                     min{ output[x-1][y-1]; output[x][y-1]; output[x+1][y-1] }
    
已邀请:
获取图像像素值的最佳方法是使用CGBitmapContextCreate创建CGBitmapContextRef。与此相关的重要部分是,当您创建上下文时,您将传递其中的指针,该指针将用作位图数据的后备存储。这意味着数据将保存像素值,并且您可以使用它们进行任何操作。 因此,步骤应为: 使用malloc或其他合适的分配器分配缓冲区。 将该缓冲区作为第一个参数传递给CGBitmapContextCreate。 将图像绘制到返回的CGBitmapContextRef中。 释放上下文。 现在,您拥有了原始数据指针,该数据指针以CGBitmapContextCreate调用中指定的格式填充了像素。     

要回复问题请先登录注册