6、彩色图像的分割

RGB颜色空间的的理解

三基色原理:

大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生,同样绝大多数单色光也可以分解成红绿蓝三种色

    光,红绿蓝三基色按照不同的比例相加合成混色称为相加混色。其中一些混色的规律有:

红色+绿色=黄色;
绿色+蓝色=青色;
红色+蓝色=品红;
红色+绿色+蓝色=白色;

  1. RGB颜色空间:

    (1)、并不是说R值越大,颜色越红。(白色时R=G=B=255)

    (2)、在(0,0,0)---(1,1,1)这两个坐标之间的线段是黑白颜色,且是由黑逐渐变白。它的像素点的RGB关系为

    :R=G=B,这条线上只有亮度,没有彩色,所以也并不是说看不到彩色的黑白图片就一定是单通道的图片,这个图片的每个像素的取值都在这条线上。

2、亮度的定义:

单色光的亮度强度各不相同,根据人的感受是:绿光最亮,红光次之,蓝光最弱,假设得到白光的强度为100%。如果用Y表示景物的亮度,则通常有:
Y=0.299R+0.587G+0.114B
因为红、绿、蓝三基色能够合成自然界所有的色彩,因此在电子设备和软件中,经常使用红绿蓝三基色合成五颜六色的图像。用以上的相加混色所表示的颜色模式成为RGB模式。

注:在一些彩色图转换为灰色图(用亮度来表示的图像)就是利用这个公式进行转换的。

HSV颜色空间定义:

 

色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。

            它们的补色是:黄色为60°,青色为180°,品红为300°;

    注:(1)、直径代表的两种颜色为互补色。

        (2)、在圆周上的颜色代表饱和度为100%,圆周向着圆心饱和度逐渐降低。(掺入白色越来越大)

     (3)、亮度有底下圆锥定点向上越来越亮。

饱和度S:取值范围0.0~1.0,值越大,越饱和。表示掺入白色的多少,若饱和读越高,掺入白色成分就越低。

            当饱和度最低时,为白色。

亮度V:取值范围为0(黑色)~255(白色),表示关照到这种颜色上的强度,光越强亮度越高。亮度最低时为黑色。

例一

  1. 把一张三通道的图片分解为3张单通道的图片:

    read_image (Image, 'F:/Halcon学习/7、测试图片/纯红色.png')

    *分离三通道

    decompose3 (Image, Image_r, Image_g, Image_b)

    分析:由于纯红色的图片Image的每个像素点的RGB=(255,0,0) ,所以分解出来的3张单通道图片的灰度值分别是255(Image_r—白色),0(Image_g---黑色),0(Image_b----黑色

例子二

  1. 目的:如下图,水泵箱中有7个按钮,现在需要把红色按钮区域分解出来。

    注:该图片的像素特征:这幅图像背景和红色按钮的R值都在200左右。

  2. 方法一:

    把这个彩色图片分解为三通道,然后对R通道进行阈值分割。

    read_image (Image, 'F:/Halcon学习/7、测试图片/123.jpg')

    *创建ROI

    gen_rectangle1 (ROI_0, 45.0341, 66.8179, 222.901, 277.983)

    *从大图像中把ROI区域剪裁出来

    reduce_domain (Image, ROI_0, ImageReduced)

    *分离三通道

    decompose3 (ImageReduced, r_Image1, g_Image2, b_Image3)

    这是发现无论怎么调动阈值都无法单独的将红色按钮分离出来,这是因为这是对R通道图像进行操作,而这个图像的特征背景和红色按钮的R值差不多,所以就很难从背景中分离出红色按钮。解决办法如下:

  3. 解决办法:

    read_image (Image, 'F:/Halcon学习/7、测试图片/123.jpg')

    *创建ROI

    gen_rectangle1 (ROI_0, 45.0341, 66.8179, 222.901, 277.983)

    *从大图像中把ROI区域剪裁出来

    reduce_domain (Image, ROI_0, ImageReduced)

    *分离三通道

    decompose3 (ImageReduced, r_Image1, g_Image2, b_Image3)

    *转化为HSV空间,并分离出HSV通道

    trans_from_rgb (r_Image1, g_Image2, b_Image3, h_Image3, s_Image3, v_Image3, 'hsv')

    *这时发现s通道的按钮区域很亮,其他区域很暗

    *,所以现在只对这个通道进行阈值分割,把全部按钮区域分离出来

    threshold (s_Image3, Regions, 90, 255)

    *从输入图片(彩色图)中分离出按钮区域

    reduce_domain (Image, Regions, ImageReduced1)

    *在对这个按钮区域进行RGB三通道分离

    decompose3 (ImageReduced1, lr_Image1, lg_Image2, lb_Image3)

    *R通道进行阈值分割

    threshold (lr_Image1, Regions1, 102, 255)

     

 

 

posted @ 2022-04-30 20:48  ihh2021  阅读(1220)  评论(0编辑  收藏  举报