【HALCON工业机器视觉基础教程】第七章 图像的几何变换

第七章 图像的几何变换

标签旋转

read_image (Image, 'C:/Users/DELL/AppData/Roaming/MVTec/HALCON-21.05-Progress/examples/images/barcode/25interleaved/25interleaved_exposure_04.png')

threshold(Image, Region, 49, 255)

connection(Region, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 77900.9, 235228)
shape_trans(SelectedRegions, RegionTrans, 'rectangle2')

area_center(RegionTrans, Area, Row, Column)

reduce_domain(Image, RegionTrans, ImageReduced)

orientation_region(RegionTrans, Phi)

hom_mat2d_identity(HomMat2DIdentity)

hom_mat2d_rotate(HomMat2DIdentity, -Phi, Column, Row, HomMat2DRotate)

affine_trans_image(ImageReduced, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

在这里插入图片描述

透射变换

dev_set_draw('margin')

read_image(Image, 'C:/Users/DELL/AppData/Roaming/MVTec/HALCON-21.05-Progress/examples/images/datacode/ecc200/ecc200_to_preprocess_001.png')

* 获取二维码区域
threshold(Image, Region, 0, 90)

* 将区域形状变换为convex
shape_trans(Region, RegionTrans, 'convex')

* 从区域生成 XLD 轮廓
gen_contour_region_xld(RegionTrans, Contours, 'border')

* 分割轮廓为线段
segment_contours_xld(Contours, ContoursSplit, 'lines', 5, 10, 1)

XCoordCorners := []
YCoordCorners := []

* 对段进行排序
sort_contours_xld(ContoursSplit, SortedContours, 'upper_left', 'true', 'row')

* 求段数量
count_obj(SortedContours, Number)

for Index := 1 to Number by 1
    select_obj(SortedContours, ObjectSelected, Index)
    * 找到起始点
    fit_line_contour_xld(ObjectSelected, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
    * 连接X值
    tuple_concat(XCoordCorners, RowBegin, XCoordCorners)
    * 连接Y值
    tuple_concat(YCoordCorners, ColBegin, YCoordCorners)
endfor

* 为每个输入点输出一个十字形的轮廓
gen_cross_contour_xld(Cross, XCoordCorners, YCoordCorners, 6, 0.785398)

px1 := 70
px2 := 270
py1 := 100
py2 := 300

* 创建投影变换矩阵
vector_to_proj_hom_mat2d(XCoordCorners, YCoordCorners, [px2,px1,px2,px1 ], [py2,py2,py1,py1], 'normalized_dlt',[],[],[],[],[],[],HomMat2D1, Covariance)
* 将投影变换应用于图像
projective_trans_image(Image, TransImage1, HomMat2D1, 'bilinear', 'false', 'false')

在这里插入图片描述

习题

  1. 器件旋转至水平
* 旋转至水平
read_image(Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/metal-parts/bracket_tilted_02.png')

threshold(Image, Region, 70, 255)

fill_up(Region, RegionFillUp)

shape_trans(RegionFillUp, RegionTrans, 'rectangle2')

area_center(RegionTrans, Area, Row, Column)

reduce_domain(Image, RegionFillUp, ImageReduced)

orientation_region(RegionFillUp, Phi)

hom_mat2d_identity(HomMat2DIdentity)

hom_mat2d_rotate(HomMat2DIdentity, -Phi, Row, Column, HomMat2DRotate)

affine_trans_image(ImageReduced, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值