halcon查找方形管材接头边缘

By admin at 15 天前 • 0人收藏 • 96人看过
winform.button.oncommand = function(id,event){
    if(i>5){
    	i=1
    }
    var Image = HOperatorSetX.ReadImage("C:\Users\Public\Documents\MVTec\HALCON-13.0\examples\images\square_tube/square_tube_0"++i);

    //中值滤波器,消除噪声
    var  ImageMedian = HOperatorSetX.MedianImage( Image, 'circle', 2, 'mirrored' );
	//对一副图像采取磁滞门限操作,低于Low的灰度值舍去 高于High 的灰度值保留,中间的看情况
	var  RegionHysteresis = HOperatorSetX.HysteresisThreshold( ImageMedian, 25, 25, 60 );
	//闭运算(先膨胀—后腐蚀)去除毛刺
	var  RegionClosing = HOperatorSetX.ClosingCircle( RegionHysteresis, 8 );
	//选区转换 convex:凸包性
	var  RegionTrans = HOperatorSetX.ShapeTrans( RegionClosing, 'convex' );
	//膨胀
	var  RegionDilation = HOperatorSetX.DilationCircle( RegionTrans, 10 );
	//腐蚀
	var  RegionErosion = HOperatorSetX.ErosionCircle( RegionTrans, 10 );
	//求两个选区的不同区域
	var  RegionOfInterest = HOperatorSetX.Difference( RegionDilation, RegionErosion );
	//设置操作区间(俗称截图)
	var  ImageReduced = HOperatorSetX.ReduceDomain( ImageMedian, RegionOfInterest );
	//亚像素边缘提取
	var  Edges = HOperatorSetX.EdgesSubPix( ImageReduced, 'canny', 1.5, 10, 35 );
	//选择边缘(长度在50-9999的)
	var  SelectedXLD = HOperatorSetX.SelectShapeXld( Edges, 'contlength', 'and', 50, 999999 );
	//合并终点连接在一起的轮廓
	var  UnionContours = HOperatorSetX.UnionAdjacentContoursXld( SelectedXLD, 10, 1, 'attr_keep' );
	//闭合轮廓
	var  ClosedContours = HOperatorSetX.CloseContoursXld( UnionContours );

	HOperatorSetX.SetLineWidth( WindowHandle , 3 );
	HOperatorSetX.SetDraw( WindowHandle , 'margin' );
	HOperatorSetX.SetColor( WindowHandle , 'blue' );
	
	HOperatorSetX.DispObj( Image , WindowHandle );
	HOperatorSetX.DispObj( ClosedContours , WindowHandle );
	i++;
}

image.png

image.png

通过对具有一定形态学特征的he域进行缩小,提取出方管的轮廓,然后对边缘进行提取和统一。


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...