zoukankan      html  css  js  c++  java
  • 初识 Image,region,xld(1)

    一、 图像 

    根据每个像素信息不同,通常将图像分为:二值图,灰度图,RGB图像

    1.二值图:
    每个像素只有0(黑)1(白)两种颜色的图像成为二值图。

    2.灰度图:
    在黑与白之间构建更多的颜色深度,一般灰度从暗黑色到最亮的白色过渡,根据保存灰度数值所使用的的数据类型的不同,可以有2^k种,k=1时是二值图,k=8时是常见的灰度图。

    3:RGB图像:
    有Red、Green、Blue三个颜色组合而成,三个颜色各有256个级别,每种原色采用8位二进制整数表示,于是三通道RGB共需要24位二进制数,共可以表示颜色种类数为256*256*256=2^24,大约1600万种颜色。

    第一种:
    ImagePath := []ImagePath[0] := 'D:/halcon_test/读取多张图片的方式/1.jpg'ImagePath[1] := 'D:/halcon_test/读取多张图片的方式/2.jpg'ImagePath[2] := 'D:/halcon_test/读取多张图片的方式/3.jpg'ImagePath[3] := 'D:/halcon_test/读取多张图片的方式/4.jpg'ImagePath[4] := 'D:/halcon_test/读取多张图片的方式/5.jpg' for Index := 0 to 4 by 1    dev_close_window ()    read_image (Image, ImagePath[Index])    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor
    第二种:
    for i := 1 to 5 by 1    dev_close_window ()    read_image (Image, 'D:/halcon_test/读取多张图片的方式/'+i+'.jpg')    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor
    第三种:
    for I := 1 to 5 by 1     dev_close_window ()    *I$表示引用I的值,而'1d'的'd'则表示采用十进制数表示,取一位数,如1、2、3此类,    *故'3d'则表示为取三位十进制数,如001、002、003诸如此类    read_image (Image, 'D:/halcon_test/读取多张图片的方式/'+I$'1d')    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor
    第四种:
    第四种方法  (读取一个文件夹下的所有图片)
    【助手】-->【打开新的image acquisition 】-->【图像助手】-->【选择路径】-->【代码生成】-->【插入代码】

    二、Region 

    Region可以理解为符合某些性质像素的子集。Region的形状可以是任意的,单独的个点都可以成为一个Region,Region结构是游程编码的一种变体;

    游程(行程)编码:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度,属于无损压缩编码。

    例子: AAABBBBBCCDDDD

    游程编码:A3B5C2D4 

    threshold (Image, Region, 128, 255)

    使用阈值分割图像,得到灰度值在最小到最大之间的那些像素区域(二值化算子对于彩图只针对第一通道二值化 可以通过access_channel(MultiChannelImage : Image : Channel : )获取不同通道的图像再进行二值化)

    (1)basic基础特征:面积,中心,宽高,左上角及右下角坐标,长半轴短半轴椭圆方向,粗糙度,联通数,最大半径,方向等;

    (2)shape形状特征:外接圆半径,内接圆半径,圆度,紧密度,长度,矩形度,凸性,偏心率,外接矩形的方向及两边长度等;

    (3)几何矩特征:二阶矩,三阶矩,主惯性轴等;

    复制代码
    regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize : ) 
    * 区域填充分割图像 (生成的region可以通过select_shape算子选取凸性特征,convexity
    Row:掩膜Height;
    Column:掩膜Width;
    Tolerance:掩膜内灰度值差小于等于这个值则认为是同一个region;
    MinSize:单个region的最小面积值;
    复制代码
    area_center(Regions : : : Area, Row, Column)
    * 计算面积和任意形状的区域中心位置(中心位置不一定在region上)
    union2(Region1, Region2 : RegionUnion : : )
    * 把两个region合并成一个region
    * region2中的对象会先合并成一个对象再与region1中的对象进行合并,合并后的regionUnion对象个数与region1一致;
    difference(Region, Sub :RegionDifference : : ) 
    * 计算两个区域的差 RegionDifference = Region - Sub

     

    complement(Region : RegionComplement : : ) 
    * 计算一个区域的补集

     三、 XLD

    相对于图像image和区域region,这些数据结构是像素精度的,在实际工业应用中,需要比图像像素分辨率更高的精度,这时就需要提取亚像素精度数据,亚像素精度数据可以通过亚像素阈值分割或者亚像素边缘提取来获得,这些处理得到的结果就是用亚像素轮廓来表示,XLD可以描述直线或者多边形,是一组有序控制点的集合。 

    threshold_sub_pix(Image : Border : Threshold : ) 
    * 提取图像的XLD(提取XLD并不是沿着像素与像素交界的地方,而是经过插值处理后的位置) 
    select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : )
    * 选择特定形状特征要求的XLD轮廓或多边形 (如面积,中心坐标,宽度,长度,圆度,紧密度等等)
    select_contours_xld(Contours : SelectedContours : Feature, Min1, Max1, Min2, Max2 : )
    * 选择多种特征要求的XLD轮廓(如轮廓长度,开闭特征等)

    XLD与Region可以相互转化,与Region有许多相似之处。

    1.basic基础特征:XLD面积,中心,宽高,左上角及右下角坐标;

    2.shape形状特征:圆度,紧密度,长度,矩形度,凸性,偏心率,外接圆半径,外接矩形方向及长度等;

    3.points云点特征:云点面积,中心,方向,等效椭圆半轴及角度等;

    4.moments几何矩特征:二阶矩等;

    XLD合并算子

    union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )
    * 合并近似同一直线的XLD

    union_cocircular_contours_xld(Contours : UnionContours : MaxArcAngleDiff, MaxArcOverlap, MaxTangentAngle, MaxDist, MaxRadiusDiff, MaxCenterDist, MergeSmallContours, Iterations : )<br>* 合并在同圆的XLD<br>MaxArcAngleDiff:定义圆上一个轮廓的端点到另一个轮廓的起点之间的最大角距离,以弧度为单位。
    MaxArcOverlap:表示等高线可能重叠的最大角度。
    MaxTangentAngle:描述圆切线与两条等值线连接线之间的最大夹角。
    MaxDistrict:表示两条轮廓线的端点和起点的最大绝对距离(以像素为单位)。
    MaxRadiusDiff:描述拟合到轮廓上的两个圆的半径的最大绝对差。
    MaxCenterDist:描述两个圆的中心最大欧氏距离。

     

    union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : )
    * 合并端点相近的XLD

    XLD转换操作

    shape_trans_xld(XLD: XLDTrans : Type : ) 
    * 转换xld轮廓的形状 

    XLD分割操作

    segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )
    * 将XLD分割成:直线,直线和圆,直线和椭圆

    XLD拟合操作

    fit_line_contour_xld
    fit_circle_contour_xld
    fit_ellipse_contour_xld
    fit_rectangle2_contour_xld

    trans_from_rgb

    功能:转换一个图像从RGB空间转换到任意一个空间

    HSV通道

    色相(Hue):色彩的基本属性,如红色,黄色,蓝色,值范围0~360

    饱和度(Saturation):色彩的纯度,值越高颜色越纯,值越低颜色越浅,它表示所选颜色和该颜色最大纯度之间的比率,范围0~1,当取值为0时只有灰度

    明度(Intensity):表示色彩的明亮程度

    一般Hue范围情况:

    'Orange' -------> 10~30

    'Red' -------> 0~10

    'Blue' -------> 125~162

    'Green' -------> 96~128

    'Yellow' -------> 30~64

  • 相关阅读:
    node.js 安装后怎么打开 node.js 命令框
    thinkPHP5 where多条件查询
    网站title中的图标
    第一次写博客
    Solution to copy paste not working in Remote Desktop
    The operation could not be completed. (Microsoft.Dynamics.BusinessConnectorNet)
    The package failed to load due to error 0xC0011008
    VS2013常用快捷键
    微软Dynamics AX的三层架构
    怎样在TFS(Team Foundation Server)中链接团队项目
  • 原文地址:https://www.cnblogs.com/xingyuanzier/p/12761761.html
Copyright © 2011-2022 走看看