二值化_初探图像二值化

本文介绍了图像二值化的概念,它是图像分割的基础,用于将图像转化为黑/白二值图像。讨论了固定阈值和自适应阈值二值化方法,包括双峰法、OTSU算法。通过OpenCV库展示了Simple Thresholding和Adaptive Thresholding的应用,适用于文字图像处理和消除拍照阴影。二值化是图像处理中关键的预处理步骤。
摘要由CSDN通过智能技术生成

be637204795a4807a06d7499788be621.png

二值化

(英文: Binarization)

将非二值图像经过计算变成二值图像,它进行图像分割(Segmentation)最简单的一种方法,即后续图像处理技术的基础(简化后期的处理,提高处理速度),可以将灰度图像转化成二值图像。一般用它将感兴趣的目标和背景分离,比如:将人脸图像分为皮肤区域和非皮肤区域,将图像文字转换成PDF文字(黑/白)等等。因此,图像二值化可以看做是聚类或者分类。

二值图像即为每个像素只有两个可能值的数字图像,常出现在图像掩码,图像分割,二值化和dithering。

其将大于某个临界灰度值的像素灰度设为灰度极大值,小于这个值的为灰度极小值,从而实现二值化。

根据域值,二值化分为固定阈值和自适应阈值。比较常用的二值化方法有:双峰法,P参数法,迭代法和OTSU法等。

首先,介绍一种比较简单的方法。将图片灰度化后,我们选择127(灰度值范围的一半)作为阈值,即将像素值大于127的像素值全部设为255,小于127的全部设为0.

def easy_binarization(img):
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray[img_gray>127] = 255
    img_gray[img_gray<=127] = 0
    plt.imshow(img_gray, cmap='gray')
    plt.show()
    return img_gray

通过这种方法我们得到一张这样的图片:

1d8bd44684266d285e2a93961f81584b.png

严谨一点,为了应对每张灰度值大不相同,我们将阈值取为图像本身的平均值

def mean_binarization(img):
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    threshold = np.mean(img_gray)
    img_gray[img_gray>threshold] = 255
    img_gray[img_gray<=threshold] = 0
    plt.imshow(img_gray, cmap='gray')
    plt.show()
    return img_gray

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值