VPLC系列视觉运控一体机实现图像的几何变换

电子说

1.3w人已加入

描述

  一、图像的几何变换

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

  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  

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

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分