Halcon视频学习2.1-- 图形变量

一、图形变量image

1、通道:每一个通道可以理解为一个矩阵,彼此独立,灰度图是单通道,RGB图是三通单

2、像素类型:int1, int2, uint2, int4, int8, byte, real,direction, cyclic, complex, 常见的是byte(8位,一个字节,区间0-255,0是黑,255是白);

3、图像算子:算子---àImage  (打开Halcon)

4、预处理图像:

         对图像的某些预处理:使用mean_image或binomial_filter消除噪声;

         抑制小斑点或细线使用median_image;

         平滑图像可以使用smooth_image;

         如果又想平滑图像又想保存边缘,可以尝试anisotropic_diffusion;

二、图像变量Region

1、region可以理解为符合某些性质像素的子集;

2、region实例(region.hdev);

3、region的形态可以是任意的,单独的一个点都可成为是一个region;

形成region方式:

         threshold (Image, Region, 128, 255) *使用全局阈值分割图像,对灰度值在128到255之间的图像划分为一个区域

         gen_circle(Circle, 300, 300, 50) *直接生成region,生成一个圆,圆心(300,300),半径50 

gen_ellipse (Ellipse, 300, 300, 0, 150,100) *直接生成region,生成一个椭圆,  圆心(300,300),倾斜角0°,长径150,短径100;

         draw_region(Region1, WindowHandle)  *通过鼠标生成region,通过其他转换成region比如XLD;

         表现形式有填充fill和边缘margin

4、region结构是游程(行程)编码的一种变体;

5、游程编码:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度;属于无损压缩编码,例子:AAABBBBBCCDDDD ;游程编码:A3B5C2D4

6、region的选择操作(select_shape)

         select_shape(Regions : SelectedRegions : FeaturesOperationMinMax : )

Features,形状特性检查,选择某些特征的region,参看例程select_shap.hdev

read_image (Image, 'fabrik')

dev_close_window ()

dev_open_window (0, 0, 512, 512, 'black',WindowID)

dev_set_color ('white')

dev_set_draw ('fill')   *定义区域填充模式

regiongrowing (Image, Regions, 1, 1, 3, 10)

dev_set_color ('red')

select_shape (Regions, SelectedRegions,'convexity', 'and', 0.95, 1) *粗度在0.95-1之间

dev_set_color ('green')

select_shape (Regions, SelectedRegions,'width', 'and', 100, 512)  *宽度在100-512之间

dev_set_color ('blue')

select_shape (Regions, SelectedRegions,'area', 'and', 1, 100)   *面积在1-100之间

area_center(Regions : : : AreaRowColumn)    *计算区域面积和任意形状的区域中心坐标

7、region联合操作

Halcon视频学习2.1-- 图形变量_第1张图片

8、Region转换操作(shape_trans) 变换的形状区域

shape_trans(Region :RegionTrans : Type : ) *Type:转换的类型:凸'convex',椭圆'ellipse',外接圆'outer_circle',内切圆 'inner_circle',正方形'rectangle1',长方形 'rectangle2',

内接长方形'inner_rectangle1','inner_center'

 

 

三、图像变量XLD(eXtendedLine Descriptions)

1、XLD代表亚像素精度的边缘轮廓和多边形;

2、XLD实例(XLD与Region-----xld.hdev);

3、XLD与Region相互转化;XLD与Region有很多相似之处;

4、XLD并不是沿着像素与像素交界的地方,而经过插值之后的位置;

       threshold_sub_pix (Image, Border, 80)

       threshold (Image, Region, 0, 80)

       gen_contour_region_xld (Region, Contours, 'border') *边缘轮廓为曲线,亚像素,精度高

5、XLD选择操作(select_shape_xld ,select_contours_xld) 选择某些特性的XLD

       select_shape_xld(XLD : SelectedXLD : Features,OperationMinMax : )

Features形状特性检查:面积'area',圆'circularity',非等轴的anisometric

       select_contours_xld(Contours : SelectedContours : FeatureMin1Max1Min2Max2 : )

参看例程:select_shape_xld.hdev

*这个例子展示了一些可能性选择轮廓使用他们特性的方法

dev_close_window ()

read_image (Letters,'letters')

crop_part (Letters,ImagePart, 295, 4, 200, 400)*剪出一个矩形图像区域,行列索引图像区域的左上角

get_image_size (ImagePart,Width, Height)

dev_open_window (0, 0,Width*2, Height*2, 'black', WindowHandle)

dev_display (ImagePart)

OpSystem :=environment('OS')   *把电脑的操作系统传给OpSystem

if (OpSystem='Windows_NT')    *if语句根据操作系统设置字体

    set_font (WindowHandle, '-CourierNew-12-*-*-*-*-*-')

else

    set_font (WindowHandle,'-adobe-courier-bold-r-normal--14-*-*-*-*-*-*-*')

endif

for Column := 0 to 4 by 1

dev_set_color('green')                                                  

gen_rectangle1(Rectangle, 1, 2+40*Column, 395, 32+40*Column) *创建一个矩形平行于坐标轴

reduce_domain (ImagePart, Rectangle,ImageReduced) *降低图像的领域

  threshold_sub_pix (ImageReduced, Border,100)  *从图像中提取亚像素精度,100是阈值水平

    set_tposition (WindowHandle, 80,4+40*Column) *设置文本光标的位置

    dev_set_color ('red')

    if (Column=0)

        * select circular contours  选择圆形轮廓,圆度在0.8-1

        select_shape_xld (Border, SelectedXLD,'circularity', 'and', 0.8, 1)

        write_string (WindowHandle, 'circular')   写的位置怎么确定

       endif

    if (Column=1)

        * select convex contours   曲面的,凸度在0.8-1的

        select_shape_xld (Border, SelectedXLD,'convexity', 'and', 0.8, 1)

        write_string (WindowHandle, 'convex')

    endif

    if (Column=2)

        * select anisometric contours   非等轴的,离心率在1.4—999999的

        select_shape_xld (Border, SelectedXLD,'anisometry', 'and', 1.4, 9999999)

        write_string (WindowHandle, 'aniso-')

        set_tposition (WindowHandle, 85,4+40*Column)

        write_string (WindowHandle, 'metric')

    endif

    if (Column=3)

        * select compact contours  紧凑的,紧密的

        select_shape_xld (Border, SelectedXLD,'compactness', 'and', 5, 9999999)

        write_string (WindowHandle, 'compact')

    endif

    if (Column=4)

        * 最大半径在0-7之间的

    select_shape_xld (Border, SelectedXLD,'max_diameter', 'and', 0, 7)

        write_string (WindowHandle, 'small')

        set_tposition (WindowHandle, 85,4+40*Column)

        write_string (WindowHandle, 'diameter')

    endif

endfor

 

area_center_xld(XLD : : : AreaRowColumnPointOrder) *计算xld面积和中心位置

 

 

6、XLD的合并操作

   union_cillinear_contours_xld合并在同一直线上的XLD

       union_cocircular_contours_xld:合并在同圆的XLD

       union_adjacent_contours_xld:合并邻近的XLD

7、XLD共圆合并的操作实例

8、XLD的转换操作(shape_trans_xld)

       shape_trans_xld(XLD : XLDTrans : Type : )

       XLD转换操作和Region的转换操作相似

Halcon视频学习2.1-- 图形变量_第2张图片

9、XLD的分割操作(segment_contours_xld)

把原XLD分割成:直线,直线和圆,直线和椭圆

segment_contours_xld(Contours : ContoursSplit : ModeSmoothContMaxLineDist1MaxLineDist2 : )

10、XLD的拟合操作(fit_***_contour_xld),这是XLD特有的

fit_circle_contour_xld:拟合圆

fit_ellipse_contour_xld:拟合椭圆

fit_line_contour_xld:拟合直线

fit_rectangle2_contour_xld:拟合矩形

转载网址:http://m.blog.csdn.net/blog/maque351081953/17512307


你可能感兴趣的:(Halcon视频学习2.1-- 图形变量)