线结构光光条直线方程提取问题分析

在线结构光视觉测量系统中,激光光条的提取精度至关重要。光条的提取效果,一方面取决于激光光条本身的质量,另一方面取决于图像处理算法性能,下面进行简要分析。
拍摄的原始图片如下图所示:

在这里插入图片描述用的绿光激光器,本项目使用的是双目相机,两个相机拍摄了很多张图片,所有图片可以点击链接获取。通过下面的python函数对图片进行处理,并计算直线在像面坐标系的直线方程:

def Fitline(original_img, binary, erodeksize, erodeite, dilateksize, dilateite, gaussksize):
    ret, img = cv.threshold(original_img, binary, 255, 0)
    img = cv.erode(img, (erodeksize, erodeksize), iterations=erodeite)
    # cv.imshow("erosion", cv.resize(img, (960, 540)))
    img = cv.dilate(img, (dilateksize, dilateksize), dilateite)
    # cv2.imshow("dilate", img)
    gauss = cv.GaussianBlur(img, (gaussksize, gaussksize), 0)
    edges = cv.Canny(gauss, 100, 150, apertureSize=3)
    # cv.imshow('Canny', cv.resize(edges, (960, 540)))

    contours, hierarchy = cv.findContours(gauss, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
    # cnt = contours[0]
    area = []
    for k in range(len(contours)):
        area.append(cv.contourArea(contours[k]))
    max_idx = np.argmax(np.array(area))

    img1 = cv.merge([original_img, original_img, original_img])
    cv.drawContours(img1, contours[max_idx], -1, (0, 255, 0), 1)
    # cv.imshow('result', cv.resize(img1, (960, 540)))
    vx, vy, x, y = cv.fitLine(contours[max_idx], cv.DIST_L2, 0, 0.01, 0.01)
    k = vy / vx
    b = y - k * x
    # print(k, b)

    lefty = int((-x * vy / vx) + y)
    rows, cols = img1.shape[:2]
    righty = int(((cols - x) * vy / vx) + y)
    line = cv.line(img1, (cols - 1, righty), (0, lefty), (0, 0, 255), 1)
    cv.imshow('line', cv.resize(line, (960, 540)))
    cv.waitKey(10)
    return k, b

把文件夹里面的每一张图片都进行处理,这些光条都是在同一个固定位置拍摄的,理论上每个光条的直线方程应该相同。如果直线用 y = k x + b y=kx+b y=kx+b的形式表示,那么 k k k b b b都应该基本保持不变。我们对这两个参数进行统计分析,得到如下四张统计图:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述处理得到的直线提取效果为:

在这里插入图片描述

精度有待于进一步提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hunter206206

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值