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_knn( : : KNNHandle, GenParamName, GenParamValue : ClassLUTHandle)

Herror T_create_class_lut_knn(const Htuple KNNHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ClassLUTHandle)

void CreateClassLutKnn(const HTuple& KNNHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ClassLUTHandle)

void HClassLUT::HClassLUT(const HClassKnn& KNNHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HClassLUT::CreateClassLutKnn(const HClassKnn& KNNHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

HClassLUT HClassKnn::CreateClassLutKnn(const HTuple& GenParamName, const HTuple& GenParamValue) const

static void HOperatorSet.CreateClassLutKnn(HTuple KNNHandle, HTuple genParamName, HTuple genParamValue, out HTuple classLUTHandle)

public HClassLUT(HClassKnn KNNHandle, HTuple genParamName, HTuple genParamValue)

void HClassLUT.CreateClassLutKnn(HClassKnn KNNHandle, HTuple genParamName, HTuple genParamValue)

HClassLUT HClassKnn.CreateClassLutKnn(HTuple genParamName, HTuple genParamValue)

def create_class_lut_knn(knnhandle: HHandle, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, int, float]]) -> HHandle

描述

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_nameGenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_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

模块

基础