利用最大类间方差求数组分割的合适阈值-以车牌上下裁剪为例

本文探讨了在车牌识别中如何进行有效的上下裁剪,以去除外部区域和锚点。通过分析垂直方向的白色像素点数直方图,并应用最大类间方差思想寻找阈值,实现对车牌图像的优化裁剪。在实践中,先进行去噪处理,然后利用Otsu方法确定阈值,最终得到理想的车牌裁剪结果。
摘要由CSDN通过智能技术生成

        车牌上下裁剪(去除车牌垂直方向的外部区域以及车牌的锚点)在车牌识别中十分重要,裁剪过后对车牌的后续处理才更加方便。

图1 二值化的车牌图像binary 

        选取合适的阈值上下裁剪十分重要,根据每行的白色像素点数与阈值的大小关系判断,阈值的选取采用最大类间方差的思想。但是该方法易受噪声影响,求阈值前先进行去噪。每行白色像素点数直方图如图2

 图2 垂直方向白色像素点数直方图

从车牌图像中来看,我们期望的阈值应该是能区分250和300部分的,这些小于150的可以看成噪点,可以提前去除

x_histogram_tmp = x_histogram[x_histogram > binary.shape[1]/5*2]

图3 x_histogram_tmp

otsu的代码如下

def otsu(array, scale):
    length = len(array)
    histogram = np.zeros((scale))
    for i in range(length):
        histogram[int(array[i])] += 1
    histogram /= length
    avg = np.sum(np.arange(scale)*histogram)
    w = 0
    u = 0
    max_var = 0
    thresholdV = 0
    for i in range(scale):
        w += histogram[i]
        u += i * histogram[i]
        t = avg * w - u
        variance = t * t / (w * (1 - w) + 0.0001)
        if variance > max_var:
            max_var = variance
            thresholdV = i
    return thresholdV

thresholdV = otsu(x_histogram_tmp, binary.shape[1]+1)

求得的阈值为260,最后分割出来的效果为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值