The value of Zmotion is to bring customers more success!
一、图像的几何变换
机器视觉图像处理软件对相机采集的图像进行缩放/平移/旋转等操作后,会改变原来采集图像中各区域的空间关系,这类操作就是图像的几何变换。
1.图像缩放:是指图像按照一定的比例进行缩放变换,例如给定的图像在X轴方向按比例缩放fx倍,在Y轴方向缩放fy倍,从而获得一幅新的图象。
2.图像平移:是指将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平移后的图像与原图像相同。
3.图像旋转:是指以图像的中心为原点,旋转一定的角度,即将图像上的所有像素都旋转一个相同的角度。
二、背景
在实际的机器视觉项目应用当中,时常会遇到因相机采集图像的时候可能会存在角度偏差,或者采集图像比例不合适等问题。
因而导致我们实际采集的图像存在未达到我们预期的采集图像效果,所以我们需要进行图像的几何变换做一些图像调整(图像平移、旋转和缩放等),使之达到我们预期的效果。
在上期课程中,我们讲述了如何使用VPLC系列视觉运控一体机实现图像颜色通道切换和RGB图转灰度图的课程。本期课程正运动技术给大家分享一下VPLC系列视觉运控一体机实现图像的几何变换中缩放、平移和旋转的课程。
教学视频可点击→【视觉运动一体机小课堂】三分钟实现图像的几何变换查看。
三、VPLC控制器
(一)VPLC516E构架图
(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E一台
3.24V直流电源一个
4.网线一根
5.WinSCP软件
6.电线若干
四、课程知识点
1.图像的缩放和平移的指令:ZV_LATCHTRANS
2.图像的旋转:ZV_ROTATE
五、软件实现
1.打开ZDevelop软件:新建名称为“图像的几何变换.zpj”项目→新建HMI文件→新建“Basic.bas”文件(用于编写界面响应函数、并开启HMI自动运行任务)→文件添加到项目。
2.设计HMI主界面和关联它的控件变量。
3.编写图像比例缩放和平移的执行函数。
ZVOBJECT Image '定义原图像变量
ZVOBJECT transform_img '定义变换图像
GLOBAL gv_index '定义图片索引变量
GLOBAL File_Name(50) '定义图片所在的路径名称
gv_index=0
end
GLOBAL SUB hmi_init()
ZV_ENVINIT() 'ZVision运行环境初始化
ZV_SETSYSSTR("DataDir","")'设置默认数据目录
ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 1), HMI_CONTROLSIZEY(10, 1)) '设置锁存的大小
ZV_LATCHSETBGC(0,rgb(255,255,255)) '设置锁存背景颜色
ZV_LATCHCLEAR(0) '将锁存通道 0 清零
END SUB
''''''''采集图像''''''
'HMI界面按下采集图像按钮时执行的子函数
GLOBAL SUB btn_read_img()
'循环图片索引
if(gv_index=5) then
gv_index=0
endif
File_Name = "图片/" + TOSTR(gv_index,1,0) + ".bmp" '确定图片所在的路径
ZV_READIMAGE(Image,File_Name,0) '读取本地图片
ZV_LATCH(Image, 0) '将图像显示到锁存通道编号为0的锁存区域
gv_index=gv_index+1
ZV_IMGCOPY(Image,transform_img) '生成变换图像
END SUB
'''''''图形变换'''''''
'图像缩放平移变换
global sub pic_conversion(id)
if id=0 THEN '图像几何变换复位按钮
ZV_LATCHCLEAR(0)
ZV_IMGCOPY(Image,transform_img)
zv_latch(transform_img,0)
elseif id=1 THEN '图像放大按钮
ZV_LATCHTRANS(0,TABLE(10),0,0)
zv_latch(transform_img,0)
elseif id=2 THEN '图像缩小按钮
ZV_LATCHTRANS(0,1/TABLE(10),0,0)
zv_latch(transform_img,0)
elseif id=3 THEN '图像向右平移按钮
ZV_LATCHTRANS(0,1,TABLE(20),0)
zv_latch(transform_img,0)
elseif id=4 THEN '图像向左平移按钮
ZV_LATCHTRANS(0,1,-TABLE(20),0)
zv_latch(transform_img,0)
elseif id=5 THEN '图像向下平移按钮
ZV_LATCHTRANS(0,1,0,TABLE(20))
zv_latch(transform_img,0)
elseif id=6 THEN '图像向上平移按钮
ZV_LATCHTRANS(0,1,0,-TABLE(20))
zv_latch(transform_img,0)
END SUB
4.编写图像旋转执行函数。
'图像旋转
global sub pic_conversion(id)
if id=7 THEN '图像顺时针旋转按钮
ZV_ROTATE(transform_img,transform_img,TABLE(30),0)
zv_latch(transform_img,0)
elseif id=8 THEN '图像逆时针旋转按钮
ZV_ROTATE(transform_img,transform_img,-TABLE(30),0)
zv_latch(transform_img,0)
endif
ENDSUB
5.效果演示视频可点击→三分钟实现图像的几何变换的操作演示部分查看。
本次,正运动技术【视觉运控一体机小课堂】三分钟实现图像的几何变换的功能,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。