一、图像的几何变换
机器视觉图像处理软件对相机采集的图像进行缩放/平移/旋转等操作后,会改变原来采集图像中各区域的空间关系,这类操作就是图像的几何变换。
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
本次,正运动技术【视觉运控一体机小课堂】三分钟实现图像的几何变换的功能,就分享到这里。
【飞测生物】重金属检测仪有哪些特点
移动端人像分割开发
5G时代链条上最关键的连接器是什么?
关于IP68级USB 2.0线缆组件和面板安装式耦合器的性能分析和介绍
中国联通AI科学家廉士国入选全球前2%顶尖科学家榜单
VPLC系列视觉运控一体机实现图像的几何变换
华砺智行开启智能汽车领域的“跨界”合奏
三星S9渲染图曝光: 摄像头部分变动较大
移动支付芯片的硬件架构详解
红外热成像模组如何应用于船舱漏水?
电源模块DC-DC隔离型的测试方法是怎样的
GooglePixel4系列预订页面曝光 提供标准版和XL版
realme真我X50 5G手机充电速度惊人,采用增强版VOOC闪充4.0
BQ24075RGTR型号电池充电器的产品介绍
云”割韭菜? 轻量云服务器选择这款更实惠.
Samplify Systems公司发布首款商用超声波束合成ASIC专用芯片
单片机晶振概述及工作原理
CPLD在多路高速同步数据采集系统中的应用
天嵌科技5寸高清电容屏-电容屏介绍
如何利用LT6372系列器件为仪表放大器添加增益选择功能