1

我正在寻找一个给定大小为 x 的图像的 C 库,它将图像拆分为多个图像,以便我可以将每个子图像发送到专用 CPU 以使用区域增长或其他方式检测其上的片段。

4

4 回答 4

4

你真的要分割图像吗?

  1. 如果您使用的是多核 CPU,最好加载一次图像,然后使用 x,y,width,height 参数在其上运行处理线程(我假设处理只读取图像)。

  2. 如果您有更多主机,则有一个调度程序,它正在对图像执行几个操作:解压缩、拆分、压缩部分、传输部分。我认为,处理主机在同一个本地网络上。如果您可以将图像作为广播发送到这个本地网络,我的意思是所有主机一次接收图像,这将是一个性能提升:displathcer 不必拆分和重新发送部分,处理任务应该只选择接收到的整个图像的适当部分(x,y,宽度,高度)。我不知道您使用的是什么图像格式,但我很确定您不必解压缩整个图像,至少在垂直方向上您应该跳过不需要的区域。(您应该将图像拆分为全宽区域,以避免解压缩不需要的区域。)

于 2013-02-16T22:46:25.523 回答
1

合并来自单独分割输出的结果将是困难的部分。如果你碰巧通过一个段分裂怎么办?你会从每个分割的图像中得到一个片段,你必须将它们合并在一起。会有不确定的情况,因此您必须选择一个指标来决定何时合并两个区域。

如果这是一个问题,您可能想尝试使用Seam Carving算法来生成不太可能与区域边缘相交的分割。Photoshop 的 Content-Aware Resize 工具使用接缝雕刻来查找图像中视觉上不重要的水平和垂直路径。

于 2013-02-14T16:25:50.420 回答
1

在同意 Shai 和 japreiss 的同时,由于您的目标是图像分割,因此您将遇到边界问题(因为您需要邻域信息),对于图像处理部分,我建议类似

libpng:http ://www.libpng.org/pub/png/libpng.html

看看这些 StackOverflow 问题:

  1. 如何使用 libpng 将 PNG 编码为缓冲区?
  2. 使用 libpng 将图像“拆分”为多个片段(尚未正确回答)

当您的缓冲区充满图像值时,读取和写入它的部分应该一点也不棘手。

于 2013-02-21T11:57:28.790 回答
1

正如japresis所指出的,合并生成的分割结果可能是您最难的部分。如果您使用的是基于图形切割的图像分割算法,您可以使用这种方法来扩充您的代码,该方法提供了一种执行并行操作的原则方法,并以最佳方式组合它们。

于 2013-02-17T07:39:41.570 回答