图像处理之仿射变换

一、介绍

。仿射变换(Affine Transformation)其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换

仿射变换变化包括缩放(Scale、平移(transform)、旋转(rotate)、反射(reflection,对图形照镜子)、错切(shear mapping,感觉像是一个图形的倒影),原来的直线仿射变换后还是直线,原来的平行线经过仿射变换之后还是平行线,这就是仿射
 

二、数学描述

没有平移或者平移量为0的所有仿射变换可以用如下变换矩阵描述:

 不同变换对应的a,b,c,d约束不同,排除了平移变换的所有仿射变换为线性变换,其特点是原点位置不变多次线性变换的结果仍是线性变换

为了涵盖平移,引入齐次坐标,在原有2维坐标的基础上,增广1个维度,如下所示:

 所以,仿射变换的变换矩阵统一用 

 来描述,不同基础变换的a,b,c,d,e,f约束不同,如下所示:

三、halcon代码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
* Draw with the mouse an arbitrary region into the window
draw_region (Region, WindowID)  #绘制区域
hom_mat2d_identity (HomMat2DIdentity) #定义一个对角为 1 的 单位矩阵
hom_mat2d_rotate (HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate) #旋转
hom_mat2d_scale (HomMat2DRotate, 1.5, 1.5, 256, 256, HomMat2DScale) #缩放
affine_trans_region (Region, RegionAffineTrans, HomMat2DScale, 'nearest_neighbor')
dev_clear_window ()
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Region)
dev_set_color ('green')
dev_display (RegionAffineTrans)

 执行

 

参考:

仿射变换(Affine Transformation)原理及应用(1)_Godswisdom的博客-CSDN博客

https://www.cnblogs.com/shine-lee/p/10950963.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值