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

标签 python opencv image-processing neural-network

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

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

机器现在可以 3D 打印金属零件。他们分层进行——在添加每一层之后,进行灰度扫描。下面的图片分别是在第2层和第75层拍摄的。这些图像正是它们应该看起来的样子。

但是,如果假设在第 75 层的扫描中存在裂缝,那么扫描将其显示为暗线/曲线(不是漆黑的,但肯定比周围的灰色区域更暗)

目的是检测每一层的裂缝,以便立即停止进一步打印。

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

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

这是第 2 层: Layer 2

这是第 75 层: Layer 75

最佳答案

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

训练神经网络需要样本数据。您有任何带有裂纹的 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()

关于python - 构建网络以检测 CT 扫描中的裂缝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55342185/

相关文章:

python - 使用 3 个常量查找所有可能的排列

python - 如何从 Django 表单获取 ChoiceField 值?

opencv - 无法识别的命令行选项 '-stdlib=libstdc++'

python - 在 OpenCV 中重用 grabcut 模型

java - 如何在android opencv中检测轮廓宽度和高度

python - Python 中的 only() 方法?

Python 2.7 内存泄漏与 scipy.minimize

python - 如何更快地处理nparrays

python - 如何在python opencv中保存光流输出?

python - 将图像向左移动 x 像素,同时保持原始形状