建立一个网络来检测CT扫描中的裂缝

2024-04-19 23:46:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题陈述是这个问题的扩展:Detecting the presence of a black areas in a grayscale image

我提供了手头的整个问题,因此认为包括在一个单独的职位。你知道吗

机器现在可以三维打印金属零件。它们是分层进行扫描的,在每一层添加之后,都会进行灰度扫描。以下图像分别在第2层和第75层拍摄。这些图像正是他们应该看到的。你知道吗

但是,如果假设在第75层的扫描中有裂纹,则扫描显示为暗线/曲线(不是墨黑色,但肯定比周围的灰色区域暗)

目的是检测每一层的裂缝,以便立即停止进一步的印刷。你知道吗

这可以用神经网络来实现吗?由于更倾向于开发通用的代码,所以相同的代码可以用于扫描其他部分。你知道吗

我并不是真的要求完整的代码,只是对解决方案的最佳可能的方法。你知道吗

这是第二层: Layer 2

这是第75层: Layer 75


Tags: ofthe代码in图像image机器职位
1条回答
网友
1楼 · 发布于 2024-04-19 23:46:54

是的,神经网络是一个可能的解决方案,裂纹检测在您的三维打印部分。在每一层印刷之后,部分印刷部分的图像将被传递到神经网络。神经网络将图像分类为“无裂纹”或“存在裂纹”

训练神经网络需要样本数据。你有没有3d打印零件上有裂缝的图片?希望不是!如果你知道裂缝通常是什么样的,你可以创建一个合成数据集,并用它训练神经网络。下面是我使用Python/OpenCV生成的一个裂纹示例: generated crack using python 这是我用来生成裂缝的代码:

import cv2, numpy as np, random
# Read source image
img = cv2.imread('/home/stephen/Desktop/lco7q.jpg')
# Create dx and dy arrays (this defines the crack
crack_length = 41
dy = np.random.normal(0,1,crack_length)+1
dx = np.random.normal(0,1,crack_length)+1
# Start the crack at 'a'
a = 0,123
# Iterate through each point in the crack
for i in range(crack_length-1):
    # Calculate which way the crack is going
    b = a[0] + dx[i] *i, a[1] + dy[i] *i
    # Draw a line
    cv2.line(img, tuple(np.array(a, int)), tuple(np.array(b, int)), 0, 4)
    # Go onto the next point
    a = b
# Show the image
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关问题 更多 >