zoukankan      html  css  js  c++  java
  • halcon,C# 学习

    Halcon学习之一:查询图像参数

    1、get_grayval ( Image : : Row, Column : Grayval )

       计算Image图像中坐标为(RowColumn)的点的灰度值Grayval

    2、get_image_pointer1 ( Image : : : Pointer, Type, Width, Height )

       计算Image图像的数据指针Pointer,图像类型Type,图像宽度Width和高度HeightPointer指向了Image data的起点位置。

    3、get_image_pointer3 ( ImageRGB : : : PointerRed, PointerGreen,

    PointerBlue, Type, Width, Height )

       计算彩色图像ImageRGB的参数。

    4、get_image_pointer1_rect ( Image : : : PixelPointer, Width, Height,

    VerticalPitch, HorizontalBitPitch, BitsPerPixel )

       计算Image图像中定义区域的最小的长方形的区域的指针Pointer,宽度Width,高度HeightVerticalPitch代表ImageWidth*(HorizontalBitPitch/8)。两个相邻象素的水平距离(以比特计算)HorizontalBitPitch,每像素的比特数BitsPerPixel

    5、get_image_time ( Image : : : MSecond, Second, Minute, Hour, Day, YDay, Month, Year )

       获取图像生成的时间。

    程序::

    可以通过上述查看参数深入了解各个函数的具体意义。

    1. dev_open_window (0, 0, 512, 512, 'black', Handle1)  
    2.   
    3. read_image (Image, 'G:/Halcon/机器视觉/images/autobahn.png')  
    4.   
    5. get_grayval (Image, 12, 66, Grayval)  
    6.   
    7. get_image_pointer1 (Image, Pointer, Type, Width, Height)  
    8.   
    9. draw_region (Region1, Handle1)  
    10.   
    11. reduce_domain (Image, Region1, ImageReduced)  
    12.   
    13. get_image_pointer1_rect (ImageReduced, PixelPointer, Width1, Height1, VerticalPitch, HorizontalBitPitch, BitsPerPixel)  
    14.   
    15. read_image (Image1, 'G:/Halcon/机器视觉/images/claudia.png')  
    16.   
    17. get_image_pointer3 (Image1, PointerRed, PointerGreen, PointerBlue, Type1, Width2, Height2)  
    18.   
    19. get_image_time (Image, MSecond, Second, Minute, Hour, Day, YDay, Month, Year)  

    注意:Image1必须是彩色图像。

    Halcon学习之二:摄像头获取图像和相关参数

    1、close_all_framegrabbers ( : : : )

       关闭所有图像采集设备。

    2、close_framegrabber ( : : AcqHandle : )

        关闭HandleAcqHandle的图像采集设备。

    3open_framegrabber ( : : Name, HorizontalResolution,

    VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn,

    Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger,

    CameraType, Device, Port, LineIn : AcqHandle )

         打开图像采集设备

    参数信息:

       Name:图像采集设备的名称

       HorizontalResolutionVerticalResolution分别指预期的图像采集接口的水平分辨率和垂直分辨率

       ImageWidthImageHeight指预期图像的宽度部分和高度部分。

       StartRowStartColumn指显示预期图像的开始坐标

       Field预期图像是一半的图像或者是完整图像

       BitsPerChannel每像素比特数和图像通道

       ColorSpace输出的色彩格式的抓住图像{grayrawrgbyuvdefault}

       Generic通用参数与设备细节部分的具体意义。

       ExternalTrigger是否有外部触发

       CameraType使用相机的类型

       Device图像获取设别连接到的设备

       Port图像获取设别连接到的端口

       LineIn :相机输入的多路转接器

       AcqHandle:图像获取设备的Handle

    4grab_image ( : Image : AcqHandle : )

    获取AcqHandle的图像采集设备的Image

    5get_framegrabber_param ( : : AcqHandle, Param : Value )

    查询AcqHandle的图像采集设备的特殊参数

    Param{nameportrevisionbits_per_channel, camera_typecolor_spacedevice、fieldgenericexternal_triggergrab_timeouthorizontal_resolutionimage_availableimage_heightimage_widthline_instart_columnstart_rowvolatilevertical_resolutioncontinuous_grabbing}

    6info_framegrabber ( : : Name, Query : Information, ValueList )

    查询指定的图像采集接口的信息。

    Name为图像采集设备的名称

    Query为需要查询的参数名称

    Information是指输出的文本信息

    ValueList为该图像采集接口的参数值。

         Name{1394IIDCABSBaumerFCAMBitFlowCrevisuEyeDahengCAMDahengFGDFG-LCDirectFileDirectShowdPictDT315xDT3162eneoeXciteFALCONFlashBusMVFlashBusMXGigEVisionGinga++GingaDGINSPECTATAGINSPECTA5iPORTLeutronLinXLuCamMatrixVisionAcquireMILLiteFilemEnableIIImEnableIVmEnableVisualAppletsMultiCamOpteonp3i2p3i4PixeLINKPXPXCPXDPXRpylonRangerCRangerESaperaLTSentechSonyXCISonyXCI-2SVCam-GigETWAINVRmUsbCam}

        Query{defaultsgeneralinfo_boardsparameters、fieldgenericparameters_readonlyparameters_writeonlyvertical_resolutionportbits_per_channelcamera_typecolor_spacedeviceexternal_trigger、fieldgenerichorizontal_resolutionimage_heightimage_widthstart_rowstart_columnrevision}

    7grab_image_async ( : Image : AcqHandle, MaxDelay : )

    获取AcqHandle的图像采集设备的Image

    当调用grab_image_async 或者grab_data_async时,抓拍下一个图像就结束了。

    1. // Select a suitable image acquisition interface name AcqName   
    2. open_framegrabber(AcqName,1,1,0,0,0,0,’default’,-1,’default’,-1.0,’default’,’default’,’default’,-1,-1,AcqHandle)  
    3. // Grab image + start next grab   
    4. grab_image_async(Image1,AcqHandle,-1.0)  
    5. // Process Image1 ...   
    6. // Finish asynchronous grab + start next grab   
    7. grab_image_async(Image2,AcqHandle,-1.0)  
    8. // Process Image2 ...   
    9. close_framegrabber(AcqHandle)  

    8grab_image_start ( : : AcqHandle, MaxDelay : )

         开始抓拍 

    只有当和grab_image_async or grab_data_async一起使用时,grab_image_start 才会起作用。

    1. // Select a suitable image acquisition interface name AcqName   
    2. open_framegrabber(AcqName,1,1,0,0,0,0,’default’,-1,’default’,-1.0,  
    3. default’,’default’,’default’,-1,-1,AcqHandle)  
    4. grab_image(Image1,AcqHandle)  
    5. // Start next grab   
    6. grab_image_start(AcqHandle,-1.0)  
    7. // Process Image1 ...   
    8. // Finish asynchronous grab + start next grab   
    9. grab_image_async(Image2,AcqHandle,-1.0)  
    10. // Process Image2 ...   
    11. close_framegrabber(AcqHandle)  

    9get_framegrabber_lut ( : : AcqHandle : ImageRed, ImageGreen,

    ImageBlue )

        查询AcqHandle的图像采集设备的look-up table

        注意:该运算子不能支持所有的图像采集设备

    10grab_data ( : Image, Region, Contours : AcqHandle : Data )

    获取AcqHandle的图像采集设备获得的Image、预处理Region和预处理XLD轮廓Contours和预处理控制数据Data

    注意:该运算子不能支持所有的图像采集设备

    11grab_data_async ( : Image, Region, Contours : AcqHandle,MaxDelay: Data )

       获取AcqHandle的图像采集设备的Image、预处理Region和预处理XLD轮廓Contours和预处理控制数据Data。(需要特殊图像采集数据)

    12set_framegrabber_lut ( : : AcqHandle, ImageRed, ImageGreen,ImageBlue : )

         设置AcqHandle的图像采集设备的look-up table

    13set_framegrabber_param ( : : AcqHandle, Param, Value : )

        设置AcqHandle的图像采集设备的特殊参数

     相关代码:

    1. close_all_framegrabbers ()  
    2. open_framegrabber ('DahengCAM', 1, 1, -1, -1, 0, 0, 'default', -1, 'rgb', -1, 'false''default''default', -1, -1, AcqHandle)  
    3. grab_image (Image, AcqHandle)  
    4. grab_image_async (Image2, AcqHandle, -1)  
    5. get_framegrabber_param (AcqHandle, 'image_width', Value)  
    6. info_framegrabber ('DirectFile''info_boards', Information, ValueList)  

    可以通过调试以上代码,并且查看相关变量的变化,更深入的了解函数的意义。

    注意:在本段代码中,使用的是大恒的HV1303的工业摄像机,如果是使用一般的摄像头来采集数据的话,Name值可以设置为Direct_show。

    Halcon学习之三:有关图像通道的函数

    黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像。下面这些是与图像通道有关的函数:

    1、access_channel ( MultiChannelImage : Image : Channel : )

      获取多通道图像MultiChannelImageChannel通道的图像Image

    2、append_channel ( MultiChannelImage, Image : ImageExtended : : )

     将Image图像的通道与MultiChannelImage的通道叠加得到新图像ImageExtended

    3、channels_to_image ( Images : MultiChannelImage : : )

     将多幅单通道图像合并成一幅多通道图像

    4、compose2 ( Image1, Image2 : MultiChannelImage : : )

     将两幅单通道图像合并为二通道图像。Compose3、Compose4以此类推。

    5、count_channels ( MultiChannelImage : : : Channels )

    计算MultiChannelImage 的通道个数Channels

    6、decompose2 ( MultiChannelImage : Image1, Image2 : : )

    将一幅二通道图像转换为两幅单通道图像。Decompose3、Decompose4以此类推。

    7、image_to_channels ( MultiChannelImage : Images : : )

    将多通道图像转换为多幅单通道图像。

    相关例程为:

    1. * 输入图像  
    2. read_image (Image, 'G:/Halcon/机器视觉/images/claudia.png')  
    3. * 计算图像的通道数  
    4. count_channels (Image, Num)  
    5. * 读取每个通道的图像  
    6. for index := 1 to Num by 1  
    7.     access_channel (Image, channel1, index)  
    8. endfor  
    9. decompose3 (Image, image1, image2, image3)  
    10. compose2 (image3, image2, MultiChannelImage1)  
    11. append_channel (MultiChannelImage1, image3, ImageExtended)  

    相关处理结果为:

    Halcon学习之四:有关图像生成的函数

    1copy_image ( Image : DupImage : : )

    复制image图像

    2region_to_bin ( Region : BinImage : ForegroundGray, BackgroundGray,Width, Height : )

    将区域Region转换为一幅二进制图像BinImage

    ForegroundGray, BackgroundGray分别为前景色灰度值和背景色灰度值。

    Width, HeightRegion的宽度和高度。

    3region_to_label ( Region : ImageLabel : Type, Width, Height : )

    将区域Region转换为一幅Lable图像ImageLabel

    Typeimagelabel的类型。

    Width, HeightRegion的宽度和高度。

    4region_to_mean ( Regions, Image : ImageMean : : )

    绘制ImageMean图像,将其灰度值设置为RegionsImage的平均灰度值。

    相关例子:

    1. * 读取图像  
    2. read_image (Image, 'G:/Halcon/机器视觉/images/bin_switch/bin_switch_2.png')  
    3. * 复制图像  
    4. copy_image (Image, DupImage)  
    5. * 区域生长算法  
    6. regiongrowing (Image, Regions, 3, 3, 1, 100)  
    7. * 生成ImageMean  
    8. region_to_mean (Regions, Image, ImageMean)  
    9. * 将Region转换为二进制图像  
    10. region_to_bin (Regions, BinImage, 255, 0, 512, 512)  
    11. * 将Region转换为Label图像  
    12. region_to_label (Regions, ImageLabel, 'int4', 512, 512)  

    实验结果:

     

    Halcon学习之五:有关图像的定义域的函数

    1add_channels ( Regions, Image : GrayRegions : : )

    Image图像的灰度值赋给区域Regions,得到GrayRegions

    2change_domain ( Image, NewDomain : ImageNew : : )

    改变Image图像的定义域

    3full_domain ( Image : ImageFull : : )

    扩张Image图像的定义域到最大。

    4get_domain ( Image : Domain : : )

    得到Image图像的定义域

    5rectangle1_domain ( Image : ImageReduced : Row1, Column1, Row2,

    Column2 : )

    根据矩形坐标(Row1, Column1)、(Row2,Column2)得到区域视为Image图像的定义域。

    6、reduce_domain ( Image, Region : ImageReduced : : )

    得到图像Image相对于Region区域的图像

    例程:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/brycecanyon1.png')  
    2. * 打开一个新的窗体  
    3. dev_open_window (0, 0, -1, -1, 'black', WindowHandle)  
    4. * 显示图像  
    5. dev_display (Image)  
    6. * 选出两个新的Region  
    7. draw_region (region1, WindowHandle)  
    8. draw_region (region2, WindowHandle)  
    9. add_channels (region1, Image, image_region1)  
    10. change_domain (Image, region2, ImageNew)  
    11. full_domain (image_region1, ImageFull)  
    12. rectangle1_domain (ImageFull, ImageReduced, 100, 100, 300, 500)  
    13. get_domain (image_region1, Domain)  
    14. reduce_domain (Image, region2, ReducedImage)  

    处理效果如下图所示:

    Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )

       计算Image图像中Region区域的面积Area和重心(RowColumn)。

    cooc_feature_image ( Regions, Image : : LdGray, Direction : Energy,

    Correlation, Homogeneity, Contrast )

       计算共生矩阵和推导出灰度特征值

       Direction灰度共生矩阵计算的方向

       Energy灰度值能量

       Correlation灰度值的相互关系

    Homogeneity灰度值的均匀性

    Contrast灰度值的对比度

    cooc_feature_matrix ( CoocMatrix : : : Energy, Correlation,

    Homogeneity, Contrast )

    根据共生矩阵计算灰度特征值

    elliptic_axis_gray ( Regions, Image : : : Ra, Rb, Phi )

    计算Image图像的Region区域的RaRbPhi

    entropy_gray ( Regions, Image : : : Entropy, Anisotropy )

    Image图像中Region区域的计算熵Entropy和各向异性Anisotropy

    estimate_noise ( Image : : Method, Percent : Sigma )

    从单一图像 Image中估计图像的噪声。

    Sigma:加性噪声的标准偏差

    Method 估计噪声的方法

    Method{foerstnerimmerkaerleast_squaresmean}

    fit_surface_first_order ( Regions, Image : : Algorithm, Iterations,

    ClippingFactor : Alpha, Beta, Gamma )

    计算一阶灰度平面的灰度矩阵和灰度值的逼近参数。

    Algorithm采用的算法

    Algorithm:迭代次数

    ClippingFactor消除临界值的削波系数

    fit_surface_second_order ( Regions, Image : : Algorithm, Iterations,

    ClippingFactor : Alpha, Beta, Gamma, Delta, Epsilon, Zeta )

    计算二阶灰度平面的灰度矩阵和灰度值的逼近参数。

    fuzzy_entropy ( Regions, Image : : Apar, Cpar : Entropy )

    确定区域Regions的模糊熵 将图像视为模糊集合

    Apar为模糊区域的起始点

    Cpar为模糊区域的结束点

    EntropyRegions的模糊熵

    fuzzy_perimeter ( Regions, Image : : Apar, Cpar : Perimeter )

    计算Region区域的模糊周长

    gen_cooc_matrix ( Regions, Image : Matrix : LdGray, Direction : )

    生成Image图像Region区域的共生矩阵

    gray_histo ( Regions, Image : : : AbsoluteHisto, RelativeHisto )

    获取Image图像Region区域的灰度相对直方图RelativeHisto和绝对直方图AbsoluteHisto

    注意Region区域必须先计算过它的直方图。

    gray_histo_abs ( Regions, Image : : Quantization : AbsoluteHisto )

    获取Image图像Region区域的灰度绝对直方图AbsoluteHisto

    Quantization灰度值的量化、

    gray_projections ( Region, Image : : Mode : HorProjection,

    VertProjection )

    计算Region区域在水平方向和垂直方向的灰度值投影。

    histo_2dim ( Regions, ImageCol, ImageRow : Histo2Dim : : )

    计算二通道灰度图像的直方图

    intensity ( Regions, Image : : : Mean, Deviation )

    计算region区域的灰度平均值和偏差

    min_max_gray ( Regions, Image : : Percent : Min, Max, Range )

    计算Region区域的最大最小灰度值。

    Range最大灰度值和最小灰度值之间的差距

    moments_gray_plane ( Regions, Image : : : MRow, MCol, Alpha, Beta,

    Mean )

    计算平面的灰度矩阵和灰度值的逼近参数。

    plane_deviation ( Regions, Image : : : Deviation )

    逼近的图象平面计算灰度值偏差

    select_gray ( Regions, Image : SelectedRegions : Features, Operation,

    Min, Max : )

    根据灰度值选择区域

    Features{arearowcolumnrarbphiminmaxmeandeviationplane_deviationanisotropyentropyfuzzy_entropyfuzzy_perimetermoments_rowmoments_columnalphabeta}

    Operation{andor}

    shape_histo_all ( Region, Image : : Feature : AbsoluteHisto,

    RelativeHisto )

    shape_histo_point ( Region, Image : : Feature, Row,

    Column : AbsoluteHisto, RelativeHisto )

    获取阈值特征直方图

    Feature{connected_componentsconvexitycompactnessanisometryholes}

     程序:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/bin_switch/bin_switch_3.png')  
    2. regiongrowing (Image, Regions, 3, 3, 1, 500)  
    3. area_center_gray (Regions, Image, Area, Row, Column)  
    4. cooc_feature_image (Regions, Image, 6, 0, Energy, Correlation, Homogeneity, Contrast)  
    5. elliptic_axis_gray (Regions, Image, Ra, Rb, Phi)  
    6. entropy_gray (Regions, Image, Entropy, Anisotropy)  
    7. estimate_noise (Image, 'mean', 20, Sigma)  
    8. fit_surface_first_order (Regions, Image, 'regression', 5, 2, Alpha, Beta, Gamma)  
    9. fit_surface_second_order (Regions, Image, 'regression', 5, 2, Alpha1, Beta1, Gamma1, Delta, Epsilon, Zeta)  
    10. fuzzy_entropy (Regions, Image, 0, 255, Entropy1)  
    11. fuzzy_perimeter (Regions, Image, 0, 255, Perimeter)  
    12. gen_cooc_matrix (Regions, Image, Matrix, 6, 0)  
    13. dev_set_paint ('histogram')  
    14. gray_projections (Regions, Image, 'simple', HorProjection, VertProjection)  
    15. histo_2dim (Regions, Image, Image, Histo2Dim)  

    运行结果:

    Halcon学习之七:改变图像的现实方式和大小

    change_format ( Image : ImagePart : Width, Height : )

    改变Image图像大小,而且ImagePart图像为灰度值图像。

    crop_domain ( Image : ImagePart : : ) 

    Image图像中裁剪一个矩形区域。这个矩形的周长最小。

    crop_domain_rel ( Image : ImagePart : Top, Left, Bottom, Right : )

    删除相关区域,Top为顶端裁剪的行数,LeftBottomRight类似。

    crop_part ( Image : ImagePart : Row, Column, Width, Height : )

    删除一个矩形图像区域。Row为右上角的列标索引。Width, Height为新图像ImagePart的宽度和高度。

    crop_rectangle1 ( Image : ImagePart : Row1, Column1, Row2,

    Column2 : )

    删除一个矩形图像区域。

    tile_channels ( Image : TiledImage : NumColumns, TileOrder : )

    将多通道图像平铺为一幅大的单通道图像。NumColumns为平铺的列数。TileOrder为平铺的方式。

    tile_images ( Images : TiledImage : NumColumns, TileOrder : )

    将多通道平铺。

    程序:

    1. read_image (Image, 'G:/Halcon/机器视觉/images/brycecanyon1.png')  
    2. get_image_pointer1 (Image, Pointer, Type, Width, Height)  
    3. change_format (Image, ImagePart, Width/2, Height/2)  
    4. crop_domain (Image, ImagePart1)  
    5. crop_domain_rel (ImagePart1, ImagePart2, -20, -20, -1, -1)  
    6. crop_part (ImagePart2, ImagePart3, 100, 100, Width, Height)  
    7. crop_rectangle1 (ImagePart3, ImagePart4, 100, 100, 200, 200)  
    8. tile_channels (Image, TiledImage, 2, 'horizontal')  
    9. tile_images (Image, TiledImage1, 1, 'vertical')  
    10. tile_images_offset (Image, TiledImage2, 0, 0, 50, 50, -1, -1, Width, Height)  

    处理效果:

    Halcon学习之八:图像区域叠加与绘制

    overpaint_gray ( ImageDestination, ImageSource : : : )

    将灰度值不相同区域用不同颜色绘制到ImageDestination中, ImageSource包含希望的灰度值图像

    overpaint_region ( Image, Region : : Grayval, Type : )

    Region以一个恒定的灰度值绘制到Image图像中

    paint_gray ( ImageSource, ImageDestination : MixedImage : : )

    ImageSource的图像绘制到ImageDestination中,形成MixedImage

    paint_region ( Region, Image : ImageResult : Grayval, Type : )

    Region以一个恒定的灰度值绘制到Image图像中

    paint_xld ( XLD, Image : ImageResult : Grayval : )

    XLD以一个恒定的灰度值绘制到Image图像中

    set_grayval ( Image : : Row, Column, Grayval : )

    设置Image图像中坐标为(RowColumn)的灰度值

    程序:

    1. read_image (Image, 'G:/Halcon/images/images/claudia.png')  
    2. gen_circle (Circle, 200, 200, 100.5)  
    3. reduce_domain (Image, Circle, ImageReduced)  
    4. gen_image_proto (Image, ImageCleared, 32)  
    5. overpaint_gray (ImageCleared, ImageReduced)  
    6. gen_image_const (Image1, 'byte', 512, 512)  
    7. overpaint_region (Image1, Circle, 255, 'fill')  
    8.   
    9. read_image (Image2, 'G:/Halcon/images/images/brycecanyon1.png')  
    10. paint_gray (ImageReduced, Image2, MixedImage)  
    11.   
    12. read_image (Image3, 'G:/Halcon/images/images/pads.png')  
    13. gen_rectangle1 (Rectangle1, 30, 20, 100, 200)  
    14. paint_region (Rectangle1, Image3, ImageResult, 255, 'fill')  
    15.   
    16.   
    17. copy_image (Image2, image0)  
    18. copy_image (Image2, image1)  
    19. compose3 (image0, Image2, image1, MultiChannelImage)  
    20.   
    21. threshold_sub_pix (MultiChannelImage, Border, 128)  
    22.   
    23. circle := Border[14]  
    24. arrow := Border[16]  
    25. ObjectsConcat := [circle,arrow]  
    26.   
    27. paint_xld (ObjectsConcat, MultiChannelImage, ImageResult1, [0,1,0,1,1,255])  

    处理效果:

  • 相关阅读:
    document.getElementById("mytxt").style.left=""style.left在IE的FF中注意
    asp.net 用户控件中 使用相对路径的解决方法 图片路径问题(用户控件、图片路径) ,ResolveUrl
    探索 Block (一) (手把手讲解Block 底层实现原理)
    iOS 多线程开发 (概念与API简介)
    iOS 性能小点
    iOS runtime (二)(runtime学习之AutoCoding源码分析)
    探索 NSRunLoop (二)(NSRunLoop 自己动手实现SimpleRunLoop)
    iOS NSNotificationCenter (自己实现一个通知中心XMCNotificationCenter)
    iOS runtime (三)(runtime学习之YYModel源码分析)
    iOS runtime(一)(runtime 分析理解)
  • 原文地址:https://www.cnblogs.com/nanyangzp/p/3325671.html
Copyright © 2011-2022 走看看