0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

驗(yàn)證碼識(shí)別之二值化介紹

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-10 20:50 ? 次閱讀

前言

二值化顧名思義就是將數(shù)變成兩種值,一般非0即1。而在驗(yàn)證碼處理中,如果直接使用灰度圖,那么每個(gè)像素的值會(huì)在0-255,這樣肯定會(huì)增加計(jì)算時(shí)間,而二值化后每個(gè)像素的值只是0和1。

在前面的簡單驗(yàn)證碼識(shí)別中,我的二值化代碼是這樣寫的:a = (a > 180) * 255,至于這里為什么不乘1而乘255,因?yàn)槲乙@示圖片看看效果。如果只是用于算法識(shí)別的話,乘1會(huì)更好。但是,這里的180也就是二值化的閾值是如何得到的,開始是通過一個(gè)一個(gè)試然后看效果哪個(gè)好就選哪個(gè),因?yàn)槲覀円话阒蛔R(shí)別某個(gè)網(wǎng)站的驗(yàn)證碼,這樣只要測試幾次得到結(jié)果后便可用于這個(gè)網(wǎng)站其他的驗(yàn)證碼。

這樣測試有點(diǎn)浪費(fèi)時(shí)間,雖然是一次性的,但是你手動(dòng)測出的驗(yàn)證碼不一定是最合適的。所以我們需要算法去自動(dòng)計(jì)算出驗(yàn)證碼的閾值,算法有很多,這里我們使用迭代法和最大類間方差法,通過這兩個(gè)算法計(jì)算出來的閾值基本差不多。

迭代法

  1. 求出圖像中的最小灰度值和最大灰度值,分別記為Gmin和Gmax,則閾值初值T0=(Gmin+Gmax)/2;
  2. 根據(jù)閾值T0將圖像分割成前景和背景兩部分,求出兩部分的平均灰度值m1和m2,平均灰度值=總灰度值/像素個(gè)數(shù)
  3. 求出新閾值T1=(m1+m2)/2
  4. 如果T0=T1,則結(jié)束,否則將T1的值賦予T0,從第2步重新計(jì)算。

算法實(shí)現(xiàn)如下:

import numpy as np
from PIL import Image

def iteration(img_path):
    img = Image.open(img_path).convert('L')
    a = np.array(img)
    a = a.ravel()
    k = int((int(a.max()) + int(a.min()))/2) # 即初始閾值T0
    m = -1
    while k != m:
        # C1和C2為前景和背景的像素
        C1 = a[a >= k]   
        C2 = a[a < k]
        k = m
        m1 = np.sum(C1)/len(C1) if len(C1) else 0
        m2 = np.sum(C2)/len(C2) if len(C2) else 0
        m = int((m1 + m2)/2)
    return k 

最大類間方差法(OTSU)

存在閾值T將圖像所有像素分為前景和背景,則這兩類像素各自的均值就為m1、m2,圖像全局均值為mG。同時(shí)像素被分為前景和背景的概率分別為p1、p2。因此就有:
p1*m1+p2*m2=mG p1+p2=1 則類間方差表達(dá)式為:


使得上式值最大時(shí)的閾值T就是最佳的閾值。

算法實(shí)現(xiàn)如下:

import numpy as np
from PIL import Image

def otsu(img_path):
    img = Image.open(img_path).convert('L')
    a = np.array(img)
    a = a.ravel()
    L = []
    for k in range(0, 256):
        C1 = a[a >= k]
        C2 = a[a < k]
        if not(len(C1) and  len(C2)):
            L.append(0)
            continue
        m1 = np.sum(C1)/len(C1)
        m2 = np.sum(C2)/len(C2)
        p1 = len(C1)/len(a)
        p2 = len(C2)/len(a)
        x = p1 * p2 * (m1 - m2) * (m1 - m2)
        L.append(x)
    return L.index(max(L))

最后,我正在學(xué)習(xí)一些機(jī)器學(xué)習(xí)的算法,對于一些我需要記錄的內(nèi)容我都會(huì)分享到博客和微信公眾號(python成長路),歡迎關(guān)注。平時(shí)的話一般分享一些爬蟲或者Python的內(nèi)容。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8318

    瀏覽量

    132164
  • 二值化
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    4220
收藏 人收藏

    評論

    相關(guān)推薦

    條碼二維碼模組,支持次開發(fā)嵌入嗎?

    在當(dāng)今信息化時(shí)代,條碼二維碼模組作為自動(dòng)識(shí)別技術(shù)的關(guān)鍵設(shè)備,扮演著不可或缺的角色。它們不僅在工業(yè)制造、商業(yè)零售和醫(yī)療健康等領(lǐng)域大顯身手,還在物流倉儲(chǔ)和自助服務(wù)等場景中廣泛應(yīng)用。本文將深入探討條碼
    的頭像 發(fā)表于 08-14 15:44 ?184次閱讀
    條碼<b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模組,支持<b class='flag-5'>二</b>次開發(fā)嵌入嗎?

    新大陸掃器哪款能夠識(shí)別DPM?新大陸二維介紹

    隨著工業(yè)自動(dòng)的不斷發(fā)展,二維碼和數(shù)據(jù)矩陣(DPM)在生產(chǎn)、物流和倉儲(chǔ)等領(lǐng)域的應(yīng)用越來越廣泛。DPM因其高密度和小體積的特點(diǎn),常常被應(yīng)
    的頭像 發(fā)表于 07-29 14:36 ?227次閱讀
    新大陸掃<b class='flag-5'>碼</b>器哪款能夠<b class='flag-5'>識(shí)別</b>DPM<b class='flag-5'>碼</b>?新大陸二維<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b>器<b class='flag-5'>介紹</b>

    生物識(shí)別驗(yàn)證在哪里開啟

    識(shí)別驗(yàn)證的原理是利用生物特征的唯一性和穩(wěn)定性,通過采集、分析和比對生物特征數(shù)據(jù),實(shí)現(xiàn)對個(gè)體身份的識(shí)別驗(yàn)證。生物特征具有以下特點(diǎn): 唯一性:每個(gè)人的生物特征都是獨(dú)一無
    的頭像 發(fā)表于 07-08 10:26 ?595次閱讀

    二維碼模塊嵌入到電梯設(shè)備里

    二維碼模塊在電梯設(shè)備中的應(yīng)用1.二維碼模塊的基本介紹二維碼
    的頭像 發(fā)表于 05-08 10:40 ?281次閱讀
    <b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模塊嵌入到電梯設(shè)備里

    遠(yuǎn)景達(dá)QR Code掃器模塊在智能門鎖上的應(yīng)用,二維碼模塊詳解

    傳統(tǒng)門鎖主要是支持如指紋、密碼、門卡以及鑰匙開鎖這些基本的解鎖方式,其實(shí)已經(jīng)難以滿足安全性、管理性和使用體驗(yàn)等新的需求。除了高端的人臉識(shí)別功能,像更加靈活和方便的二維碼組件功能,這種最為
    的頭像 發(fā)表于 04-01 15:29 ?342次閱讀
    遠(yuǎn)景達(dá)QR Code掃<b class='flag-5'>碼</b>器模塊在智能門鎖上的應(yīng)用,<b class='flag-5'>二維碼</b>模塊詳解

    遠(yuǎn)距離二維碼掃描器如何選擇?看看以下三款遠(yuǎn)距離二維碼模塊

    隨著二維碼相關(guān)技術(shù)及硬件的普及與低成本,維條碼掃描設(shè)備的應(yīng)用被人們廣為熟知,應(yīng)用的行業(yè)也眾多。然而,在某些場景中,由于需要遠(yuǎn)距離掃描二維碼(條碼遠(yuǎn)距離
    的頭像 發(fā)表于 03-21 15:41 ?600次閱讀
    遠(yuǎn)距離<b class='flag-5'>二維碼</b>掃描器如何選擇?看看以下三款遠(yuǎn)距離<b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模塊

    閘機(jī)安裝二維碼識(shí)別器輕松解決訪客預(yù)約通行難題

    流程,讓訪客管理更加智能。閘機(jī)安裝嵌入專用的二維碼識(shí)別器后可以輕松對接各種訪客預(yù)約系統(tǒng),用戶通過掃描訪客出示的二維碼,快速讀取信息并驗(yàn)證
    的頭像 發(fā)表于 03-11 13:53 ?400次閱讀
    閘機(jī)安裝<b class='flag-5'>二維碼</b><b class='flag-5'>識(shí)別</b>器輕松解決訪客預(yù)約通行難題

    Labview調(diào)用Halcon識(shí)別二維碼

    Labview調(diào)用Halcon識(shí)別二維碼 可一次識(shí)別多個(gè)二維碼 使用Labview 2020編輯,halcon的版本是 19.11,32位
    發(fā)表于 02-21 16:31

    驗(yàn)證碼滲透最全總結(jié)

    簡單測試方法,就是看到一個(gè)登錄框,然后新建打開圖片鏈接,在圖片鏈接中就有機(jī)會(huì)看到兩個(gè)參數(shù)值,一個(gè)是 width,一個(gè)是 length。這兩個(gè)參數(shù)是計(jì)算圖片驗(yàn)證碼的長寬,如果長寬過高就會(huì)過度消耗的是服務(wù)器的 CPU 資源。
    的頭像 發(fā)表于 01-05 11:33 ?622次閱讀
    <b class='flag-5'>驗(yàn)證碼</b>滲透最全總結(jié)

    鴻蒙原生應(yīng)用/元服務(wù)開發(fā)-Serverless賬戶驗(yàn)證碼的問題

    在應(yīng)用/元服務(wù)早期使用過程中,-Serverless賬戶驗(yàn)證碼的格式是[AGC][應(yīng)用/元服務(wù)名稱],如下圖。 但是,在最近,[應(yīng)用/元服務(wù)]名稱直接變成了【default】,用戶收到這種驗(yàn)證碼后,心里存有疑慮的,這是哪里配置或者設(shè)置的問題嗎?大家有遇到同樣的問題嗎?如何
    發(fā)表于 12-27 15:55

    功率半導(dǎo)體冷知識(shí)之二:IGBT短路時(shí)的損耗

    功率半導(dǎo)體冷知識(shí)之二:IGBT短路時(shí)的損耗
    的頭像 發(fā)表于 12-05 16:31 ?552次閱讀
    功率半導(dǎo)體冷知識(shí)<b class='flag-5'>之二</b>:IGBT短路時(shí)的損耗

    使用Arduino可以連接攝像頭做二維碼識(shí)別嗎?

    使用Arduino可以連接攝像頭做二維碼識(shí)別
    發(fā)表于 11-10 07:56

    專業(yè)嵌入二維碼掃描頭LV30,兼容各類極小型的應(yīng)用設(shè)備

    在現(xiàn)代社會(huì)中,掃設(shè)備已經(jīng)滲透到各個(gè)行業(yè)和多元場景。作為一種實(shí)現(xiàn)信息數(shù)據(jù)自動(dòng)識(shí)讀與采集的重要手段,推廣應(yīng)用條碼識(shí)別技術(shù),尤其是二維碼識(shí)別技術(shù),由于所需要的成本相對較低,因此它仍是被較為
    的頭像 發(fā)表于 11-03 15:12 ?333次閱讀
    專業(yè)嵌入<b class='flag-5'>二維碼</b>掃描頭LV30,兼容各類極小型<b class='flag-5'>化</b>的應(yīng)用設(shè)備

    QR掃描模塊功能,及特點(diǎn)介紹

    掃描模塊是什么QR掃描模塊是一種能夠以非常快的速度完成對各類主流一維條碼及標(biāo)準(zhǔn)維條碼的掃描識(shí)別的嵌入式掃設(shè)備,無論是線性條碼還是二維碼
    的頭像 發(fā)表于 10-30 16:29 ?890次閱讀
    QR<b class='flag-5'>碼</b>掃描模塊功能,及特點(diǎn)<b class='flag-5'>介紹</b>

    高性能掃模塊嵌入到人臉識(shí)別設(shè)備終端,可提升用戶掃體驗(yàn)感

    器以提升用戶掃體驗(yàn)感。人臉識(shí)別行業(yè)以及刷臉掃領(lǐng)域?qū)獯a性能、掃范圍、環(huán)境光線和防護(hù)等級等技術(shù)參數(shù)提出了較高的要求,因此在各種
    的頭像 發(fā)表于 10-27 14:09 ?771次閱讀
    高性能掃<b class='flag-5'>碼</b>模塊嵌入到人臉<b class='flag-5'>識(shí)別</b>設(shè)備終端,可提升用戶掃<b class='flag-5'>碼</b>體驗(yàn)感