1.1 Halcon数据结构
Halcon中,Image = Channel + Domain , 像素点存放在Channel矩阵中,根据ROI来描述Image。
Image相关操作:
- 输入:从文件、从设备
- 生成:外部图像数据、空内存区域;
- 显示:disp_image()图像首通道灰度图;disp_color()
彩色图;disp_channel()某特定通道;disp_obj() 自动判别类别; - 缩放:set_part() 设置显示区域;set_part_style() 设置显示参数;
- 3D显示:(略)
边界点的处理:镜像、常数、延续、周期(略):
域的局限性:一些算子总是要处理周围的矩形区域,比如mean_image(),并且总是先处理小的区域;
测量工具中的ROIs比较特殊,这种ROIs并不依附于Image上,而是在算子gen_measure_*()后产生,并且也只能是任意朝向的矩形、圆弧形区域;
处理多通道图像:
- 分割:Gray operators仅适用第一通道,Color operators: 使用前三个通道,Multi channel
operator会使用全部通道;
//对“Gray operators仅适用第一通道”的解释:实际上,灰度图,就是用第一通道(Red)像素点值所构建出来的那幅图。
- 过滤:所有通道被处理时均使用相同的参数,并且结果的通道数与处理的图片相同;
- 可以将域的处理结果,与原图像结合在一起作为输入图像;
- 通道处理:count_channels(),decompose*(), compose*(), access_channel(),
append_channel(), channels_to_image(), image_to_channels()
图像金字塔中,第一个图像为最大的图像,各图像有各自的区域
标准图形(Shape):circle、ellipse、rectangle1、rectangle2、line、polygon
特殊区域图形:gen_grid_region(): grid、lines、points, gen_checker_region()
图像处理:
- 修改:set_grayval() : Modify one or more pixels of the input
image;paint_gray(): Paint part of an image into another image;
overpaint_gray(): Paint part of an image into the input image;
paint_region(): Paint the region with a constant gray value into an
image; overpaint_region() : Paint the region with a constant gray
value into the input image - 复制:crop_part(): Crop a rectangle, given by upper left corner and
size; crop_rectangle1(): Crop a rectangle, given by upper left and
lower right corner; crop_domain(): Crop area of the smallest
rectangle1 of the domain; crop_domain_rel(): Like crop_domain but
with the possibility to change the size of bounding box;
change_format(): Limit the size of the image at the lower or the
right part; get_grayval(): Access one or multiple pixel values Ø
Tile: tile_images(), tile_images_offset(), tile_channels()
1.2 Halcon数据结构
区域运算:
- 并:union1()、union2();
- 交:intersection();
- 差:difference();
- 补:complement();
图形显示参数设置:
- 显示模式:set_draw(); 参数:margin、filled
- 线宽线形:set_line_width(); set_line_style();
- 颜色:set_color(); set_colored(); set_rgb(); set_gray();
- 显示图形:set_shape(); 参数:original、outer circle、inner
circle、rectangle1、rectangle2、ellipse、icon - set_icon
1.3 Halcon数据结构
关于XLD,简要写一下:
图像均用像素点保存,而像素点是整型的,不连续的;Halcon做了拓展,定义了亚像素(subpixel)的对象:xld;其实xld已经用过了,比如提取边缘、构建轮廓等等,xld在模板匹配、图形校准等多方面有重要的用途。
1.4 色彩 color
在视网膜底部,有三类感光细胞,它们分别探测不同频率的光,产生RGB神经冲动,并把这些神经冲动传递下去;经过另外的细胞的处理,转换成1个亮度通道、两个色彩通道。
- The RGB stimulus is converted to a luminance and 2 chrominance
channels
所以,RGB图是原始的感光图,而人眼的感觉,却不是RGB三通道的叠加;更直观地描述人的感觉,需要用到其他的色彩空间,比如hsv空间。
不同频率的光,会产生不同的颜色;而光只有三种颜色,这是因为人眼只有三种光感受器。
所以有,任何光产生的颜色,都能够由这三种纯色来合成,这就是光的三元色。 点击查看原图
对于相机来说,能够检测到的光谱范围比人眼要宽泛,比如红外相机等;为了获得人眼类似的图像,可以加上过滤装置,滤去超出400-700nm范围的光线。
1.5 色彩空间及Halcon颜色处理
CCD彩色相机有R、G、B三种感光芯片,捕捉不同颜色,然后转换为RGB三通道。
颜色空间:
- RGB Red、Green、Blue三色通道,对光来说,犹如在黑暗中点亮各分色。
- CMY Cyan、Magenta、Yellow 三颜色通道,犹如在白纸上图颜料
- YUV、YIQ Y描述亮度、其余两通道描述颜色(的差值),用于电视转播
- ARgYb 与上类似,A描述亮度,其余两者描述颜色差值
- I1i2i3 与上类似,i1描述亮度
- HSI Hue、Saturation、Intensity 分别描述颜色、饱和度、亮度
- HSV 与上类似,这里的V描述亮度,方法与上不同
- HSL 与HSI类似,L描述亮度,但Hue与之不同
- HIS 与HIS类似
- Uniform Color Space、CIE uv 用二维图描述色彩
- CIE Lab 高级色彩空间,较少使用
颜色空间的转换,依靠GPU进行运算:trans_from_rgb(),速度快
Scale_image() 可以对单通道(RGB、或HSV中的)进行重新渲染;
颜色的选取,通过对Hue通道进行threshold()
2D Histogram 可用来描述两通道(RGB、HSV等中的)相应值对应关系,可用来选取颜色相近区域:histo_2dim()
N维像素分类:learn_ndim_norm()、learn_ndim_box()
LUT:MLP、SVM、GMM
彩色过滤器:用于彩色图像的分割等:edges_color()、edges_color_sub_pix()、lines_color()
1.6 Halcon 窗体
Halcon窗体的坐标系统:(Row, Column) (Width, Height)
图形:可以显示灰度图、彩色图、3D;定义要显示的区域,插值
区域:绘图模式(Fill、Margin),边界、线宽,定义色彩模式,自动图形转换
绘图:点、线、xld等