图像的颜色及Halcon颜色空间转换transfrom_rgb/trans_to_rgb/create_color_trans lut

2023-12-30 08:12

本文主要是介绍图像的颜色及Halcon颜色空间转换transfrom_rgb/trans_to_rgb/create_color_trans lut,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图像的颜色及Halcon颜色空间转换

文章目录

  • 图像的颜色及Halcon颜色空间转换
    • 一. 图像的色彩空间
      • 1. RGB颜色
    • 2. 灰度图像
    • 3. HSV/ HSI
    • 二. Bayer 图像
    • 三. 颜色空间的转换
      • 1. trans_from_rgb算子
      • 2. trans_to_rgb算子
      • 3. create_color_trans_lut算子

图像的颜色能真实地反映人眼所见的真实世界。图像的颜色信息,特别是通道信息,有助于感兴趣特征的描述,也有利于从空间域上对图像进行分割或增强操作。下面将介绍图像的色彩表达方式及其通道操作。

一. 图像的色彩空间

1. RGB颜色

RGB 是我们最熟悉的一种表示颜色的方式,也就是彩色。彩色图像的每个像素拥有3个通道,各8位,分别表示R(Red,红色)、G(Green,绿色)、B(Blue,蓝色)3个分量,各自的取值范围都为0 -255。将这3种分量组合,可以得到更多的颜色表示方式。例如,红色和绿色结合可以产生黄色,红色和蓝色结合产生红色,绿色和蓝色结合产生青色。这3种颜色分量也可以用来表示不同等级的灰色。例如,当3个分量都为0时,表示的颜色是黑色;当3个分量都为最大值255时,将得到白色。3个分量的组合,将产生范围为0~255的由深到浅的灰色。

2. 灰度图像

灰度图像即单通道图像,每个像素的灰度值为0~255,其中0表示全黑,255表示全白。对于显示或者形态学处理等操作来说,灰度图像已经足够满足需求。因此,为了节约计算量并加快处理速度,也会将彩色图像转化为灰度图像进行处理。在Halcon中,可以使用rgb1_to_gray 算子或rgb3_to_gray 算子将彩色图像转化为灰度图像。注意,灰色并不是RGB分量的等比例组合,RGB分量的权重各不相同。

3. HSV/ HSI

HSV分别代表色调(Hue)、饱和度(Saturation)、纯度(Value)。HSI则表示色调(Hue)、饱和度(Saturation)、亮度(Intensity)。
色调反映了人眼对颜色的感觉,如看上去是红色还是蓝色。饱和度反映了颜色中所含的颜色数量的差别,如红色和粉色的饱和度就不相同。纯度或者亮度反映的是光线对颜色的影响程度,或者说是颜色的密度,如深灰和浅灰的差别。
当RGB颜色空间不足以区分检测目标与背景时,可以使用HSV/HSI进行尝试。例如,检测深蓝背景上的浅蓝色目标,可以使用饱和度或者明度进行区分;又如,当对RGB通道的图像进行平滑滤波等降噪操作时,图像的颜色分量将发生变化,而如果是在HSI分量上操作则不会有这个问题。
因此,可以根据具体要求,将图像从RGB抓换为HSV/HSI,或者由HSV/HSI重新转换为RGB。

二. Bayer 图像

某些专业级相机会使用3个滤镜,分别将光线分为红、绿、蓝3个分量,以此来获取彩色图像。但是由于其成本高,实用性不强,没有得到广泛使用。更多的做法是使用单芯片和一个Bayer滤色片过滤不同颜色的光线并得到不同通道的颜色信息,用这种方法输出的图像就是Bayer图像,即每个像素只有一个颜色分量的图像。
一般情况下,相机或者其驱动程序会自动对Bayer图像进行一些转换,并输出正常的RGB图像。但有些时候,如果未使用Halcon的图像采集接口,而是用相机SDK采集的图像,则可能会输出未经处理的 Bayer 图像,如图所示。
在这里插入图片描述
图(a)为相机采集得到的Bayer图像,图(b)为图 (a)的Bayer 图像放大两倍后的局部图像,图(c)为该Bayer 图像局部放大多倍后的像素排列图。例如,图(c)中的第一行第一列的像素标注为G,表示该像素对应于绿色通道中该位置的像素灰度值;第一行第二列的像素标注为B,表示该像素对应于蓝色通道该位置的灰度值。因此,Bayer 图像的类型也是由该像素排列图的前两个像素决定的。
如果要将 Bayer 图像转换为RGB图像,可以使用Halcon中的cfa_to_rgb算子进行色彩的转换。cfa to_rgb算子根据输入图像的Bayer 图像类型,通过插值的方式获取RGB图像。该算子包括以下4个主要参数。
(1)参数1:CFAImage,表示输入的Bayer图像。
(2)参数2:RGBImage,表示输出的RGB彩色图像。
(3)参数3:CFAType,表示 Bayer 图像的类型,即采用哪种编码方式。如图(c)所示,该图像中第一行的前两个像素为G和B,因此该图的CFAType应该选择bayer_gr。其他类型还有bayer_gr、bayer_bg、bayer_rg,应根据具体类型进行选择。
(4)参数4:Interpolation,表示插值的方法。默认选择biliner,还可以选择biliner_dir或
biliner_enhanced。前者会减少插值后的锯齿,使边缘更平滑;后者又在前者的基础上优化了插值结果,使颜色更加真实,但是相应的代价是运行时间更长了。

三. 颜色空间的转换

在图像处理的过程中,有时仅参考RGB颜色空间无法得到理想的结果,这就需要对颜色空间做一些转换。例如,使用HSV或者HSI颜色空间,可以通过色调、饱和度、亮度信息来对图像好行处理。例如,若要识别具体的颜色,可以使用HSV空间中的H分量(色调)或者S分量(饱和度进行判断;又如,若要调整图像的亮度,可以使用HSV空间中的V分量(色调)进行调整。
Halcon支持多种颜色空间的快速转换,如transfrom_rgb、trans_to_rgb、create_color_trans lut,下面举例说明。

1. trans_from_rgb算子

该算子用于将一个RGB图像转换成任意的颜色空间,该算子有7个主要的参数。参数13分别为输入的RGB3个通道的图像。参数46分别为输出的3个通道的图像。参数7为输出图像的颜色空间,可选的有HSV、HIS、YIQ、YUV、CIELab等。

2. trans_to_rgb算子

该算子与trans from_rgb算子的作用正好相反,它用于将任意颜色空间的3个通道图像转换成RGB图像,该算子有7个主要的参数。参数13分别为输入的3个通道的图像。参数46分别为输出的RGB3个通道的图像。参数7为输入图像的颜色空间,可选的有HSV、HIS、YIQ.YUV、CIELab等。

3. create_color_trans_lut算子

该算子的功能是创建一个颜色查找表(Look up Table,LUT),用于将RGB图像转换成另一个颜色空间。颜色查找表是一种预定义的颜色“索引”,可以将256色的RGB值分别进行指定。简言之,就是将原始颜色通过查表的方法赋值为另一种颜色。
该算子的第1个参数为ColorSpace,表示转换操作的另一种颜色空间;第2个参数为TransDirection,表示转换的方向,如fromrgb或者to_rgb;第3个参数为NumBits,表示输入图像的位数,也是输出图像的位数;第4个参数为输出的LUT的句柄。

这篇关于图像的颜色及Halcon颜色空间转换transfrom_rgb/trans_to_rgb/create_color_trans lut的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

三色标记(Tri-color marking)

维基百科部分 原文 https://en.wikipedia.org/wiki/Tracing_garbage_collection#TRI-COLOR Because of these performance problems, most modern tracing garbage collectors implement some variant of the tri-color ma

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

win7系统中C盘空间缩水的有效处理方法

一、深度剖析和完美解决   1、 休眠文件 hiberfil.sys :   该文件在C盘根目录为隐藏的系统文件,隐藏的这个hiberfil.sys文件大小正好和自己的物理内存是一致的,当你让电脑进入休眠状态时,Windows 7在关闭系统前将所有的内存内容写入Hiberfil.sys文件。   而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑