日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】...

發布時間:2023/12/10 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:安利Python來開發OpenCV的原因其實細心的小伙伴早在?【視覺與圖像】Python+OpenCV教程入門篇就找到了想要的答案。(點藍字即可打開)

今天周五了!

今天還不下雨!!

今天又可以更新了!!!

先前小天邀請老王和大家聊到Python+OpenCV的第5波:顏色空間轉換(點藍字即可打開),那么接下來老王給同學們帶來的是Python+OpenCV第6篇章:閾值分割,還不快收藏?住!

文章交代:

  • 學習使用不同的閾值方法”二值化”圖像

推薦人群:

  • 初級入門、機器學習小白、技術愛好者

【圖片可到文末?本節源碼下載。】

閾值分割

01目標
  • 使用固定閾值、自適應閾值和Otsu閾值法”二值化”圖像

  • OpenCV函數:cv2.threshold(),?cv2.adaptiveThreshold()

02固定閾值分割

固定閾值分割很直接,一句話說就是像素點值大于閾值變成一類值,小于閾值變成另一類值。

cv2.threshold()用來實現閾值分割,ret是return value縮寫,代表當前的閾值,暫時不用理會。函數有4個參數:

  • 參數1:要處理的原圖,*一般是灰度圖

  • 參數2:設定的閾值

  • 參數3:最大閾值,一般為255

  • 參數4:閾值的方式,主要有5種,詳情:http://t.cn/EfZhnbq

下面結合代碼理解下這5種閾值方式:

Tips:很多人誤以為閾值分割就是二值化。從上圖中可以發現,兩者并不等同,閾值分割結果是兩類值,而不是兩個值,所以教程開頭我把二值化加了引號。

03自適應閾值

看得出來固定閾值是在整幅圖片上應用一個閾值進行分割,它并不適用于明暗分布不均的圖片。?cv2.adaptiveThreshold()自適應閾值會每次取圖片的一小部分計算閾值,這樣圖片不同區域的閾值就不盡相同。它有5個參數,其實很好理解,先看下效果:

  • 參數1:要處理的原圖

  • 參數2:最大閾值,一般為255

  • 參數3:小區域閾值的計算方式

  • ADAPTIVE_THRESH_MEAN_C:小區域內取均值

  • ADAPTIVE_THRESH_GAUSSIAN_C:小區域內加權求和,權重是個高斯核

    • 參數4:閾值方式(跟前面講的那5種相同)

    • 參數5:小區域的面積,如11就是11*11的小塊

    • 參數6:最終閾值等于小區域計算出的閾值再減去此值

    如果你沒看懂上面的參數也不要緊,暫時會用就行,當然我建議你調整下參數看看不同的結果。

    04Otsu閾值

    在前面固定閾值中,我們是隨便選了一個閾值如127,那如何知道我們選的這個閾值效果好不好呢?答案是:不斷嘗試,所以這種方法在很多文獻中都被稱為經驗閾值。Otsu閾值法就提供了一種自動高效的二值化方法,不過我們直方圖還沒學,這里暫時略過。

    好吧,我知道激起了你的興趣~ o( ̄▽ ̄)o,有能力的童鞋可以看下繼續往下看番外篇~

    05小結

    cv2.threshold()用來進行固定閾值分割。固定閾值不適用于光線不均勻的圖片,所以用 cv2.adaptiveThreshold()進行自適應閾值分割。 二值化跟閾值分割并不等同。針對不同的圖片,可以采用不同的閾值方法。

    06練習

    Otsu閾值是一種高效的二值化算法,請閱讀(番外篇)?

    引用

    • 本節源碼?http://t.cn/EfZcSIJ

    • Image Thresholding?http://t.cn/EfZcHyc

    大部分圖像處理任務都需要先進行二值化操作,閾值的選取很關鍵,Otsu閾值法會自動計算閾值。

    Otsu閾值法(日本人大津展之提出的,也可稱大津算法)非常適用于雙峰圖片,啥意思呢?

    Otsu N. A threshold selection method from gray-level histograms[J]. IEEE transactions on systems, man, and cybernetics, 1979, 9(1): 62-66. (http://t.cn/EfZx2dl)

    1.什么是雙峰圖片

    雙峰圖片就是指圖片的灰度直方圖上有兩個峰值,直方圖就是每個值(0~255)的像素點個數統計,后面會詳細介紹。

    Otsu算法假設這副圖片由前景色和背景色組成,通過統計學方法(最大類間方差)選取一個閾值,將前景和背景盡可能分開,我們先來看下代碼,然后詳細說明下算法原理。

    2.代碼示例

    下面這段代碼對比了使用固定閾值和Otsu閾值后的不同結果:

    另外,對含噪點的圖像,先進行濾波操作效果會更好。

    下面我們用Matplotlib把原圖、直方圖和閾值圖都顯示出來:

    可以看到,Otsu閾值明顯優于固定閾值,省去了不斷嘗試閾值判斷效果好壞的過程。其中,繪制直方圖時,使用了numpy中的ravel()函數,它會將原矩陣壓縮成一維數組,便于畫直方圖。

    Otsu算法詳解

    Otsu閾值法將整幅圖分為前景(目標)和背景,以下是一些符號規定:

    • T:分割閾值

    • N0:前景像素點數

    • N1:背景像素點數

    • ω0:前景的像素點數占整幅圖像的比例

    • ω1:背景的像素點數占整幅圖像的比例

    • μ0:前景的平均像素值

    • μ1:背景的平均像素值

    • μ:整幅圖的平均像素值

    • rows×cols:圖像的行數和列數

    結合下圖會更容易理解一些,有一副大小為4×4的圖片,假設閾值T為1,那么:

    其實很好理解,N0+N1就是總的像素點個數,也就是行數乘列數:

    ω0和ω1是前/背景所占的比例,也就是:

    整幅圖的平均像素值就是:

    ??此時,我們定義一個前景μ0與背景μ1" role="presentation" style="font-size: 15px; box-sizing: border-box; display: inline-table; line-height: 0; text-align: left; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; background-color: rgb(255, 255, 255);">μ1μ1的方差g" role="presentation" style="font-size: 15px; box-sizing: border-box; display: inline-table; line-height: 0; text-align: left; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; background-color: rgb(255, 255, 255);">gg:??

    將前述的1/2/3公式整合在一起,便是:

    g" role="presentation" style="box-sizing: border-box; display: inline-table; line-height: 0; text-align: left; font-size: 18.08px; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; background-color: rgb(255, 255, 255);">??g就是前景與背景兩類之間的方差,這個值越大,說明前景和背景的差別也就越大,效果越好。Otsu算法便是遍歷閾值T,使得g最大,所以又稱為最大類間方差法?;旧想p峰圖片的閾值T在兩峰之間的谷底。??

    引用

    • 本節源碼?http://t.cn/EfZcSIJ?http://t.cn/EfZp5Vg

    • numpy.ravel?http://t.cn/EfZpQL9

    • Otsu’s Method(wikipedia)?http://t.cn/EfZpFlb

    • Image Thresholding?http://t.cn/EfZcHyc

    • 一維OTSU法、最小交叉熵法、二維OTSU法及C++源碼?http://t.cn/EfZ0gBq

    • Otsu N. A threshold selection method from gray-level histograms[J]. IEEE transactions on systems, man, and cybernetics, 1979, 9(1): 62-66.?http://t.cn/EfZOfK3

    如果你也有想分享的干貨,可以登錄天池實驗室(notebook),包括賽題的理解、數據分析及可視化、算法模型的分析以及一些核心的思路等內容。

    小天會根據你分享內容的數量以及程度,給予豐富的神秘天池大禮以及糧票獎勵。分享成功后你也可以通過下方釘釘群?主動聯系我們的社區運營同學(釘釘號:doqclsn 或 yiwen1991)

    天池寶貝們有任何問題,可在戳“留言”評論或加入釘釘群留言,小天會認真傾聽每一個你的建議!

    點擊下方圖片即可閱讀

    如何使用PAI深度學習TensorFlow讀寫OSS教程?

    如果你會模型融合!那么,我要和你做朋友

    《流浪地球》為何從不被看好到票房榜首,數據分析給你答案!

    除了獎金還送800萬入駐權益,未來科技城——智能城市建設合伙人大賽正式啟動啦!

    ?????AI安全新探索,IJCAI-19阿里巴巴人工智能對抗算賽,約一波?

    聽說戳了的人都?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。