这个问题陈述是这个问题的延伸:Detecting the presence of a black areas in a grayscale image
我正在提供手头的整个问题,因此我想将其包含在单独的帖子中。
机器现在可以3D打印金属零件了。它们是以层的形式进行的--在添加每一层之后,就会以灰度进行扫描。下面的图像分别在第2层和第75层拍摄。这些图像正是他们应该看到的样子。
然而,如果假设在第75层的扫描中有一个裂缝,那么扫描会显示为一条深色的线/曲线(不是乌黑,但绝对比周围的灰色区域暗)。
目标是检测每一层上的这种裂缝,以便可以立即停止进一步的打印。
使用神经网络可以做到这一点吗?因为更倾向于开发通用的代码-相同的代码可以用于扫描其他部分。
我并不是真的想要完整的代码,只是想要最好的解决方案。
这是第2层:

这是第75层:

发布于 2019-03-26 01:28:39
是的,神经网络是3d打印零件中裂纹检测的一种可能的解决方案。在打印每一层之后,部分打印部分的图像将被传递到神经网络。神经网络会将图像分类为“无裂纹”或“有裂纹”。
训练神经网络需要样本数据。你们有没有3d打印零件有裂纹的图像?希望不是!如果你知道裂缝通常是什么样子的,你可以创建一个合成数据的数据集,并使用它来训练神经网络。下面是我使用Python/OpenCV生成的一个破解示例:

这是我用来生成破解的代码:
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()https://stackoverflow.com/questions/55342185
复制相似问题