构建网络以检测CT扫描中的裂缝

问题描述 投票:2回答:1

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

我提供了手头的整个问题,因此考虑将其包含在一个单独的帖子中。

机器现在能够3D打印金属部件。它们分层执行 - 在添加每个图层后,以灰度进行扫描。以下图像分别在第2层和第75层拍摄。这些图像正是他们应该看的样子。

但是,如果让我们说第75层的扫描中有裂缝,则扫描显示为暗线/曲线(不是黑色,但绝对比周围的灰色区域暗)

目标是在每一层检测这种裂缝,以便可以立即停止进一步的印刷。

可以使用神经网络完成吗?由于开发通用代码更为可取 - 相同的代码可用于扫描其他部分。

我并不是真的要求整个代码,只是解决方案的最佳方法。

这是第2层:Layer 2

这是第75层:Layer 75

python opencv image-processing neural-network
1个回答
2
投票

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

训练神经网络需要样本数据。你有任何带有裂缝的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()
© www.soinside.com 2019 - 2024. All rights reserved.