opencv - 使用 OpenCV 编码多层信息

标签 opencv storage mat

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

例如,如果有一张森林的图片,我想编码像“森林”这样的大标签,像“树”这样的中等标签,然后像“叶子”或“ Twig ”这样的小标签,一个像素可能有 3标签:森林、树、叶子,然后对于其中的每一个,都可能有一个概率值。

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

最简单的方法是为每个可能的标签设置一个 cv::Mat,但我的问题更多是针对优化内存使用的最佳方法。

最佳答案

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

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

来表示这些特征。在这里,您为每个功能使用了一个位掩码,因此您可以 OR如果一个像素属于多个类别,则为这些值。

所以,
0x03将是 leaf, tree0x06将是 tree, forest
对于置信水平,您将不得不使用单独的 channel 。如果您不介意失去一些精度,您可以使用 8U channel 代替 32F channel 。因此,与其将 0.6578 存储在浮点数中,不如将其存储为 66 字节。

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

关于opencv - 使用 OpenCV 编码多层信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54193356/

相关文章:

c++ - OpenCV 3.0 分割错误(Bag of visual words)

Azure 存档操作和定价

android - Cordova - 将文件保存到存储

matrix - 常见运算的复数数组格式效率

OpenCV 如何在 JAVA 中用二维数组初始化 Mat

c++ - 用DIPlib测量垫圈

c++ - fatal error : opencv2/contrib/contrib. 未找到 hpp 文件(打开已构建的 cv)

opencv - 如何访问 RGB 图像的每个像素值?

c++ - setImageROI 使用 MAT 图像而不是 Iplimage

python3 : Cannot Import cv2 : DLL load failed after installing opencv_contrib modules