Halcon颜色通道的处理decompose3/image_to_channels/channels _to _image

Halcon颜色通道的处理

文章目录

  • Halcon颜色通道的处理
    • 一. 图像的通道
    • 二. 访问通道
      • 1.访问通道
      • 2.获取通道的数量
    • 三. 通道分离与合并
      • 1. decompose3算子
      • 2. image_to_channels 算子
      • 3. compose3算子
      • 4. channels_to_image算子
    • 四. 处理RGB信息

由于彩色图像通常包含不止一个通道,因此检测目标在不同的通道图像中的表现形式也不同。通过访问通道、分解或合并通道,可得到合适的、有助于区分目标的图像。

一. 图像的通道

图像的通道是图像的组成像素的描述方式。举例来说,如果图像全部由灰色的点组成,只需要用一个灰度值就可以表示这个点的颜色,那么这个图像就是单通道的。如果这个点有彩色信息,那么描述这个点需要用到R、G、B3个通道,即用红色分量的颜色数量、绿色分量的颜色数量、蓝色分量的颜色数量共同描述这个点的颜色。因此,这样的彩色点组成的图像就具有3个通道。
如果除了R、G、B颜色信息外,还想要用一张灰度图表示像素的透明度,像素点在灰度图上对应的值是0,表示像素完全不发光;对应的值是255,表示像素完全显示,那么这个点就加入了透明度信息,因而有4个通道。这样的点组成的图像就是一幅四通道图像。

二. 访问通道

与访问通道相关的Halcon算子有很多,本小节举例说明两种。

1.访问通道

如要获得某一个指定通道的图像,可以使用access_channel算子。举例如下:

read_image (MultiChannelImage, 'beads.jpg')
access_channel (MultiChannelImage, Red, 1)

以上代码表示从名为MultiChannellmage的图像中取出序号为1的通道图像,存储并命名为Red。

2.获取通道的数量

使用count_channels算子,将返回输入图像中的通道数量。举例如下:

read_image (MultiChannelImage, 'beads.jpg')
count_channels (MultichannelImage, NumOfChannels)

以上代码表示MultiChannelImage 图像中的通道数量,且这一数量信息存储在NumOfChannels变量中。

三. 通道分离与合并

有时完整的RGB信息对于图像分析并没有明显的帮助,特定的颜色反而能帮助区分目标对象。例如,白色布料上的淡紫色花纹在蓝色通道中可能会看不出来,但在红色和绿色通道中却显而易见。因此,可以使用色彩分离的方法,利用某一个通道中的颜色差别,区分出目标物体和背景。注意,白色包含R、G、B3种颜色,且3种颜色的分量都达到了最大值,而淡紫色可能只在蓝色通道中达到了最大值,因此在蓝色通道中显示不出来。

1. decompose3算子

decompose3算子是比较常见的通道分离方法,对于RGB图像来说,如果要分离出3种颜色分量,在Halcon中可以使用decompose3算子进行RGB颜色的通道分离。举例如下:

read_image (MultiChannelImage, 'beads.jpg')
decompose3 (MultiChannelImage, Red, Green, Blue)

这里读取一个多通道的彩色图像,然后使用decompose3算子将其分割为单个通道的图像,decompose3算子的第1个参数为输入图像的名字,后面的3个参数分别对应输出的3个颜色通道的图像名字。程序运行的效果如图所示。
在这里插入图片描述
图(a)为输入的彩色图像,图(b)~(d)分别对应红色、绿色、蓝色通道的图像。

2. image_to_channels 算子

除了3个通道的图像分离以外,也可以使用decompose4算子、decompose5算子、decompose6算子进行多个通道图像的通道分离。还可以使用image_to_channels算子将一幅包含多通道的图像分解为包含多个单通道图像的数组。举例如下:

read_image (MultiChannelImage, 'beads.jpg')
image_to_channels (MultichannelImage, ImageArray)

该段代码运行后,MultiChannelImage的单个通道图像都将被存储在ImageArray数组中。

3. compose3算子

该算子的功能与decompose3算子正好相反,是将3个通道的图像合并起来。举例如下:

read_image (MultiChannelImage, 'beads.jpg')
decompose3 (MultiChannelImage, Red, Green, Blue)
compose3 (Red, Green, Blue, MultiChannelImage)

compose3算子的前3个参数为输入的3个通道的图像,最后一个参数为输出的结果图像。将上文程序分解出的RGB图像作为compose3算子的输入,并进行通道合并,将得到通道分离前的原始图像。
同样,如果有多个通道的图像,还可以分别使用compose4算子、compose5算子、compose6
算子对四通道、五通道、六通道的图像进行合并。

4. channels_to_image算子

该算子的功能与image_to_channels算子正好相反,是将数组内的单通道图像合并成一幅多通道图像。举例如下:

read_ image (Images, ['pico','picl','pic2'])
channels _to _image (Images, MultiChannelImage)

该段代码运行后,Images 数组中的图像将成为MultiChannelImage的一个通道。
可以使用access_channcl算子访问指定的通道图像。

四. 处理RGB信息

分解得到图像的颜色通道之后,可以根据特定的通道图像的颜色特征提取出目标物体。但有时要提取的物体可能有复杂的颜色,无法依赖单一通道进行分割,这时可以进行更进一步的操作。这里可以使用sub_image算子对通道图像做减法运算,以提取出目标色彩区域。举例如下:

read_image (Image, 'data/beads')
decompose3 (Image, Red, Green, Blue)
sub image (Blue, Red, BlueSubRed, 1, 128)
sub image (BlueSubRed, Green, BlueSubRedGreen, 1, 128)
threshold(BlueSubRedGreen, BlueRegion, 230, 255)

图(a)为蓝色通道图像;图(b)为蓝色通道图像与红色通道图像相减的结果;图©为蓝色通道图像与红色通道图像相减后再与绿色通道图像相减的结果:图(d)为在图(c)图像上进行阈值分割,提取出的蓝色珠子的颜色区域。
在这里插入图片描述
除了减法操作外,也可以进行两幅图的相加、相乘、相除等操作,还可以对单个通道进行直方图均衡、局部均衡、亮度控制等操作。应根据实际检测的需求对通道进行合适的操作,在此不一一详述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/308714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题--- 单词搜索

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述…

RS-485 RS-232 RS-422 区别和理解

RS-485,RS-232,RS-422区别和理解 目录概述需求: 设计思路实现思路分析1.概述2.区别 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a b…

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划,我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境,里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代…

管理系统设计开发与学习

目录 封面 一.内容简介 二.技术概述 1.Spring Boot 2.MVC模式 3.数据库技术 4.Web前端技术 5.对接技术 四.体系架构 设计架构 系统分层 系统结构 五.数据库的设计 六.开发准备 开发工具 开发环境 七.学习总结 八…

2024最新最全【学习网络安全必须知道的100 个网络基础知识】

1 什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2 OSI 参考模型的层次是什么? OSI 七层模型:物理层,数据链路层,网络层,传输层,会话层,表示…

理解 AQS 和 ReentrantLock

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、公平锁和非公平锁 1.1 含义 1.2 如何自我实现 1.2.1 公平锁实现: 1.2.2 非公平锁实现: 1.2.3 公平和非公平的区…

第十一章 浏览器对象模型(BOM)的介绍和使用

文章目录 一、BOM介绍二、window的子对象三、window的方法和事件四、定时器五、练习 一、BOM介绍 BOM是Browser Object Model的缩写,简称浏览器对象模型。这个对象就是windowBOM提供了独立于内容而与浏览器窗口进行交互的对象BOM由一系列相关的对象构成&#xff0c…

状态模式-举例

在软件系统中,有些对象也像水一样具有多种状态, 这些状态在某些情况下能够相互转换, 而且对象在不同的状态下也将具有不同的行为。 参考日志来设置状态。 如何判断一个设计模式是行为模式还是什么其他模式? 什么叫行为模式&#…

mongoose中http server服务器解决“Access-Control-Allow-Origin mongoose”跨域问题

问题 使用mongoose做http服务器,自己构造的浏览器端jquery在访问server时,会遇到: Access to XMLHttpRequest at http://127.0.0.1:8000/ from origin null has been blocked by CORS policy: No Access-Control-Allow-Origin header is pr…

rax3000m刷openwrt固件

rax3000m刷机过程(nand版本) 刷机准备文件https://www.123pan.com/s/X5m9-6Ynj.html提取码:VtBW 接线关系:路由器lan口接电脑 1.上传配置开启ssh的配置文件(登录路由器后台管理界面在找到配置管理,上传配置文件rax3…

计算机网络【DNS】

DNS 基本概述 与 HTTP、FTP 和 SMTP 一样,DNS 协议也是应用层的协议,DNS 使用客户-服务器模式运行在通信的端系统之间,在通信的端系统之间通过下面的端到端运输协议来传送 DNS 报文。但是 DNS 不是一个直接和用户打交道的应用。DNS 是为因特…

Nature Machine Intelligence 人形机器人的层次化生成建模

2023年11月2日,德国英特尔研究院,英国伦敦大学学院和美国VERSES研究实验室的研究人员在《Nature Machine Intelligence》杂志发表了一篇题为“Hierarchical generative modelling for autonomous robots”的论文。 研究内容 人类通过规划、执行和…