《HALCON机器视觉与算法原理编程实践》第7章 颜色与纹理-学习笔记

7.1 图像的颜色

7.1.1 图像的色彩空间

(1)RGB颜色空间
在这里插入图片描述
(2)灰度图像
即单通道图像,每个像素的灰度值为0~255。
(3)HSV/HSI
在这里插入图片描述
HSV (色相hue, 饱和度saturation, 明度value), 也称HSB (B指brightness) 是艺术家们常用的,因为与加法减法混色的术语相比,使用色相,饱和度等概念描述色彩更自然直观。HSV 是RGB色彩空间的一种变形,它的内容与色彩尺度与其出处——RGB色彩空间有密切联系。

HSL (色相hue, 饱和度saturation, 亮度lightness/luminance), 也称HLS 或 HSI (I指intensity) 与 HSV非常相似,仅用亮度(lightness)替代了明度(brightness)。

7.1.2 Bayer图像

参考链接:https://www.cnblogs.com/whw19818/p/6223143.html
bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发明的,Bryce Bayer所发明的拜耳阵列被广泛运用数字图像。

对于彩色图像,需要采集多种最基本的颜色,如rgb三种颜色,最简单的方法就是用滤镜的方法,红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐。当用bayer格式的时候,很好的解决了这个问题。bayer 格式图片在一块滤镜上设置的不同的颜色,通过分析人眼对颜色的感知发现,人眼对绿色比较敏感,所以一般bayer格式的图片绿色格式的像素是是r和g像素的和。

另外,Bayer格式是相机内部的原始图片, 一般后缀名为.raw。很多软件都可以查看, 比如PS。我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片, 都是从.raw格式转化过来的。如下图,为bayer色彩滤波阵列,由一半的G,1/4的R,1/4的B组成。
在这里插入图片描述

7.1.3 颜色空间的转换
* 将一个RGB图像转换成任意的颜色空间
trans_from_rgb (BlueSubRedGreen, BlueSubRedGreen, BlueSubRedGreen, ImageResult1, ImageResult2, ImageResult3, 'hsv')
* 将三个任意颜色空间的3个通道图像转换为RGB图像
trans_to_rgb (ImageResult1, ImageResult1, ImageResult1, ImageRed, ImageGreen, ImageBlue, 'hsv')
* 创建一个颜色查找表
create_color_trans_lut ('hsv', 'from_rgb', 8, ColorTransLUTHandle)

7.2 颜色通道的处理

7.2.1 图像的通道

图像通道在RGB色彩模式下就是指在下就是指那单独的红色R、绿色G、蓝色B部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。同样在HSV色系中指的是色调H,饱和度S,亮度V三个通道。

7.2.2 访问通道
* 读取图像
read_image (Image2, 'data/beads.jpg')
* 从Image2取出序号为1的通道图像,取名为Red
access_channel (Image2, Red, 1)
* 获取Image2图像中通道的数量
count_channels (Image2, Channels)
7.2.3 通道分离与合并
* 读取图像
read_image (MultiChannelImage, 'data/beads.jpg')

* 通道分离
decompose3 (MultiChannelImage, R, G, B)
* 将多幅单通道图像合并成一幅多通道图像
compose3 (R, G, B, MultiChannelImage1)

* 通道分离为数组
image_to_channels (MultiChannelImage, ImageArray)

* 将数组内的单通道图像合并成一幅多通道图像
channels_to_image (ImageArray, MultiChannelImage2)
7.2.4 处理RGB信息
read_image (Image, 'data/beads.jpg')
decompose3 (Image, Red, Green, Blue)
sub_image (Blue, Red, BlueSubRed, 1, 128)
sub_image (BlueSubRed, Green, BlueSubRedGreen, 1, 128)
threshold (BlueSubRedGreen, BlueRegion, 230, 255)

7.3 利用颜色信息提取背景相似的字符区域

read_image (Image, 'data/m105')
*将原始图像进行通道分离,得到红绿蓝三个分量的图像	
decompose3 (Image, Red, Green, Blue)
*将RGB三个分量的图像转化为H(色调)、S(饱和度)、V(明度)的图像
trans_from_rgb (Red, Green, Blue, ImageResultH, ImageResultS, ImageResultI, 'hsv')
*对饱和度图像阈值处理,分割出高饱和度区域,即字符区域的大致范围
threshold (ImageResultS, High, 192,255)
*区域分割,
reduce_domain (ImageResultH, High, ImageReduced)
*并进行膨胀操作
dilation_circle (ImageReduced, RegionDilation, 3.5)
*开运算,使边缘更清晰
opening_circle (RegionDilation, RegionChars, 5.5)
dev_clear_window ()
dev_display (RegionChars)

7.4 纹理分析

read_image(Image, 'data/cloth')
*将图像分解成RGB三个通道
decompose3 (Image, Image1, Image2, Image3)
*将RGB三个通道的图像,转化为HSV图像空间
trans_from_rgb (Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')
*进行纹理检测。
*其中选择的滤波器类型是‘ls’,即行方向用‘level’,列方向用‘spot’进行检测。
*这种滤波器类型适合检测垂直方向上的缺陷。
texture_laws (ImageResult2, ImageTextureLS, 'ls', 2, 7) 
*对滤波器处理后的图像进行均值化,使图像更平滑,缺陷区域明显
mean_image (ImageTextureLS, ImageMean, 11, 11)
*对检测出的缺陷区域进行形态学处理并显示出来
threshold (ImageMean, Regions, 60, 255)
*将符合条件的区域分隔成独立区域
connection(Regions, ConnectedRegions)
*计算各区域的面积,提取出面积最大的区域
area_center (ConnectedRegions, Area, Row, Column)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', max(Area), 99999) 
*做闭运算,提取出缺陷区域
closing_circle(SelectedRegions, RegionClosing, 11.5)
dev_clear_window ()
dev_display (RegionClosing)
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值