使用 OpenCV 对多层信息进行编码



如何使用OpenCV最好地优化多层数据点的编码?

例如,如果有一张森林的图片,我想编码大标签,如"森林",中等大小的标签,如"树",然后是小标签,如"叶子

"或"树枝",一个像素可能有 3 个标签:森林、树、叶子,然后对于其中的每一个,可能有一个概率值。

这是一个相对简单的例子,但可以想象有更多的重叠标签。

最简单的方法是为每个可能的标签提供一个 cv::Mat,但我的问题更倾向于优化内存使用的最佳方法。

我认为您可以使用位来编码此信息。例如,假设您使用的是 8U 图像(每像素 1 个字节)。然后你可以使用类似的东西

0x01 : leaf
0x02 : tree
0x04 : forest

来表示这些功能。此处对每个要素使用位掩码,因此如果像素属于多个类,则可以OR这些值。

所以

0x03leaf, tree

0x06tree, forest

对于置信水平,您必须使用单独的通道。如果您可以接受失去一些精度,则可以使用8U通道而不是32F通道。因此,您可以将其存储为字节中的 66,而不是将 0.6578 存储在浮点数中。

如果以这种方式创建的矩阵包含大量零,则可以通过将其存储为稀疏矩阵来进一步减少内存使用量。

相关内容

  • 没有找到相关文章

最新更新