Halcon

您所在的位置:网站首页 bulb怎么用 Halcon

Halcon

2023-12-27 03:12| 来源: 网络整理| 查看: 265

classify_halogen_bulbs.hdev

本例程展示了通过提取区域形态特征(面积(Area)、密实度(Compactness)、四个不变矩特征(PSI1,PSI2,PSI3,PSI4)和凸度(Convexity)) 交给SVM训练 实现分类

原代码 get_system ('image_dir', HalconImages) get_system ('operating_system', OS) if (OS{0:2} == 'Win') tuple_split (HalconImages, ';', HalconImages) else tuple_split (HalconImages, ':', HalconImages) endif ReadOK := false dev_get_preferences ('suppress_handled_exceptions_dlg', SaveMode) dev_set_preferences ('suppress_handled_exceptions_dlg', 'true') for k := 0 to |HalconImages| - 1 by 1 try read_image (Image, HalconImages[k] + '/halogen_bulb/halogen_bulb_01.png') ReadPath := HalconImages[k] + '/halogen_bulb/' ReadOK := true break catch (Exception) endtry endfor if (not ReadOK) disp_message (WindowHandle, 'Could not find the images in $HALCONIMAGES', 'window', -1, -1, 'black', 'true') stop () endif dev_set_preferences ('suppress_handled_exceptions_dlg', SaveMode) read_image (Image, 'halogen_bulb/halogen_bulb_01.png') get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle) set_display_font (WindowHandle, 14, 'mono', 'true', 'false') * ClassNames := ['good','bad','none'] Colors := ['forest green','red','red'] Nu := 0.05 KernelParam := 0.02 * * Create an SVM classifier create_class_svm (7, 'rbf', KernelParam, Nu, |ClassNames|, 'one-versus-one', 'principal_components', 5, SVMHandle) * * Add samples add_samples_to_svm (ClassNames, SVMHandle, WindowHandle, ReadPath) dev_clear_window () * * Train the classifier disp_message (WindowHandle, 'Training...', 'window', -1, -1, 'black', 'true') train_class_svm (SVMHandle, 0.001, 'default') disp_message (WindowHandle, 'Training completed', 'window', -1, -1, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop () * * Classify halogen bulbs classify_regions_with_svm (SVMHandle, Colors, ClassNames, ReadPath) * * Clear the classifier from memory clear_class_svm (SVMHandle) 一、步骤 1. 准备好两组卤素灯图像样本,好坏的各若干张图像; 训练数据分为三类 good bad none 另有8张测试图片 训练最好不要用用于测试的图片 会影响训练效果。测试同理 最好不要用训练图片 以免得到错误的结果。

在这里插入图片描述

2. 对样本图像进行分割,获取卤素灯关键部位区域;

二值化提取区域 计算区域特征(面积(Area)、密实度(Compactness)、四个不变矩特征(PSI1,PSI2,PSI3,PSI4)和凸度(Convexity))

# 内核类型 最好选择 rbf 文档上写大部分分类都可以正确, 非线性也可以 create_class_svm (7, 'rbf', KernelParam, Nu, |ClassNames|, 'one-versus-one', 'principal_components', 5, SVMHandle) threshold (Image, Region, 0, 40) area_center (Region, Area, Row, Column) compactness (Region, Compactness) #获得四个不变矩 moments_region_central_invar (Region, PSI1, PSI2, PSI3, PSI4) convexity (Region, Convexity) Features := real([Area,Compactness,PSI1,PSI2,PSI3,PSI4,Convexity]) calculate_features (Region, Features) add_sample_class_svm (SVMHandle, Features, ClassNumber)

在这里插入图片描述

3. 选择合适的对图像的描述,作为识别的特征; train_class_svm (SVMHandle, 0.001, 'default') 4. 提取测试图片特征 交给SVM分类 read_image (Image, Selection[Index]) threshold (Image, Region, 0, 40) area_center (Region, Area, Row, Column) compactness (Region, Compactness) moments_region_central_invar (Region, PSI1, PSI2, PSI3, PSI4) convexity (Region, Convexity) Features := real([Area,Compactness,PSI1,PSI2,PSI3,PSI4,Convexity]) classify_class_svm (SVMHandle, Features, 1, Class)

classify_pills_auto_select_features.hdev compare_ocr_svm_mlp.hdev 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3