简单人工智能技术应用 使用Python+OpenCV进行图像处理( 十 )

_ , thresh_4 = cv2.threshold(img , 127 , 255 , cv2.THRESH_TRUNC)

# Plot the images

images = [img , thresh_0 , thresh_1 , thresh_2 , thresh_3 , thresh_4]

fig , axs = plt.subplots(nrows = 2 , ncols = 3 , figsize = (13 , 13))

for ind , p in enumerate(images):

ax = axs[ind//3 , ind%3]

ax.imshow(p)

plt.show()

如上图所示 , 每种类型的阈值都可以用数学公式表示 , I(x , y)是像素点的强度(也称为点(x , y)的像素值) 。 上图中的图像示例 , 可以更直观的理解不同阈值化类型之间的区别 。

只取一个阈值并将其应用于图像的所有部分并不能满足我们的全部需求 。 如果我们有一张在多个不同区域亮度差异较多的图片这种情况 , 将一个值应用于整个图像一般不利于我们的图像处理任务 。 其对应更好的方法是对图像的每个部分使用不同的阈值 。 对应这种情况还有另外一种阈值化技术称为自适应阈值化(Adaptive threshilding) 。 通过对图像邻域内阈值的计算 , 可以得到不同光照条件下的较好结果 。

推荐阅读