正运动技术
正运动技术

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

【视觉运动一体机小课堂】三分钟实现图像的几何变换

  一、图像的几何变换


  机器视觉图像处理软件对相机采集的图像进行缩放/平移/旋转等操作后,会改变原来采集图像中各区域的空间关系,这类操作就是图像的几何变换。


  1.图像缩放:是指图像按照一定的比例进行缩放变换,例如给定的图像在X轴方向按比例缩放fx倍,在Y轴方向缩放fy倍,从而获得一幅新的图象。


  2.图像平移:是指将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平移后的图像与原图像相同。


  3.图像旋转:是指以图像的中心为原点,旋转一定的角度,即将图像上的所有像素都旋转一个相同的角度。


  二、背景


  在实际的机器视觉项目应用当中,时常会遇到因相机采集图像的时候可能会存在角度偏差,或者采集图像比例不合适等问题。


  因而导致我们实际采集的图像存在未达到我们预期的采集图像效果,所以我们需要进行图像的几何变换做一些图像调整(图像平移、旋转和缩放等),使之达到我们预期的效果。


  在上期课程中,我们讲述了如何使用VPLC系列视觉运控一体机实现图像颜色通道切换和RGB图转灰度图的课程。本期课程正运动技术给大家分享一下VPLC系列视觉运控一体机实现图像的几何变换中缩放、平移和旋转的课程。



  三、VPLC控制器


  (一)VPLC516E构架图


 1.png


  (二)课前准备


  1.电脑一台,安装ZDevelop3.10以上版本软件


  2.VPLC516E一台


  3.24V直流电源一个


  4.网线一根


  5.WinSCP软件


  6.电线若干


  四、课程知识点


  1.图像的缩放和平移的指令:ZV_LATCHTRANS


 2.png


  2.图像的旋转:ZV_ROTATE


  3.png


  五、软件实现


  1.打开ZDevelop软件:新建名称为“图像的几何变换.zpj”项目→新建HMI文件→新建“Basic.bas”文件(用于编写界面响应函数、并开启HMI自动运行任务)→文件添加到项目。


  4.png


  2.设计HMI主界面和关联它的控件变量。


  5.png


  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.效果演示。



 6.png


  本次,正运动技术【视觉运控一体机小课堂】三分钟实现图像的几何变换的功能,就分享到这里。


  更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。


邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询