Halcon颜色抽取-多产品颜色(MLP)

2024-04-12 07:28
文章标签 产品 颜色 halcon 抽取 mlp

本文主要是介绍Halcon颜色抽取-多产品颜色(MLP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

//颜色抽取,单产品多区域
https://blog.csdn.net/m0_51559565/article/details/135216905

由于在颜色抽取上面,我已经发了一篇博客了,是单产品多区域的情况。所以对于细分原理上就不过多的描述了。
本文主要是针对多产品多颜色的情况进行说明。实际生产线中,往往会出现n种产品同时存在的情况,他们可能颜色不同,或者颜色及其相近。其中本文章就针对5种相近颜色的不同产品进行说明。

1.halcon程序

*创建MLP分类器,区分6种颜色区域。5种所需要的颜色,1种背景create_class_mlp (3, 7, 6, 'softmax', 'normalization', 3, 42, MLPHandle)
dev_get_window (WindowHandle)list_files ('D:/2024Work/work/4.11颜色分选/砖石', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])*创建6个分类的空区域gen_empty_region (EmptyObject1)gen_empty_region (EmptyObject2)gen_empty_region (EmptyObject3)gen_empty_region (EmptyObject4)gen_empty_region (EmptyObject5)gen_empty_region (back)*创建存放区域的集合数组gen_empty_obj (Union)*绘制我们需要的颜色区域dev_display (Image)draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)gen_contour_region_xld (Rectangle, Contours, 'border')dev_display (Image)dev_display (Contours)reduce_domain (Image, Rectangle, ROI)*绘制背景dev_display (Image)draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21)gen_rectangle1 (Rectangle1, Row11, Column11, Row21, Column21)gen_contour_region_xld (Rectangle1, Contours1, 'border')dev_display (Image)dev_display (Contours1)reduce_domain (Image, Rectangle1, back)*第一种颜色if (Index=0)concat_obj (Union, ROI, Union)concat_obj (Union, EmptyObject2, Union)concat_obj (Union, EmptyObject3, Union)concat_obj (Union, EmptyObject4, Union)concat_obj (Union, EmptyObject5, Union)concat_obj (Union, back, Union)endif*第二种颜色if (Index=1)concat_obj (Union, EmptyObject1, Union)concat_obj (Union, ROI, Union)concat_obj (Union, EmptyObject3, Union)concat_obj (Union, EmptyObject4, Union)concat_obj (Union, EmptyObject5, Union)concat_obj (Union, back, Union)endif*第三种颜色if (Index=2)concat_obj (Union, EmptyObject1, Union)concat_obj (Union, EmptyObject2, Union)concat_obj (Union, ROI, Union)concat_obj (Union, EmptyObject4, Union)concat_obj (Union, EmptyObject5, Union)concat_obj (Union, back, Union)endif*第四种颜色if (Index=3)concat_obj (Union, EmptyObject1, Union)concat_obj (Union, EmptyObject2, Union)concat_obj (Union, EmptyObject3, Union)concat_obj (Union, ROI, Union)concat_obj (Union, EmptyObject5, Union)concat_obj (Union, back, Union)endif*第五种颜色if (Index=4)concat_obj (Union, EmptyObject1, Union)concat_obj (Union, EmptyObject2, Union)concat_obj (Union, EmptyObject3, Union)concat_obj (Union, EmptyObject4, Union)concat_obj (Union, ROI, Union)concat_obj (Union, back, Union)endif*将全部颜色添加到mlp中add_samples_image_class_mlp (Image, Union, MLPHandle)
endfor
*训练mlp
train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
stop ()
******************************************验证**********************
*将句柄写入文件中
write_class_mlp (MLPHandle, 'D:/2024Work/work/4.11颜色分选/砖石/mlp.mlp')
*从文件中读取句柄
read_class_mlp ('D:/2024Work/work/4.11颜色分选/砖石/mlp.mlp', MLPHandle1)
*初始化结果参数
ResultColor:=0
list_files ('D:/2024Work/work/4.11颜色分选/砖石', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])*对图像应该分类器classify_image_class_mlp (Image, ClassRegions, MLPHandle1, 0.5)*通过循环和面积筛选,判断当前的颜色for i := 1 to 5 by 1select_obj (ClassRegions, Result, i)union1 (Result, RegionUnion)area_center (RegionUnion, Area1, Row3, Column3)if (Area1>100000)ResultColor:=iendifendforstop ()
endfor

2.halcon程序解析

2.1创建多颜色mlp模型

*创建MLP分类器,区分6种颜色区域。5种所需要的颜色,1种背景
create_class_mlp (3, 7, 6, 'softmax', 'normalization', 3, 42, MLPHandle)

在本文中,需要区分的产品是5个蓝色的石头,颜色相近,所以在创建mlp模型时,需要使用5个区分项和背景。总共6个区分项

2.2创建存放数组和绘制ROI

 	gen_empty_region (EmptyObject1)gen_empty_region (EmptyObject2)gen_empty_region (EmptyObject3)gen_empty_region (EmptyObject4)gen_empty_region (EmptyObject5)gen_empty_region (back)*创建存放区域的集合数组gen_empty_obj (Union)*绘制我们需要的颜色区域dev_display (Image)draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)reduce_domain (Image, Rectangle, ROI)*绘制背景dev_display (Image)draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21)gen_rectangle1 (Rectangle1, Row11, Column11, Row21, Column21)reduce_domain (Image, Rectangle1, back)

在绘制我们需要的颜色的时候,只需要绘制的区域包含所需颜色即可,但是同时应该尽量避免出现其他颜色。
在这里插入图片描述
在绘制背景时,应该将大部分背景的颜色的区域尽量的包括其中,这样子可以有效的区分背景。
在这里插入图片描述

2.3训练模型

add_samples_image_class_mlp (Image, Union, MLPHandle)
*训练mlp
train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)

每次绘制完图像后,需要对区域进行添加,将所需要训练的内容添加到模型中,然后开启模型训练

2.4写入和读取文件

*将句柄写入文件
write_class_mlp (MLPHandle, 'D:/2024Work/work/4.11颜色分选/砖石/mlp.mlp')
*从文件中读取句柄
read_class_mlp ('D:/2024Work/work/4.11颜色分选/砖石/mlp.mlp', MLPHandle1)

2.5验证

*初始化结果参数
ResultColor:=0
list_files ('D:/2024Work/work/4.11颜色分选/砖石', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])*对图像应该分类器classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)*通过循环和面积筛选,判断当前的颜色for i := 1 to 5 by 1select_obj (ClassRegions, Result, i)union1 (Result, RegionUnion)area_center (RegionUnion, Area1, Row3, Column3)if (Area1>100000)ResultColor:=iendifendforstop ()
endfor

将图像输入到图像分类器中,即可得到所需要的颜色的面积,根据颜色面积进行筛选即可
在这里插入图片描述

总结

有不清楚的地方,可以移步前言的链接查看。mlp常用的场景一般都是单颜色区分,相当多时候是在预处理中进行。但是作为项目上,常见于各种颜色有色差的分类。比如产品有色差的情况,也是可以用颜色抽取实现。

这篇关于Halcon颜色抽取-多产品颜色(MLP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896483

相关文章

雷动WEBRTC产品

http://www.rtcpower.com/html/leidongwebrtc.html ; 1.前言      WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得一项技术。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以

全球AI产品Top100排行榜

Web Top50的榜单里,AIGC类型的应用占比52%,遥遥领先。AIGC类型包括图像、视频、音乐、语音等的内容生成和编辑。音乐生成应用Suno在过去六个月中的排名跃升最为显著,从第36位上升至第5位。排名第二大类是通用对话/AI聊天/角色扮演类型的应用,占比20%,包括常见的ChatGPT、Claude、Character.ai等。其他是AI写作(8%)、AI搜索/问答(6%)、Agent/

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG

【虚拟机/服务器】非图形化界面下修改Shell中颜色的设置

1、首先 cd ~ && ll 可以看到如下图所示 2、输入 sudo vim .bashrc 进入 .bashrc 并通过 /PS1 迅速从上往下定位第一个PS1 3、输入 i 进入插入模式后修改 else 下面的配置如下 说明:\e[1;32;40m] 其中1表示高亮显示,32表示字体颜色是绿色,40表示背景色为黑色 4、输入 esc 退出编辑模式到命令模式,再输入

AI产品经理成长蓝图:从入门到精通的学习路径指南

AI产品经理区别于普通产品经理的地方,不止在懂得AI算法,更重要的是具有AI思维。 人工智能产品设计要以操作极度简单为标准,但是前端的简单代表后端的复杂,系统越复杂,才能越智能。 同样,人工智能的发展依赖于产业生态的共同推进,上游芯片提供算力保障,中游人工智能厂商着力研发算法模型,下游应用领域提供落地场景。 一、人工智能产业链结构 人工智能产业链结构上可分为基础层(计算基础设施)、技术层(

护肤产品如何推广吗

护肤产品如何推广吗 一招突围,护肤品类起盘新思路!#营销思维#品牌营销#营销#商业思维#老板#干货分享 推荐阅读: 正规行业首选!包年推广+企业微信,效果加倍,速来体验!https://www.bsw80.com/post/169.html 5, 000 块就可以做自己的护肤品牌,广州有 1.2 万个工厂,他们要生存,不这样互相卷怎么能生存呢?  5, 000 它其实

全能型AI和专业型AI产品的优劣势?

从目前网上流行的说法,Open AI的神秘项目“草莓”,并没有说明是一个全能型的项目。而根据最新绝密项目曝光的内容看,其推理能力出现了惊人的进步,推理能力已接近人类水平,而据路透社消息,5月份他们看到了OpenAI一份内部文件副本,上面详细说明了“草莓”项目的研究计划。文件中显示,公司希望“草莓”模型不仅能生成答案,而且能执行长任务(LHF),包括提前进行规划,自主可靠地在互联网上导航以及一系

Excel查询颜色RGB值

1.选中单元格,点右键,设置单元格格式-填充-其他颜色-自定义,下面显示的就是该单元格颜色的RGB值 2.与十六进制换算: https://www.sioe.cn/yingyong/yanse-rgb-16/

AI产品经理:ai产品经理从零基础到精通,非常详细收藏我这一篇就够了

在互联网的浪潮中,AI人工智能领域无疑是最引人注目的风口。AI产品经理,作为这一领域的新兴岗位,以其高薪、低压力、无年龄限制等优势,吸引了众多互联网从业者的目光。随着GPT等AIGC工具的兴起,AI产品经理的市场需求日益增长。 AI产品经理需不需要懂算法?🤔‍‍‍ AI产品经理不必像算法工程师那样精通算法,但必须能够与算法工程师有效沟通,了解如何管理AI项目,协调项目资源。 成功转行AI产

AI时代产品经理面临的变与不变:0经验求职产品经理要注意哪些细节?

AI时代,各种产品形态、业务的变化,让市场也对产品经理提出了新的要求,产品经理要有哪些变与不变呢?现在入行产品经理是好时机么?没有技术背景、没有学历有优势如何入行做产品经理?今天我们一起探讨一下! 产品人究竟需要具备哪些能力?看这个最新的能力模型图就知道了。 随着当前市场的细分,不同行业和领域对产品经理的能力要求已经从单一的具备产品专业能力演变成了兼具产品专业技能+行业/业务知识