大津法---OTSU算法--- THRESH_OTSU

opencv二值化函數(shù) threshold(src_gray,dst,threshold_value,max_BINARY_value,threshold_type),threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);這里二值化,即圖像像素值變成0或255好乐,THRESH_OTSU是確定閾值分割點,這個是庫函數(shù)確定的砌烁,下面介紹原理

對于圖像I(x,y),將要確定的分割閾值計做T催式,所以灰度點分成倆個區(qū)域函喉,ω0(所有低于T的)和ω1(高于T的),其對應(yīng)區(qū)域的平均灰度μ0和μ1荣月,圖像的總平均灰度記為μ管呵,類間方差記為g。圖像的大小為M×N喉童,圖像中像素的灰度值小于閾值T的像素個數(shù)記作N0撇寞,像素灰度大于閾值T的像素個數(shù)記作N1顿天,則有:


      ω1=N1/ M×N       (2)

      N0+N1=M×N        (3)

      ω0+ω1=1      (4)

      μ=ω0*μ0+ω1*μ1   (5)

      g=ω0(μ0-μ)^2+ω1(μ1-μ)^2   (6) 將式(5)代入式(6),得到等價公式:                  

      g=ω0ω1(μ0-μ1)^2           (7) 這就是類間方差

采用遍歷的方法得到使類間方差g最大的閾值T,即為所求堂氯。


int MyAutoFocusDll::otsuThreshold(IplImage *frame)

{

    const int GrayScale = 256;

    int width = frame->width;

    int height = frame->height;

    int pixelCount[GrayScale];

    float pixelPro[GrayScale];

    int i, j, pixelSum = width * height, threshold = 0;

    uchar* data = (uchar*)frame->imageData;  //指向像素數(shù)據(jù)的指針

    for (i = 0; i < GrayScale; i++)

    {

        pixelCount[i] = 0;

        pixelPro[i] = 0;

    }

    //統(tǒng)計灰度級中每個像素在整幅圖像中的個數(shù) 

    for (i = 0; i < height; i++)

    {

        for (j = 0; j < width; j++)

        {

            pixelCount[(int)data[i * width + j]]++;  //將像素值作為計數(shù)數(shù)組的下標

        }

    }

    //計算每個像素在整幅圖像中的比例 

    float maxPro = 0.0;

    int kk = 0;

    for (i = 0; i < GrayScale; i++)

    {

        pixelPro[i] = (float)pixelCount[i] / pixelSum;

        if (pixelPro[i] > maxPro)

        {

            maxPro = pixelPro[i];

            kk = i;

        }

    }

    //遍歷灰度級[0,255] 

    float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;

    for (i = 0; i < GrayScale; i++)    // i作為閾值

    {

        w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;

        for (j = 0; j < GrayScale; j++)

        {

            if (j <= i)  //背景部分 

            {

                w0 += pixelPro[j];

                u0tmp += j * pixelPro[j];

            }

            else  //前景部分 

            {

                w1 += pixelPro[j];

                u1tmp += j * pixelPro[j];

            }

        }

        u0 = u0tmp / w0;

        u1 = u1tmp / w1;

        u = u0tmp + u1tmp;

        deltaTmp = w0 * pow((u0 - u), 2) + w1 * pow((u1 - u), 2);

        if (deltaTmp > deltaMax)

        {

            deltaMax = deltaTmp;

            threshold = i;

        }

    }

    return threshold;

}

本文參考了:https://www.cnblogs.com/ranjiewen/p/6385564.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牌废,隨后出現(xiàn)的幾起案子咽白,更是在濱河造成了極大的恐慌,老刑警劉巖鸟缕,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晶框,死亡現(xiàn)場離奇詭異排抬,居然都是意外死亡,警方通過查閱死者的電腦和手機授段,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門蹲蒲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侵贵,你說我怎么就攤上這事届搁。” “怎么了窍育?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵卡睦,是天一觀的道長。 經(jīng)常有香客問我漱抓,道長表锻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任乞娄,我火速辦了婚禮瞬逊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仪或。我一直安慰自己码耐,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布溶其。 她就那樣靜靜地躺著骚腥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓶逃。 梳的紋絲不亂的頭發(fā)上束铭,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音厢绝,去河邊找鬼契沫。 笑死,一個胖子當著我的面吹牛昔汉,可吹牛的內(nèi)容都是我干的懈万。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼靶病,長吁一口氣:“原來是場噩夢啊……” “哼会通!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娄周,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤涕侈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后煤辨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裳涛,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡木张,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了端三。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舷礼。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖郊闯,靈堂內(nèi)的尸體忽然破棺而出且轨,到底是詐尸還是另有隱情,我是刑警寧澤虚婿,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布旋奢,位于F島的核電站,受9級特大地震影響然痊,放射性物質(zhì)發(fā)生泄漏至朗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一剧浸、第九天 我趴在偏房一處隱蔽的房頂上張望锹引。 院中可真熱鬧,春花似錦唆香、人聲如沸嫌变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腾啥。三九已至,卻和暖如春冯吓,著一層夾襖步出監(jiān)牢的瞬間倘待,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工组贺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凸舵,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓失尖,卻偏偏與公主長得像啊奄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掀潮,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 定義:圖像的二值化菇夸,就是將圖像上的像素點的灰度值設(shè)置為0或255,也就是將整個圖像呈現(xiàn)出明顯的只有黑和白的視覺效果...
    朝畫夕拾閱讀 13,595評論 0 0
  • 一個簡單的閾值例子就是選擇一個像素值p胧辽,然后將小于p的所有像素強度設(shè)置為零峻仇,并且將所有像素值大于p設(shè)置為255.以...
    HaveyYeung閱讀 5,288評論 1 5
  • 1.簡單閥值cv2.threshold() 當像素值高于閥值時公黑,我們給這個像素賦予一個新值(可能是白色)邑商,否則我們...
    Zoe_C閱讀 911評論 0 0
  • 簡單閾值 這里摄咆,問題很簡單,如果像素值超過閾值人断,就給分配一個值(可能是白色)吭从,否則給分配另一個值(可能是黑色)。用...
    xxxss閱讀 4,595評論 1 52
  • 闕值處理是指剔除圖像內(nèi)像素值高于一定值或低于一定值的像素點恶迈,例如涩金,設(shè)定闕值為127,然后 1.將圖像內(nèi)所有像素值大...
    dinel閱讀 3,088評論 0 0