使用LabVIEW AI视觉工具包快速实现霍夫圆和霍夫直线检测(含源码)

简介: 使用LabVIEW AI视觉工具包快速实现霍夫圆和霍夫直线检测(含源码)

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主

🍻本文由virobotics(仪酷智能)原创首发

🥳欢迎大家关注✌点赞👍收藏⭐留言📝

前言

Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。

今天我们一起来使用LabVIEW AI视觉工具包快速实现霍夫圆和霍夫直线的检测。工具包的安装与下载方法可见之前的两篇博客


一、环境搭建

1.1 部署本项目时所用环境

  • 操作系统:Windows10
  • python:3.6及以上
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.98.vip

1.2 LabVIEW工具包下载及安装


二、霍夫直线检测

2.1 霍夫直线检测原理简介

霍夫直线检测过程,是将笛卡尔坐标系下的直线方程转换到极坐标系下,并根据各个像素的坐标点代入得到的方程,获取对应的直线参数.
直线可以分别用直角坐标系和极坐标系来表示:那么经过某个点(x0,y0)的所有直线都可以用这个式子来表示: y0 =kx0+b。也就是说每一个(r,θ)都表示一条经过(x0,y0)直线,那么同一条直线上的点必然会有同样的(r,θ)。如果将某个点所有的(r,θ)绘制成下面的曲线,那么同一条直线上的点的(r,θ)曲线会相交于一点:
image.png

2.2 python实现霍夫直线检测

0️⃣API

lines = cv2.HoughLines(image, rho, theta, thresh)

1️⃣参数

  • image:检测的图像,要二值化的图像,检测前需要先对图像进行二值化处理或是canny边缘检测,推荐使用canny边缘检测的结果图像。
  • rho:以像素为单位累加器的分辨距离值,推荐用1.0。
  • theta:以用弧度表示的角度, 推荐用numpy.pi/180 。
  • thresh:累加器阈值参数,超过设定阈值才被检测出线段,值越大,检出的线段越长,检出的线段个数越少。推荐先用100

返回值:

  • lines:输出检测到的直线的向量,每条直线用(r,θ)表示。r表示直线到原点(就是图片的左上角)的距离。θ表示直线的旋转角度。

2️⃣实现霍夫直线检测

import cv2
import numpy as np

img = cv2.imread("linegraph.jpg")  #读取图片文件

cv2.namedWindow("Image")   
cv2.imshow("Image", img)  #显示该图片内容

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 90, 110)
cv2.imshow('edges', edges)

# 霍夫变换
lines = cv2.HoughLines(edges, 1, np.pi/180,150)
img1 = img.copy()

# 将检测的线绘制在图像上(注意是极坐标噢)
for line in lines:
    rho,theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho
    x1 = int(x0 + 1000 * (-b))
    y1 = int(y0 + 1000 * (a))
    x2 = int(x0 - 1000 * (-b))
    y2 = int(y0 - 1000 * (a))
    cv2.line(img1, (x1, y1), (x2, y2), (255, 255, 0), 2)
cv2.imshow('img1', img1)

cv2.waitKey (0)  #等待一定时间,让显示内容可以被看到

cv2.destroyAllWindows()  #关闭所有显示框

3️⃣运行结果
image.png

2.3 LabVIEW实现霍夫直线检测

0️⃣相关VI及参数介绍

HoughLines.vi:检测图片中的直线image.png

参数说明:

  • Mat in:检测的图像,要二值化的图像
  • parameters簇中参数含义:
  • rho:以像素为单位累加器的分辨距离值,推荐用1.0。
  • theta:以用弧度表示的角度, 推荐用pi/180 。
  • thresh:累加器阈值参数,超过设定阈值才被检测出线段,值越大,检出的线段越长, 检出的线段个数越少。
  • 输出 lines:输出检测到的直线的向量

Draw_Line.vi:绘制直线
image.png

参数说明:

  • Mat:要绘制直线的图像
  • pt1,pt2: 直线的起点和终点
  • color: 线条的颜色
  • thickness: 线条宽度

    Canny.vi:边缘检测
    image.png

参数说明:

  • Mat in:灰度图,
  • threshold1: minval,较小的阈值将间断的边缘连接起来
  • threshold2: maxval,较大的阈值检测图像中明显的边缘

1️⃣实现霍夫直线检测
image.png

2️⃣运行结果
image.png


三、霍夫圆检测

3.1 霍夫圆检测原理

霍夫圆变换跟直线变换类似,线是用(r,θ)表示,圆则是用(x_center,y_center,r)来表示,从二维变成了三维,数据量变大很多,一般使用霍夫梯度法减少计算量。

3.2 python实现霍夫圆检测

0️⃣API

cv2.HoughCircles(image, method, dp, minDist, param1=100, param2=100, minRadius=0,maxRadius=0 )

1️⃣参数

  • image:输入图像
  • method:使用霍夫变换圆检测的算法,它的参数是CV_HOUGH_GRADIENT
  • dp :霍夫空间的分辨率,dp=1时表示霍夫空间与输入图像空间的大小一致,dp=2时霍夫空间是输入图像空间的一半,以此类推
  • minDist为圆心之间的最小距离,如果检测到的两个圆心之间距离小于该值,则认为它们是同一个圆心
  • param1:边缘检测时使用Canny算子的高阈值,低阈值是高阈值的一半。
  • param2:检测圆心和确定半径时所共有的阈值
  • minRadius和maxRadius为所检测到的圆半径的最小值和最大值

返回:

  • circles:输出圆向量,包括三个浮点型的元素——圆心横坐标,圆心纵坐标和圆半径

2️⃣实现霍夫圆检测


import cv2
import numpy as np

img = cv2.imread("shapes.jpg")  #读取图片文件

cv2.namedWindow("Image")
cv2.imshow("Image", img)  #显示该图片内容

gray = img[:,:,2]#cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  #图片转换为灰度格式
##cv2.imshow('gray',gray)

ret,thresh1 = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)

edges = cv2.Canny(thresh1, 90,110) #对图片进行边缘检测

cv2.imshow('HoughCircle',edges)

#通过HoughCircles方法检测圆形
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, 1, 100, param2=22,
                           maxRadius=100,minRadius=30)

#在图片中标识出找到的直线
for i in circles[0, :]:
    cv2.circle(img, (int(i[0]), int(i[1])), int(i[2]), (0, 255, 0), 2)  # 画出外圆
    cv2.circle(img, (int(i[0]), int(i[1])), 2, (0, 0, 255), 3)  # 画出圆心

cv2.imshow('HoughCircle',img)

cv2.waitKey (0)  #等待一定时间,让显示内容可以被看到

cv2.destroyAllWindows()  #关闭所有显示框

3️⃣运行结果
image.png

3.3 LabVIEW实现霍夫圆检测

0️⃣相关VI及参数介绍

HoughCircles.vi:检测图片中的圆
image.png

参数介绍:

  • Mat in:检测的图像,要二值化的图像
  • parameters簇中参数含义:
  • method:使用霍夫变换圆检测的算法,它的参数是3
  • dp :霍夫空间的分辨率,dp=1时表示霍夫空间与输入图像空间的大小一致,dp=2时霍夫空间是输入图像空间的一半,以此类推
  • minDist为圆心之间的最小距离,如果检测到的两个圆心之间距离小于该值,则认为它们是同一个圆心
  • param1:边缘检测时使用Canny算子的高阈值,低阈值是高阈值的一半。
  • param2:检测圆心和确定半径时所共有的阈值
  • minRadius和maxRadius为所检测到的圆半径的最小值和最大值
  • 输出circles:输出圆向量

Draw_Circle.vi:绘制圆

image.png

参数介绍:

  • Mat:要绘制直线的图像
  • center,radius: 圆心和半径
  • color: 线条的颜色
  • thickness: 线条宽度

1️⃣实现霍夫圆检测
image.png

2️⃣运行结果
image.png


四、项目源码

项目源码下载:https://download.csdn.net/download/virobotics/87794021

更多内容可关注微信公众号:VIRobotics

总结

以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续还会继续给各位朋友分享其他案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~

如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:LabVIEW机器视觉

**如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏

目录
相关文章
|
7天前
|
人工智能 数据处理 C#
AI Dev Gallery:微软开源 Windows AI 模型本地运行工具包和示例库,助理开发者快速集成 AI 功能
微软推出的AI Dev Gallery,为Windows开发者提供开源AI工具包和示例库,支持本地运行AI模型,提升开发效率。
47 13
|
4月前
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
|
12天前
|
机器学习/深度学习 人工智能 安全
阿里云先知安全沙龙(武汉站) ——AI赋能软件漏洞检测,机遇, 挑战与展望
本文介绍了漏洞检测的发展历程、现状及未来展望。2023年全球披露的漏洞数量达26447个,同比增长5.2%,其中超过7000个具有利用代码,115个已被广泛利用,涉及多个知名软件和系统。文章探讨了从人工审计到AI技术的应用,强调了数据集质量对模型性能的重要性,并展示了不同检测模型的工作原理与实现方法。此外,还讨论了对抗攻击对模型的影响及提高模型可解释性的多种方法,展望了未来通过任务大模型实现自动化漏洞检测与修复的趋势。
|
16天前
|
人工智能 安全 图形学
【AI落地应用实战】篡改检测技术前沿探索——从基于检测分割到大模型
在数字化洪流席卷全球的当下,视觉内容已成为信息交流与传播的核心媒介,然而,随着PS技术和AIGC技术的飞速发展,图像篡改给视觉内容安全带来了前所未有的挑战。 本文将探讨篡改检测技术的现实挑战,分享篡改检测技术前沿和最新应用成果。
|
2月前
|
存储 人工智能 SEO
全开源免费AI网址导航网站源码
Aigotools 可以帮助用户快速创建和管理导航站点,内置站点管理和自动收录功能,同时提供国际化、SEO、多种图片存储方案。让用户可以快速部署上线自己的导航站。
221 1
|
2月前
|
机器学习/深度学习 人工智能 运维
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
74 0
|
3月前
|
机器学习/深度学习 人工智能 JSON
微信小程序原生AI运动(动作)检测识别解决方案
近年来,疫情限制了人们的出行,却推动了“AI运动”概念的兴起。AI运动已在运动锻炼、体育教学、线上主题活动等多个场景中广泛应用,受到互联网用户的欢迎。通过AI技术,用户可以在家中进行有效锻炼,学校也能远程监督学生的体育活动,同时,云上健身活动形式多样,适合单位组织。该方案成本低、易于集成和扩展,已成功应用于微信小程序。
|
3月前
|
机器学习/深度学习 人工智能 算法框架/工具
基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)
基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)
102 0
|
5月前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
1692 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
4月前
|
人工智能 计算机视觉
AI计算机视觉笔记十五:编写检测的yolov5测试代码
该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。

热门文章

最新文章

下一篇
开通oss服务