create_class_lut_knnT_create_class_lut_knnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn创建类查找表K-最近邻(算子)
名称
create_class_lut_knnT_create_class_lut_knnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn — 使用 k-最近邻分类器(k-NN)创建查找表来对字节图像进行分类。
签名
描述
create_class_lut_knncreate_class_lut_knnCreateClassLutKnnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn 基于训练好的 k-最近邻分类器(k-NN)KNNHandleKNNHandleKNNHandleKNNHandleKNNHandleknnhandle 的数据生成查找表(LUT)ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle,用于对多通道字节图像进行分类。通过使用基于 k-N N的 LUT 分类器,后续分类操作中的
classify_image_class_knnclassify_image_class_knnClassifyImageClassKnnClassifyImageClassKnnClassifyImageClassKnnclassify_image_class_knn 算子可替换为 classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut 算子。由于 LUT 中存储了 k-NN 的所有可能响应,每个图像点的分类估计不再必要,从而显著提升分类速度。生成 LUT 时,调用 create_class_knncreate_class_knnCreateClassKnnCreateClassKnnCreateClassKnncreate_class_knn 算子的 NumDimNumDimNumDimNumDimnumDimnum_dim 参数至关重要。NumDimNumDimNumDimNumDimnumDimnum_dim 定义了待分类图像必须具备的图像通道数。
创建 LUT 时,所有像素值均通过 classify_class_knnclassify_class_knnClassifyClassKnnClassifyClassKnnClassifyClassKnnclassify_class_knn 进行分类。返回的分类结果存储于 LUT 中。由于 LUT 的离散化特性,其分类器的准确度可能低于 classify_image_class_knnclassify_image_class_knnClassifyImageClassKnnClassifyImageClassKnnClassifyImageClassKnnclassify_image_class_knn 的准确度。
通过 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth",可以控制分类的精度、所需存储空间以及创建 LUT 所需的运行时间。
基于 k-NN 的 LUT 分类器的以下参数可通过
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name 和 GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value 进行设置:
- 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth":
-
像素使用的位数。该参数控制 LUT 分类器的存储需求,并受图像位深度限制( 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8)。若 LUT 位深度较小( 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" < 8),则多个像素组合的类别将映射至同一 LUT 条目,可能导致分类精度降低。其中一个聚类包含 种像素组合,其中 NumDimNumDimNumDimNumDimnumDimnum_dim 表示 LUT 的维度,该维度在 create_class_knncreate_class_knnCreateClassKnnCreateClassKnnCreateClassKnncreate_class_knn 中指定。例如,当 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 7 时,NumDimNumDimNumDimNumDimnumDimnum_dim = 3,则 8 种像素组合的类别映射到同一个 LUT 条目中。LUT 最多需要 字节的存储空间。例如,当 NumDimNumDimNumDimNumDimnumDimnum_dim = 3、
'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8 且类别数小于 16 时,LUT 在内部存储优化下需要 8 MB存储空间。当 LUT 能完全容纳于缓存时,classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut
中的分类运行时间将降至最低。
典型值: 6,7,8
默认值: 8
限制条件: 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" >= 1,
'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8。
- 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold":
-
k-NN 算法中拒绝不确定分类点的阈值。该参数代表对分类返回距离的阈值(参见 classify_class_knnclassify_class_knnClassifyClassKnnClassifyClassKnnClassifyClassKnnclassify_class_knn)。所有距离超过
'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" 的像素均不被分配至任何类别。
默认值: 5
限制条件: 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" >= 0。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在内部数据级别上自动并行化。
此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。
参数
KNNHandleKNNHandleKNNHandleKNNHandleKNNHandleknnhandle (输入控制) class_knn → HClassKnn, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
k-NN 分类器的句柄。
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (输入控制) attribute.name-array → HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)
用于创建 LUT 分类器时可调整的泛型参数名称。
默认值:
[]
建议值:
'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth", 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制) attribute.value-array → HTupleSequence[Union[str, int, float]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)
用于创建 LUT 分类器时可调整的泛型参数值。
默认值:
[]
建议值:
8, 7, 6, 0.5, 5, 10, 50
ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle (输出控制) class_lut → HClassLUT, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
LUT 分类器的句柄。
结果
如果参数有效,算子 create_class_lut_knncreate_class_lut_knnCreateClassLutKnnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn 返回值 2 (H_MSG_TRUE)。如有必要,则抛出异常。
可能的前趋
train_class_knntrain_class_knnTrainClassKnnTrainClassKnnTrainClassKnntrain_class_knn,
read_class_knnread_class_knnReadClassKnnReadClassKnnReadClassKnnread_class_knn
可能的后继
classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut
替代
create_class_lut_svmcreate_class_lut_svmCreateClassLutSvmCreateClassLutSvmCreateClassLutSvmcreate_class_lut_svm,
create_class_lut_gmmcreate_class_lut_gmmCreateClassLutGmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm,
create_class_lut_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp
另见
classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut,
clear_class_lutclear_class_lutClearClassLutClearClassLutClearClassLutclear_class_lut
模块
基础