sobel_amp ( Image : EdgeAmplitude : FilterType, Size : )根据图像的一次导数计算图像的边缘
close_edges ( Edges, EdgeImage : RegionResult : MinAmplitude : ) close_edges_length
( Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : ) 使用边缘高度图像关闭边缘间隙。输出的区域包含杯关闭的区域。(感觉是对边缘的扩充) derivate_gauss ( Image : DerivGauss : Sigma, Component : )
watersheds ( Image : Basins, Watersheds : : ) 从图像中提取风水岭。 zero_crossing ( Image : RegionCrossing : : ) 零交点(二次导数)
diff_of_gauss ( Image : DiffOfGauss : Sigma, SigFactor : ) 近似日志算子( 拉普拉斯高斯) 。
laplace_of_gauss ( Image : ImageLaplace : Sigma : ) 拉普拉斯高斯 edges_color_sub_pix ( Image : Edges : Filter, Alpha, Low, High : ) 精确的亚像素边缘提取(彩色图像)
edges_sub_pix ( Image : Edges : Filter, Alpha, Low, High : ) 精确边缘提取的亚像素(灰度图像)
edges_color ( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : ) 根据颜色进行边缘提取
edges_image ( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : ) 边缘提取
skeleton ( Region : Skeleton : : ) 计算区域的框架 Skeleton == Region frei_amp ( Image : ImageEdgeAmp : : ) Frei-chen 模板进行边缘检测(振幅)
frei_dir ( Image : ImageEdgeAmp, ImageEdgeDir : : ) Frei-chen 模板进行边缘检测(振幅和方向)
nonmax_suppression_dir ( ImgAmp, ImgDir : ImageResult : Mode : ) 使用方向图像 抑制所有的超过给定最大值的图像灰度值的点
gen_contours_skeleton_xld ( Skeleton : Contours : Length, Mode : ) 将系统框架转换成 XLD 轮廓
laplace ( Image : ImageLaplace : ResultType, MaskSize, FilterMask : ) 使用有限差分计算拉普拉斯变换
info_edges ( : : Filter, Mode, Alpha : Size, Coeffs ) 估计滤波器的宽度
kirsch_dir ( Image : ImageEdgeAmp, ImageEdgeDir : : ) 使用Kirsch 算子计算出边缘(振幅和方向)
prewitt_amp ( Image : ImageEdgeAmp : : ) 使用 Prewitt 算子计算出边缘(振幅) kirsch_amp ( Image : ImageEdgeAmp : : ) 使用 Kirsch 算子计算出边缘(振幅) highpass_image ( Image : Highpass : Width, Height : ) 从高频成分提取的图像。 sobel_amp ( Image : EdgeAmplitude : FilterType, Size : )使用 Sobel 算子计算出边缘(振幅)
robinson_amp ( Image : ImageEdgeAmp : : ) 使用 Robinson 算子计算出边缘(振幅) roberts ( Image : ImageRoberts : FilterType : ) 使用 Robert算子计算边缘
Halcon学习(十三)参数和数据结构
(2012-12-23 11:46:09)
HALCON 有两种基本的数据型态 : 图像数据 (iconic ,例如影像 ) 以及控制数据 ( control ,例如 变量,整数,字符串, handle 等等 ) 。所有运算子的参数都是以相同的方式排列:输入图像,输出图像,输入控制,输出控制。 当然,并非所有的运算子都具有上列四类参数,不过参数排列的次序依旧相同。 ROI :影像中要处理的数据范围。
region 即是一堆像元的集合。 region 中的像元不一定要相连,如果要让相连接的像元成为一个 region ,只要呼叫运算子 connection 即可。
XLD 包含了所有等值线以及多边型的数据。。 XLD 对象中除了点坐标数据,还包含了全域或区域属性,例如 edge 方向,或是分割时的 regression 参数等等。
Tuples 就像一个数组,其中的数据型态可为整数,浮点数或是字符串。当我们计算一个 region 的某些特征时,会传回一个 结果,如果计算的是一群 region ,会传回一个 tuple ,其中含有每个 region 的特征计算结果。 Control tuple 的指标由0开始。
Halcon学习(十四)绘图
halcon提供的算子进行简单形状的图形绘制。
同时学习一下 gen_rectangle1 和 gen_rectangle2 的两个算子之间的区别。 程序如下:
dev_update_off () Dark := 100
Background := 175 Light := 250
gen_image_const (Image, 'byte', 256, 280) scale_image (Image, Image, 1, Background) gen_rectangle1 (Rectangle, 81, 81, 121, 121) overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle1 (Rectangle, 40, 81, 80, 121) overpaint_region (Image, Rectangle, Dark, 'fill') gen_rectangle1 (Rectangle, 81, 40, 121, 80) overpaint_region (Image, Rectangle, Dark, 'fill') gen_circle (Circle, 160, 40, 2)
overpaint_region (Image, Circle, Dark, 'fill') gen_circle (Circle, 160, 100, 4)
overpaint_region (Image, Circle, Dark, 'fill') gen_circle (Circle, 160, 160, 6)
overpaint_region (Image, Circle, Dark, 'fill') gen_circle (Circle, 220, 40, 6)
overpaint_region (Image, Circle, Light, 'fill') gen_circle (Circle, 220, 100, 4)
overpaint_region (Image, Circle, Light, 'fill') gen_circle (Circle, 220, 160, 2)
overpaint_region (Image, Circle, Light, 'fill') gen_rectangle1 (Rectangle, 140, 220, 240, 222) overpaint_region (Image, Rectangle, Light, 'fill')
(2012-12-24 12:01:14)用
gen_rectangle1 (Rectangle, 200, 180, 202, 240) overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle2 (Rectangle, 60, 200, rad(45), 40, 10) overpaint_region (Image, Rectangle, Dark, 'fill')
gen_rectangle2 (Rectangle, 60, 200, rad(-45), 40, 10) overpaint_region (Image, Rectangle, Dark, 'fill') dev_display(Image) 如图所示: 所用到的算子:
1.gen_image_const( : Image : Type, Width, Height : )产生一个图形常量
2.scale_image(Image : ImageScaled : Mult, Add : )注释:g' := g * Mult + Add
3.gen_rectangle1( : Rectangle : Row1, Column1, Row2, Column2 : )产生一个平行坐标轴的矩形 4.overpaint_region(Image, Region : : Grayval, Type : )绘制矩形 5.gen_circle( : Circle : Row, Column, Radius : )产生一个圆
6.gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )产生一个任意的矩形(和坐标轴倾斜Phi角度的一个矩形)
Halcon学习(十五)角点检测
* This program compares the result of different operators * which detect points of interest dev_update_off () Dark := 100
Background := 175 Light := 250 Angle := rad(45) Size := 3
create_test_image (Image, Background, Light, Dark) dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_color ('black') dev_set_line_width (3)
* Foerstner interest points detector
points_foerstner (Image, 1, 2, 3, 200, 0.3, 'gauss', 'true', RowJunctions, ColJunctions, CoRRJunctions, CoRCJunctions, CoCCJunctions, RowArea, ColArea, CoRRArea, CoRCArea, CoCCArea) gen_cross_contour_xld (CrossFoerstner, RowJunctions, ColJunctions, Size, Angle) dev_display (Image)
dev_display (CrossFoerstner)
disp_message (WindowHandle, 'Foerstner interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop ()
* Harris interest points detector
points_harris (Image, 0.7, 2, 0.04, 0, RowHarris, ColHarris)
gen_cross_contour_xld (CrossHarris, RowHarris, ColHarris, Size, Angle) dev_display (Image)
dev_display (CrossHarris)
disp_message (WindowHandle, 'Harris interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop ()
* Harris binomial interest points detector
points_harris_binomial (Image, 5, 15, 0.04, 1000, 'on', RowHarrisBinomial, ColHarrisBinomial) gen_cross_contour_xld (CrossHarrisBinom, RowHarrisBinomial, ColHarrisBinomial, Size, Angle) dev_display (Image)
dev_display (CrossHarrisBinom)
disp_message (WindowHandle, 'Harris binomial interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop ()
* Sojka interest points detector
points_sojka (Image, 9, 2.5, 0.75, 30, 90, 0.5, 'true', RowSojka, ColSojka) gen_cross_contour_xld (CrossSojka, RowSojka, ColSojka, Size, Angle) dev_display (Image) dev_display (CrossSojka)
disp_message (WindowHandle, 'Sojka interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop ()
* Lepetit interest points detector
points_lepetit (Image, 3, 1, 20, 35, 'interpolation', RowLepetit, ColLepetit) gen_cross_contour_xld (CrossLepetit, RowLepetit, ColLepetit, Size, Angle) dev_display (Image)
dev_display (CrossLepetit)
disp_message (WindowHandle, 'Lepetit interest points detector', 'window', 12, 12, 'black', 'true')
红色的create_test_image (Image, Background, Light, Dark)这个函数为外部函数(即自己所写函数) 具体的过程创建见下一节。halcon学习(十六)函数调用create_test_image 函数 程序如下:
gen_image_const (Image, 'byte', 256, 280) scale_image (Image, Image, 1, Background) gen_rectangle1 (Rectangle, 40, 40, 80, 80)
overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle1 (Rectangle, 81, 81, 121, 121) overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle1 (Rectangle, 40, 81, 80, 121) overpaint_region (Image, Rectangle, Dark, 'fill') gen_rectangle1 (Rectangle, 81, 40, 121, 80) overpaint_region (Image, Rectangle, Dark, 'fill') gen_circle (Circle, 160, 40, 2)
overpaint_region (Image, Circle, Dark, 'fill')
gen_circle (Circle, 160, 100, 4)
overpaint_region (Image, Circle, Dark, 'fill') gen_circle (Circle, 160, 160, 6)
overpaint_region (Image, Circle, Dark, 'fill') gen_circle (Circle, 220, 40, 6)
overpaint_region (Image, Circle, Light, 'fill') gen_circle (Circle, 220, 100, 4)
overpaint_region (Image, Circle, Light, 'fill') gen_circle (Circle, 220, 160, 2)
overpaint_region (Image, Circle, Light, 'fill') gen_rectangle1 (Rectangle, 140, 220, 240, 222) overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle1 (Rectangle, 200, 180, 202, 240) overpaint_region (Image, Rectangle, Light, 'fill') gen_rectangle2 (Rectangle, 60, 200, rad(45), 40, 10) overpaint_region (Image, Rectangle, Dark, 'fill')
gen_rectangle2 (Rectangle, 60, 200, rad(-45), 40, 10) overpaint_region (Image, Rectangle, Dark, 'fill') return ()
Halcon学习(十六)函数调用
上一节遇到函数调用的问题。本节将学习函数调用。也就是创建新的过程以及调用。 创建新的过程有以下几种方法: 第一种: 第二种
创建完过程之后,就可以编辑新的过程了。包括名称,参数设置等等。设置完成后,应用,确定。
最后编辑完main函数后记得保存。
Halcon学习(十七)标定板的规格
(2012-12-24 16:29:10)
30*30 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7
外边框长度: 30mm*30mm 内边框长度: 28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径(0.9375) 黑色圆点半径: 0.9375mm 圆点中心间距: 3.75mm 裁剪宽度: 30.75mm*30.75mm 即:由黑色边框向外
延伸0.375mm
边角: 由黑色外边框向内缩进一个中心边距的长度