Я думаю, что вы можете использовать биты для кодирования этой информации. Например, предположим, что вы используете изображение размером 8U (1 байт на пиксель). Тогда вы можете использовать что-то вроде
0x01 : leaf
0x02 : tree
0x04 : forest
для представления этих функций. Здесь вы используете битовую маску для каждой функции, поэтому вы можете OR
эти значения, если пиксель принадлежит более чем одному классу.
Итак,
0x03
будет leaf, tree
0x06
будет tree, forest
Для уровней достоверности вам придется использовать отдельные каналы. Если вы согласны с потерей точности, вы можете использовать для них каналы 8U вместо каналов 32F. Таким образом, вместо того, чтобы хранить 0,6578 в формате с плавающей запятой, вы можете сохранить его как 66 в байте.
Если матрица, созданная таким образом, содержит много нулей, вы можете дополнительно уменьшить использование памяти, сохранив ее как разреженную матрицу.