【无标题】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

* This example program shows how to find scaled and rotated shape models.
dev_update_pc ('off')
dev_update_window ('off')
dev_update_var ('off')

read_image (Image, './moban/green-dot.png')
get_image_size (Image, Width, Height) //获取了图像大小
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_color ('red')
dev_display (Image)


*图像二值化
threshold (Image, Region, 0, 128) 
*区域---得到连通域
connection (Region, ConnectedRegions)  
*面积--筛选,获得圆
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10000, 20000) 
fill_up (SelectedRegions, RegionFillUp)   //填充圆
dilation_circle (RegionFillUp, RegionDilation, 5.5)  //填充区--膨胀

*获得模板区
reduce_domain (Image, RegionDilation, ImageReduced) //ROI操作得到imagereduced
*基于区域---创建匹配模型,得到模型---ID-- modelID
create_scaled_shape_model (ImageReduced, 5, rad(-45), rad(90), 'auto', 0.8, 1.0, 'auto', 'none', 'ignore_global_polarity', 40, 10, ModelID)
get_shape_model_contours (Model, ModelID, 1) //基于模型ID 得到模型轮廓 model
area_center (RegionFillUp, Area, RowRef, ColumnRef) //获得圆中心位置--相对全图

*顶点矩阵
*vector_angle_to_rigid只需要一个点对及一个角度--即计算刚性变换矩阵---所以利用find_shape_model的结果--HomMat2D 通过顶点得到其变换矩阵
vector_angle_to_rigid (0, 0, 0, RowRef, ColumnRef, 0, HomMat2D) 

*对XLD轮廓(contour)进行一个任意二维仿射变换,将model轮廓转换为相对于全图--得到ModelTrans
affine_trans_contour_xld (Model, ModelTrans, HomMat2D)
dev_display (Image)
dev_display (ModelTrans) //在全局中显示模型区域 ,注意modeltrans 为xld 轮廓!!!

read_image (ImageSearch, './Files/green-dots.png')
dev_display (ImageSearch)//将之前--模型ID--作为模板,

*查找
find_scaled_shape_model (ImageSearch, ModelID, rad(-45), rad(90), 0.8, 1.0, 0.5, 0, 0.5, 'least_squares', 5, 0.8, Row, Column, Angle, Scale, Score)//得到图像中模板的点 位置 和 角度 尺度 和匹配值
for I := 0 to |Score|-1 by 1
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_translate (HomMat2DIdentity, Row[I], Column[I], HomMat2DTranslate)
    hom_mat2d_rotate (HomMat2DTranslate, Angle[I], Row[I], Column[I], HomMat2DRotate)
    *刚性变换矩阵
    hom_mat2d_scale (HomMat2DRotate, Scale[I], Scale[I], Row[I], Column[I], HomMat2DScale) 
    affine_trans_contour_xld (Model, ModelTrans, HomMat2DScale)  //model 转换为modeltrans
    gen_region_contour_xld(ModelTrans,Region2,'filled')      //填充区域
    intensity ( Region2, ImageSearch, Mean, Deviation )      //获得区域  灰度平均值和方差值
    dev_display (ModelTrans)
endfor
clear_shape_model (ModelID)
```感谢
www.cnblogs.com/love6tao/p/6492763.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值