【发布时间】:2021-02-13 12:07:45
【问题描述】:
我正在尝试预处理布料的图像(例如下面
并对其进行预处理,使其看起来像这样,以便轻松区分针迹和织物的其余部分(例如下面)
我的最终目标是在这些预处理图像上训练一个模型来检测坏缝。
理想的预处理应该是
第 1 步:
第 2 步:
第 3 步:
第四步:
目前,我正在使用可怕的 OpenCV 函数混搭来实现我在上面发布的结果;这很糟糕而且还不够好,因为我想创建一个实时系统。我想听听您对如何优化以下代码的见解
我没有足够的声誉来发布图片,这就是我发布超链接的原因:)
image = cv2.imread("C:/Users/name/Downloads/timepass/1.jpg")
image = cv2.resize(image, (800, 800))
thresh = 185
blur = cv2.bilateralFilter(image, 50, 175, 175)
blur = cv2.bilateralFilter(blur, 50, 175, 175)
im_bw = cv2.threshold(blur, thresh, 255, cv2.THRESH_BINARY)[1]
gray = cv2.cvtColor(im_bw, cv2.COLOR_BGR2GRAY)
final = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY)[1]
cv2.imshow("bi", final)
【问题讨论】:
-
如果你想训练一个模型(我假设你的意思是一个神经网络),那么这种预处理是没有必要的,因为神经网络会自己学习这些过滤器。
-
如果您真的想使用定制设计的过滤器,您应该研究自适应阈值并在傅里叶空间中过滤某些图像频率以减少噪声而不是(或除此之外)模糊
-
查看 cv2.inRange() 到给定颜色(或颜色范围)的阈值
标签: python opencv image-processing conv-neural-network opencv-python