基于深度学习的工业缺陷检测(早期阶段)

创作缘由

                上篇文章,我们讲了一个总概,那么现在肯定到了该逐一讨论的时刻啦,今天我们就讲讲早期阶段中,我们做开发或者研究一定会考虑到的东西:阈值分割,一个从软件层面上提升硬件采集能力的方法。Go!(早起阶段不仅仅有阈值分割,其实是还有很多突破点的:就比如边缘检测,这里就允许我用一个点来跟大家一起讨论吧,由于篇幅的限制,可能下期再续论:边缘检测)

                本文会将必要的文献等资料整理成压缩包,挂在上面供大家下载。文献资料的名字都会用淡红色给出哦!

-----------------------------------------------------------------------基于深度学习的工业缺陷检测-----------------------------------------------------------------

一、历史发展

  • 20世纪50-60年代:阈值分割的基础理论和早期应用开始形成。John Tukey提出了箱线图,这是一种利用统计数据进行数据分割的方法,为后来的图像分割技术奠定了基础。(补充:箱线图其实就是EDA中的一种工具,EDA中还有很多大家比较熟悉的:直方图、热图等等)。这位老爷爷也出了一本同名的书籍哦,有想法的可以看看,大部分都是统计学的知识。 

       相关文献: Tukey J W. Exploratory data analysis[M]. Reading, MA: Addison-wesley, 1977

  • 20世纪70年代:随着计算机图像处理技术的发展,阈值分割技术得到了广泛应用和深入研究。Otsu的方法(1979年)成为一个里程碑,提出了一种基于图像直方图的自动阈值选择方法,被广泛应用于各种图像分割任务中。(大津法的提出)

       相关文献:Otsu N. A threshold selection method from gray-level histograms[J]. Automatica, 1975, 11(285-296): 23-27.

  • 20世纪80-90年代:自适应阈值分割技术开始发展,研究人员提出了多种改进方法,使得阈值分割技术在处理复杂图像时更加有效。(阈值分割的扩展技术的发展)

       相关书籍:Gonzalez R C. Digital image processing[M]. Pearson education india, 2009.

  • 21世纪至今:随着计算机硬件和算法的不断进步,阈值分割技术进一步优化。基于深度学习的方法也开始融入图像分割领域,提升了阈值分割的效果和应用范围。(深度学习的加入)

       相关资料:由屏幕前的各位来写,写完告诉我,我在这里加。

二、图形分割

        图形分割是将图像划分为若干个不相交的子区域的过程,其中每个子区域的像素具有相似的属性(如灰度、颜色、纹理等,这三个也是我们检测中的基础依赖),并且不同子区域的像素在这些属性上有显著差异。该过程可以用数学表达式表示为:

        图形分割中有一个大头:阈值分割 是基于像素值将图像划分为不同区域的过程,通常使用一个或多个预设的阈值将图像中的像素分为若干类。对于灰度图像,这一过程可以描述为:

三、阈值分割

        1、心得体会

         很多人可能会对我文章开始说到的:“阈值分割,一个从软件层面上提升硬件采集能力的方法。”感到疑惑。其实在图形处理中你要得到很好的处理样本,要么就是硬件设备好:能够采集到很多细节,这样你做缺陷检测或者其他就有更多细节可以依赖,其实也会有更多方法使用,要么就是你处理的好:就比如一个图像你采用了适合的阈值分割的话,就可以更好的突出前景和背景,达到有些硬件一样的效果,有利于后期的边缘检测等等,有的也可以更好提高鲁棒性。阈值分割可以在灰度图像中用来处理灰度值,实现划分的效果,也可以再彩色图中应用于每个颜色分割特定颜色,也可以针对某个波段进行处理,对不同波段的信息进行分割。

        2、直观理解 

         直观了解下阈值分割,依照OCR识字为例:

         图中①wine比较完整,但是n上面多了点,就有可能是阈值设置过低导致本该属于背景的像素点显示了黑色(255白色 0黑色 两者之间有256个阶梯度),如果在基础上阈值设置高点,那么也可能会导致wine有部分缺失,如同②一样。<①②这部分前景是黑色,背景是白色。③就恰恰相反了>。这也是为啥,有的OCR识别不准确的原因之一,也是为啥值得我们研究的地方。

      3、归纳分类

        固定阈值分割:又名全局阈值分割,也就是笼统的选择一个阈值作为整个图片的分割标准,将图像中的像素值与该阈值进行比较,低于阈值的像素被归为一类,高于阈值的像素被归为另一类。利用固定的阈值对所有像素进行统一处理,简单高效,适用于图像中前景和背景对比明显的情况。适用于光照均匀、对比度高的图像。容易实现,但对复杂图像效果不好。核心代码如下:

cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)     

      Otsu阈值分割:Otsu方法是一种自适应阈值分割方法,通过最大化类间方差来自动选择最佳阈值。通过遍历所有可能的阈值,找到使类间方差最大的阈值,确保前景和背景的分离效果最佳。适用于单峰和双峰直方图的图像,能够自动选择阈值,效果优于固定阈值分割。核心代码如下:

cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

      自适应阈值分割:自适应阈值分割根据图像的局部特性动态调整阈值,以应对光照不均匀的情况。将图像分割成若干小区域,每个区域独立计算阈值,适应局部光照变化。适用于光照不均匀的图像,能有效处理局部对比度不同的问题。核心代码如下:

cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
cv2.THRESH_BINARY, 11, 2)

       多阈值分割:多阈值分割使用多个阈值将图像分割成多个类别,适用于多峰直方图的图像。在图像直方图中寻找多个阈值,将图像分割成多个不同类别。适用于包含多种物体或区域的图像,能将图像分割成多个层次。核心代码如下:

# 初步阈值分割
_, th1 = cv2.threshold(image, 50, 255, cv2.THRESH_BINARY)
_, th2 = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)
_, th3 = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY)

# 合并阈值结果
multi_thresholded_image = th1 + th2 + th3

       颜色阈值分割:颜色阈值分割是对彩色图像进行阈值分割,根据不同颜色通道的阈值进行处理。对每个颜色通道设定不同的阈值,结合多个通道的信息进行分割。适用于彩色图像中不同颜色区域的分割,效果显著。核心代码如下:

# 转换为HSV颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 设定颜色范围
lower_bound = np.array([0, 50, 50])
upper_bound = np.array([10, 255, 255])

# 颜色阈值分割
mask = cv2.inRange(hsv_image, lower_bound, upper_bound)
result = cv2.bitwise_and(image, image, mask=mask)

        :黑细字体为定义蓝粗字体为核心思想棕粗字体为作用效果。

四、我为人人,人人喂我

           

  • 37
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值