python - 构建网络以检测 CT 扫描中的裂缝
问题描述
这个问题陈述是这个问题的延伸:Detecting the presence of a black area in a grayscale image
我正在提供手头的整个问题,因此考虑将其包含在单独的帖子中。
机器现在能够 3D 打印金属零件。他们在层中这样做 - 在添加每一层之后,以灰度进行扫描。以下图像分别在第 2 层和第 75 层拍摄。这些图像正是它们应该看起来的样子。
但是,如果让我们说在第 75 层的扫描中有裂缝,那么扫描会将其显示为一条暗线/曲线(不是黑色,但肯定比周围的灰色区域更暗)
目标是检测每一层的裂纹,以便立即停止进一步的打印。
这可以使用神经网络来完成吗?由于更倾向于开发通用代码 - 相同的代码可用于扫描其他部分。
我并不是真的要求整个代码,只是寻求解决方案的最佳方法。
解决方案
是的,神经网络是 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()
推荐阅读
- javascript - ion-menu 不做动画,怎么添加动画
- mysql - MySQL/MariaDB 优化两表全文搜索
- kotlin - 如何在 kotlin 中做一个按钮来查看一个片段到另一个片段?
- r - Shiny中列之间的垂直分隔线
- javascript - 如何在 TypeScript 中表达幂等(自展平)类型?
- android - 如何将文本与 TextView 的 fontFamily 共享到 WhatsApp
- python - 在 Pytorch OD 中使用 Albumentations 进行增强
- python - TypeError:预期的 str、bytes 或 os.PathLike 对象,而不是 Django 中的 JpegImageFile(或 PngImageFile)
- android - Android,Contacts Contract:存储和检索自定义数据
- node.js - 从 Watson Assistant 获取 turn_count