Labview 图像处理系统设计

1. 总体主界面设计

前面板界面如下:

界面总共分为一个实时采集加拍照控制模块,两个图像显示模块(实时图像显示和直方图显示)以及三个图像处理模块

前面板中各模块具体功能及使用说明如下:

1.当实时按钮关闭时(灯暗)系统所处理的图像均为静态图像,此时点击LOAD IMAGE 按钮弹出文件对话框选择需要处理的图片

2.当实时按钮开启时(绿灯)系统通过摄像头实时采集图片进行处理

3.DETECT EDGES按钮为开启边缘检测,Method列表框中可以选择边缘检测所使用的方法

4.CANNY DETECTOR 按钮表示使用CANNY方法进行边缘检测,Canny/Filter Parameters框中可以进行相关参数的设置

5.点击保存图片按钮可以实现静态处理后图像的保存以及实时处理后图像的保存

6.相机选择:选择采集所使用的摄像头

7.拍照:在实时采集的过程中进行拍照并保存照片,照片的路径及名称由图片保存路径控件以及设定文件名控件进行输入

8.反色按钮实现图像反色

9.阈值化按钮实现图像的阈值化,其中阈值化的范围通过水平滑动杆滑动设置

10.对称、旋转、平移操作是通过容器中的选项卡控件实现的,在对称选项中通过列表框选择对称的方式然后点击开启按钮实现;在旋转选项中,通过旋钮实现360°的旋转;在平移操作中,通过垂直和水平滑动杆分别实现垂直方向和水平方向的平移操作

2. 程序框图设计

(1)非实时导入图片文件

通过按钮与条件结构实现,按钮点击后条件结构中打开文件对话框,读取文件,通过新建的窗口显示,还可以调用灰度直方图控件显示图片的灰度直方图

(2)实时采集图像和拍照

上图所示的是一个实时采集的模块,主要是通过选择相机,打开相机,grab设置,以及图像的grab控件实现,其中图像的grab控件需要放入while循环中以实现实时采集,接入显示控件中进行显示

拍照功能的实现是条件结构中,使用控件得到循环中上一次抓取的图像,然后通过创建路径函数以及写文件控件将图像进行保存

需要注意的是,实时采集的图像如果需要用于后续的图像处理则通过控件转为灰度图像再进行处理

(3)边缘检测

将实时采集的图像或者打开的静态图像接入边缘检测控件的src接口,再将通过复制控件所复制的目标图像接入检测控件的dst接口,最后还需通过Method方法控制检测方法完成边缘检测功能,同样canny边缘检测利用控件进行统一的操作,最终通过窗口输出处理后的图片

(4)反色、阈值化

反色和阈值化是利用条件结构再分别通过控件和控件实现的,接口的连线与边缘检测一样,其中反色没有参数设置,而阈值化控件中还需接入前面板所示的滑动杆来调整范围

(5)对称、旋转、平移

对称、旋转、平移通过选项卡控件来进行选择。对称中有一个按钮控制是否进行操作,然后通过控件实现,控件除了接入图像外还需要接入选择控件用来选择对称方式; 旋转利用控件,需接入旋钮控件实现控制;平移利用控件并接入水平和垂直滑动杆进行控制

(6)保存处理图片

通过文件对话框选择保存的路径以及格式再与处理后的的图片一起接入控件实现BMP文件的写入即保存

(7)处理图片打开方式控件及其输出

我的处理后的图片都是通过控件进行显示的,后续的保存和直方图显示则需要利用该控件的输出,连线需要如下:

条件为真时,输出与结构边框连接,条件为假时,将dst图片统一接入该边框点,进行这样一个操作之后我发现在静态处理时,只需要选择一个此显示控件,将输出图片接口接入到保存控件或者直方图控件中即可完成统一的操作,而不需要将每一个图像处理操作条件结构中的控件的输出接到别的控件,但是在实时操作时却又不能完成这样的统一操作,还需要逐个接入。

除此之外,利用该控件在进行不同图像处理的转换时也可以直接覆盖

(8)按钮、旋钮等控件

在进行实时处理时,发现按钮的点击必须设置为单击时转换,并且需要在进行该处理时一直保持开启状态才行,而如果开启后在没有关闭的情况下又选择了另一个按钮进行开启即两个按钮都是打开的,那么程序判定的是以离当前最近的一次操作进行处理的。在静态操作时,每一次点击按钮后在条件结构中我再对按钮的状态取反避免一直开启,否则的话,例如保存按钮如果点击一次后将会一直开启那么会一直弹出文件对话框阻止我们的后续操作。最后还需要对所有的控件在最外层循环外进行一个初始化操作如下:

3. 程序演示

接下来对程序进行部分功能的演示

运行程序后无论静态还是实时都会开启摄像头实现显示:

(1)静态

加载图片:

选择后弹出加载的图片:

边缘检测:

Canny:

阈值化:

(2)实时

同时显示实时图像的灰度图以及对应的灰度直方图

Canny:

反色:

上下对称:

旋转:

平移:

(3)保存图像

成功保存实时采集的图像

4. 总结

labview上手也挺容易,可以自己去随意设计,此外它还可以与机器学习结合,共同实现一个完整的系统。

相关推荐
IT _oA1 小时前
Active Directory 域服务
运维·服务器·网络·windows·笔记
袖清暮雨1 小时前
Python刷题笔记
笔记·python·算法
六bring个六2 小时前
QT上位机笔记
开发语言·笔记·qt
熬夜造bug2 小时前
LeetCode Hot100 刷题笔记(1)—— 哈希、双指针、滑动窗口
笔记·leetcode·hot100
Microvision维视智造3 小时前
突破焊丝虚影干扰,端子焊点缺陷检测如何实现自动化?
数码相机·自动化·视觉检测
知来者逆3 小时前
YOLO目标检测应用——基于 YOLOv8目标检测和 SAM 零样本分割实现指定目标分割
yolo·目标检测·计算机视觉·图像分割·sam·yolov8
しかし1181144 小时前
C语言队列的实现
c语言·开发语言·数据结构·数据库·经验分享·链表
花之亡灵5 小时前
.net6 中实现邮件发送
笔记·c#·.net·代码规范
LuoYaFu5 小时前
文件上传做题记录
笔记
吴梓穆6 小时前
UE5学习笔记 FPS游戏制作43 UI材质
笔记·学习·ue5