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

news/2025/1/17 7:57:45/

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.ppmy.cn/news/1285539.html

相关文章

JAVA B/S架构智慧工地源码,PC后台管理端、APP移动端

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解前言ShuffleNet_V2讲解四条实用指导思想G1:相等的通道宽度可以降低存储访问成本G2:大量的分组卷积…

机器学习距离度量方法

1. 机器学习中为什么要度量距离? 机器学习算法中,经常需要 判断两个样本之间是否相似 ,比如KNN,K-means,推荐算法中的协同过滤等等,常用的套路是 将相似的判断转换成距离的计算 ,距离近的样本相…

Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)

PDF(Portable Document Format)已成为一种广泛使用的电子文档格式。PDF的主要优势是跨平台,可以在不同设备上呈现一致的外观。然而,当我们需要对文件内容进行编辑或修改,直接编辑PDF文件会非常困难,而且效果…

OfficeWeb365 Indexs 任意文件读取漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 /Pi…

学生基本信息管理项目

设计目的 在完成C语言基础内容学习的基础上,结合数组、字符串、结构体与链表等内容,继续综合应用相关理论和编程技术,分析、设计并完成一个可应用的小项目。通过本项目,更为系统地建立知识的关联性,通过对问题的分析和…

如何在Vue.js中使用$emit进行组件通信

Vue.js是一个渐进式JavaScript框架,它以其简洁的数据绑定和组件系统而闻名。在构建具有多个组件层次的Vue应用时,组件间的通信成为一个关键的话题。Vue提供了一种名为$emit的方法,允许子组件向父组件发送消息。本文将详细介绍如何在Vue中使用…

[大厂实践] Chick-fil-A的服务API流程实践

本文介绍了美国快餐连锁巨头Chick-fil-A在技术团队中引入Buf和Connect解耦API依赖并实现了良好的API定义模式。原文: Connect(ing) Chick-fil-A 背景 2018年,Chick-fil-A的客户技术团队遇到了一些API问题。该团队擅长构建API,这些API可以实现一些了不起的…