Fallen_406 2024-01-12 07:58 采纳率: 0%
浏览 12

焊缝截面轮廓尺寸测量

img

img

上面两幅图片分别是理想状态下的焊缝图像和实际的焊缝图像的截面图
第一幅图的AC和BD为母材表面,曲线CED为焊缝。其中每个数据点都有x和y坐标组成,x为位置信息,y为高度信息。
由传感器测得的焊缝截面的数据保存在excel的第一列和第二列中。

请问有什么方法或者算法可以将焊缝从图像中分离出来,计算它的宽度和高度?
下图是大概的焊趾点位置和高度:

img

  • 写回答

2条回答 默认 最新

  • bobhuang 2024-01-12 09:53
    关注

    这可以看作是个边缘检测问题。边缘通常可以通过一阶导数或二阶导数检测得到。一阶导数是以最大值作为对应的边缘的位置,而二阶导数则以过零点作为对应边缘的位置。对离散点表示的x,y曲线来说,可以近似用相邻点的 (y2 - y1) / (x2 - x1) 来表示该点的一阶导数。

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-12 10:44
    关注

    【以下回答由 GPT 生成】

    我可以使用OpenCV库来处理图像,并使用一些图像处理算法来分离焊缝,并计算其宽度和高度。

    首先,我们需要导入所需的库和模块:

    import cv2
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    

    然后,我们可以使用pandas库来读取Excel文件中的数据:

    data = pd.read_excel('data.xlsx', header=None)
    x = data.iloc[:, 0].values
    y = data.iloc[:, 1].values
    

    接下来,我们可以创建一个空的图像来绘制焊缝曲线和母材表面:

    img = np.zeros((max(y)+10, max(x)+10, 3), dtype=np.uint8)
    

    然后,我们可以使用opencv库中的cv2.line函数来绘制焊缝曲线:

    for i in range(len(x)-1):
        cv2.line(img, (int(x[i]), int(y[i])), (int(x[i+1]), int(y[i+1])), (255, 0, 0), 2)
    

    接下来,我们可以使用图像处理算法将焊缝曲线从图像中分离出来。这里我们可以使用Canny边缘检测算法:

    edges = cv2.Canny(img, 100, 200)
    

    然后,我们可以使用OpenCV库的findContours函数来找到焊缝的轮廓:

    contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    

    接下来,我们可以计算焊缝的宽度和高度。我们可以使用OpenCV库的boundingRect函数来计算焊缝曲线的边界框:

    x, y, w, h = cv2.boundingRect(contours[0])
    

    最后,我们可以将宽度和高度打印出来:

    print("焊缝宽度:", w)
    print("焊缝高度:", h)
    

    以上是一个大致的解决方案。然而,具体的代码实现可能还需要根据你的图像数据的格式进行调整和修改。同时,这个方法的适用性也取决于图像的质量和焊缝曲线的特征。如果你没有提供具体的图像示例,我无法提供更加具体和准确的解决方案。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

    展开全部

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部