Halcon 颜色分割算子、RGB和HSV之间的转换
认识RGB和HSV
在图像数字处理中,RGB和HSV是两种常用的颜色空间。
RGB代表 红色、绿色。蓝色
HSV代表 色相(Hue)、饱和度(Saturation)、明度(Value)
RGB常用于显示系统,是一种面向硬件的颜色空间
HSV常用于图像分析和处理,是一种符合人类视觉感知的颜色空间
下面这个圆柱体表示 HSV空间 H用极坐标的极角表示 S用极坐标的极轴长度表示 V用圆柱中的高度表示
Hue用角度度量 范围: 0~360度
Halcon中的算子
原图
1. decompose3 图像分解
decompose3(MultiChannelImage,Image1,Image2,Image3)
将参数1图像转换成参数2,参数3,参数4
示例代码
decompose3 (Image, R, G, B)
dev_open_window (0, 0, Width/15, Height/15, 'black', WindowHandle)
dev_display (Image)
dev_display (R)
dev_display (G)
dev_display (B)
转换后的R图
转换后的G图 
转换后的B图
2.trans_from_rgb 颜色空间变换
trans_from_rgb(
ImageRed
,ImageGreen
,ImageBlue,
ImageResult1, ImageResult2, ImageResult3 , ColorSpace)
功能: 将图像从RGB颜色空间转换为任意空间(ColorSpace)。图像的三个通道在输入和输出上作为三个单独的图像传递
trans_from_rgb算子支持图像类型byte,uint2,int4和real。对于int4图像,图像不应包含负值。在真实图像的情况下,所有值都大部分都在0和1之间
输入参数
- ImageRed: 输入图像(红色通道)
- ImageGreen: 输入图像(绿色通道)
- ImageBlue: 输入图像(蓝色通道)
输出参数
- ImageResult1: 输出图像(通道1)
- ImageResult2: 输出图像(通道2)
- ImageResult3: 输出图像(通道3)
ColorSpace: 输出图像的颜色空间
- 默认值: ‘hsv’
- 可选值(用于计算设备): ‘cielab’, ‘cielchab’, ‘cieluv’, ‘cielchuv’, ‘hsv’, ‘hsi’
-
可选值:‘argyb’, ‘cielab’, ‘cielchab’, ‘cielchuv’, ‘cieluv’, ‘ciexyz’, ‘ciexyz2’, ‘ciexyz3’, ‘ciexyz4’, ‘hls’, ‘hsi’, ‘hsv’, ‘i1i2i3’, ‘ihs’, ‘lms’, ‘yiq’, ‘yuv’
示例代码
* RGB转换HSV
trans_from_rgb (R, G, B, H, S, V, 'hsv')
H图
S图
V图
3.compose3 三通道合并图
效果和decompose3 相反
示例代码
compose3 (H, S, V, hsv)
dev_open_window (0, 0, Width/12, Height/12, 'black', WindowHandle)
dev_display (hsv)
HSV效果图
运行结果对比 RGB HSV
Halcon 算子示例
* 关闭窗口
dev_close_window ()
* 关闭程序计数器,图形变量更新,窗口图形更新
dev_update_off ()
* 读取图片
read_image (Image, 'F:/素材收集/图片素材/Videoshot_20241115_010654.jpg')
* 获取图像大小
get_image_size (Image, Width, Height)
* 彩色图像分割
decompose3 (Image, R, G, B)
* 打开一个窗体
dev_open_window (0, 0, Width/15, Height/15, 'black', WindowHandle)
* 在窗体展示图片
dev_display (Image)
dev_display (R)
dev_display (G)
dev_display (B)
*trans_from_rgb (R, G, B, H, S, V, 'rgb')
compose3 (R, G, B,rgb )
dev_display (rgb)
* RGB转换HSV
trans_from_rgb (R, G, B, H, S, V, 'hsv')
compose3 (H, S, V, hsv)
dev_open_window (0, 0, Width/12, Height/12, 'black', WindowHandle)
dev_display (hsv)