图像仿射变换与校正
目的:解决图像形状失真的问题
由于拍摄图像时,可能存在角度偏差或环境影响获取的图像,与实际图像形状上
存在差异
图像仿射变换:
为了校正图像,可以对图像进行一些简单几何形状的变换,如平移,缩放,旋转等
这一类变换就叫图像仿射变换
原理:
进行仿射变换,首先我们仿射变换的对象位置坐标、角度,然后找到目标对象的位置坐标、角度,求出两
个参数的差值,就可以求出将 A 仿射变换到 B 的仿射矩阵了
大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
仿射变换流程:
Halcon 中进行仿射变换的常见步骤如下:
① 通过 hom_mat2d_identity 算子创建一个 初始化空变换矩阵
② 在初始化矩阵的基础上,使用 hom_mat2d_translate(平移)、hom_mat2d_rotate(旋转)、
hom_mat2d_scale(缩放)等生成仿射变换矩阵;(这几个算子可以叠加或者重复使用)
③ 根据生成的变换矩阵执行仿射变换,执行仿射变换的算子通常有:affine_trans_image、
affine_trans_region、affine_trans_contour_xld,即不管对于图像、区域、XLD 都可以执行仿射变换。
仿射变换流程核心代码:
一、创建一个初始化矩阵
功能:产生仿射变换矩阵(产生一个空的二维空变换矩阵)
hom_mat2d_identity( : : HomMat2D)
二、生成平移、旋转、缩放仿射变换矩阵
功能:把平移添加到防射变换矩阵
hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
HomMat2D:(输入参数)仿射变换矩阵
Tx(输入参数):Row 方向的平移量
Ty(输入参数):Column 方向的平移量
HomMat2DTranslate(输出参数):输出变换矩阵
功能:把旋转角度添加到仿射变换矩阵
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py: HomMat2DRotate)
HomMat2D :(输入参数)仿射变换矩阵
Phi:旋转角度(逆时针旋转(Phi>0),顺时针旋转(Phi<0),单位弧度)
Px :变换的固定点行坐标(Row 值)。固定点是指以该点为支撑进行仿射变换 (这里是指围绕这点进行
旋转)
大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
Py: 变换的固定点列坐标(Col 值)
HomMat2DRotate:输出的旋转变换的二维
功能:把缩放添加到仿射变换矩阵
hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
HomMat2D(输入参数):仿射变换矩阵
Sx(输入参数):Row 方向的缩放系数(放大/缩小倍数)
Sy(输入参数):Col 方向的缩放系数
Px(输入参数):缩放中心的 Row 值(基点)
Py(输入参数): 缩放中心的 Col 值
HomMat2DScale(输出参数):输出缩放变换矩阵
三、对图像、region 和 XLD 进行仿射变换
功能:对 XLD 轮廓进行二维仿射变换 (支持缩放,旋转,平移,斜切)
affine_trans_contour_xld(Contours : ContoursAffinTrans : HomMat2D : )
Contours(输入参数):输入 XLD 轮廓
ContoursAffinTrans(输出参数):输出变换的 XLD 轮廓
HomMat2D(输入参数):仿射变换矩阵
功能:对图像轮廓进行二维仿射变换 (支持缩放、旋转、平移,斜切)
affine_trans_image(Image : ImageAffinTrans : HomMat2D, Interpolation, AdaptImageSize : )
Image (输入参数):输入图像
ImageAffinTrans (输出参数):变换后的图像
HomMat2D (输入参数):仿射变换矩阵
Interpolation (输入参数):插值算法。参数值列表
-nearest_neighbor,bilinear,constant,weighted
AdaptImageSize (输入参数):结果图像尺寸是否自适应。默认值:false
功能:对区域进行任意二维仿射变换
大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : )
List itemRegion:(输入参数):输入区域
RegionAffineTrans (输出参数):变换的区域
HomMat2D (输入参数):仿射变换矩阵
Interpolate (输入参数):插值算法。默认值:nearest_neighbor。参数值列表:constant,nearest_neighbor
知识点:
1.角度理解
角度转弧度 rad(20)
2.插值算法
Halcon 算子中用到像素插值算法。对于使用 Halcon 其实是不需要了解插值算法的细节的。但是了解细
节可以让我们更好的应用那些算子
我们知道在对图像进行旋转、缩放或者畸变校正时就会涉及到像素插值。比如下图中这个例子。左边是原
始图像,我们对原始图像进行旋转和缩小。
可以看到旋转和缩小后的图像与原始图像的像素点是不重合的,所以为了获得输出的图像我们就要求出这
些新的位置的像素点的值。这就用到像素插值。
Halcon 软件中实现了如下的几种插值方法:
最邻近插值 nearest_neighbor
双线性插值 bilinear
双线性平均插值 constant
双线性加权插值 weighted
双二次插值 bicubic 和 bicubic_clipped
最邻近插值 nearest_neighbor
所谓最邻近插值顾名思义就是找与待计算的像素点最近邻的原始图像中的像素点,然后用这个像素点的值
来代替我们要计算的像素点的值。下面有个示例:
我们要计算的像素点时那个黑色的像素点,白色的像素点时原始图像中的像素点。那么计算可知 p10 这
个像素离我们要计算的像素点最近,我们就用 P10 像素点的值来代替我们要计算的像素点的值。这种算
法计算速度很快,但是图像中容易出现锯齿状的假象。
双线性插值 bilinear
所谓双线性插值就是用最邻近的四个像素点用线性插值的方法获得我要计算的像素点的值。
简单的说,双线性插值得到的结果比最邻近插值要好。但是计算速度要慢很多。
双线性平均插值 constant
我们要计算的像素点是两个虚线的交叉的处的那个像素点。这个像素所在的区域为斜的方框。‘constant’
方法是将这个像素在细分为四个小像素。对应图中的四个黑色的点,然后用双线性插值去计算这四个小像
素的像素值。算出来之后对这四个像素点取平均。
双线性加权插值 weighted
大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
这个方法和上面介绍的 constant 方法类似,区别是我们将一个像素分成了 9 个子像素。然后对这九个
子像素做加权平均。
在 Halcon 中影响计算结果的还有个系统参数 int_zooming。简单的说 int_zooming = true,插值计算
时采用定点数运算,int_zooming = false 时采用浮点数。定点数计算速度较快,但是精度会低一些。对
于 8 bit 图像来说,计算结果相差不大(一般相差 1 到 2 ),对于 16 位图像,定点和浮点的计算结
果差别会很明显,最大可能能到 512。
一、课程目标
本公司本着为工控事业培育和输出从电工基础到机器视觉的人才理念,着力于让小白成为工控业专家为目标。
大林上位机视觉软件培训专家特开设从电工基础、PLC、运动控制、上位机、工业机器人、机器视觉培训课程,为实现工业4.0事业而不懈努力。
机构课程全程真实教学、实干为主,不装逼,不扯淡,只唠干货,能做项目!!
二、老师介绍
大林老师
是专业从事上位机视觉软件的开发与培训,多年从事上位机机器视觉相关项目开发,对电气人员学习C#开发视觉软件有独到的见解,即使您是零基础或只要从事过电气自动化相关工作的学员都能够轻松快速学会。
三、校区介绍
大林上位机机器视觉培训机构,分为两个校区,苏州校区(苏州木渎),常州校区(常州新北)
四、硬件设施
校区提供2000多平方的实训基地,完美的设备硬件配套,可以做到边学习边操作,鉴于本机构隶属于某自动化公司,学员可以配合边学习边配合公司开发人员完成项目,这样学习起来事半功倍
五、毕业服务
学业完成后本公司可以择优录取,在我们自动化公司的实习,解决您的后顾之忧
六、课程对象
1.零基础无任何相关知识
2.有电气及PLC编程基础的更容易入手
3.需要系统性提升整体能力
4.跨行业转型
5.想拥有一份体面高收入
6.对自己前途迷茫
7.学历低英语不好
七、课程特色
为您量身提供零基础快速成为上位机及机器视觉软件开发专家的学习方案
承接企事业单位定制个性化学员集体培训。
八、课程内容
小白亦可通过学习成为工业软件开发专家,从电气图,到梯形图,到高级语言SCL,再到C#,突破高级语言难的瓶颈,轻松掌握。
从零开始,从电气基本元件入手,跟随课程递进学习,PLC,工业机器人,数据库,运动控制器,上位机,机器视觉,统统一网打尽。
欢迎亲临现场咨询,老师私人定制课程 ,学习更清晰!
九、授课方式
1、线下现场授课更直观,知识点更易吸收,现场互动更易理解和运用。
1,赠送老师录制课程随时随地轻松学习
2,赠送配套书籍不限环境随意学习
3,课间和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解。
5,老师指导完善简历,轻松上岗。
2、线上视频录播课程-整套
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,福利:线下报名课程原价抵扣
3、 线上视频课程+现场设备实操
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,现场和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解
5,福利:线下报名课程原价抵扣
苏州C#工业上位机软件开发学习_苏州上位机监控系统开发学习_苏州C#与运动控制卡学习_苏州PLC编程学习_苏州上位机与西门子PLC学习_苏州上位机与西门子PLC全科编程学习_苏州上位机与西门子200SMART编程学习_苏州上位机与西门子PLC编程学习机构_苏州上位机与西门子PLC学习学校_苏州上位机与西门子博图编程学习
苏州上位机与西门子200SMARTPLC编程学习_苏州上位机与西门子S7_1200PLC编程学习_苏州上位机与西门子S7_1500PLC编程学习_苏州上位机与西门子SCL编程学习_苏州上位机与三菱PLC全科学习_苏州上位机与三菱PLC编程学习_苏州上位机与三菱FX系列编程学习_苏州上位机与三菱PLC编程学习机构_苏州上位机与三菱PLC学习学校_苏州上位机与三菱FX3UPLC编程学习
版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1
技术支持: 易动力网络