灰度化與二值化


老實了解了灰度化的原理:

灰度數字圖像是每個像素只有一個采樣顏色的圖像。這類圖像通常顯示為從最暗黑色到最亮的白色的灰度。

可以通過下面幾種方法,將圖像轉換為灰度:

  • 1.浮點算法:Gray=R*0.3+G*0.59+B*0.11
  • 2.整數方法:Gray=(R*30+G*59+B*11)/100
  • 3.移位方法:Gray =(R*76+G*151+B*28)>>8;
  • 4.平均值法:Gray=(R+G+B)/3;
  • 5.僅取綠色:Gray=G;

通過上述任一種方法求得Gray后,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。即是,R,G,B三色值相等成為灰度圖。

圖像的二值化處理就是將圖像上的點的灰度值置為0或255,也就是將整個圖像呈現出明顯的黑白效果。即將256個亮度等級的灰度圖像通過適當的 閾值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。在數字圖像處理中,二值圖像占有非常重要的地位,特別是在實用的圖像處理中,以二值圖像處理實現而構成的系統是很多的,要進行二值圖像的處理與分析,首先要把灰度圖像二值化,得到二值化圖像,這樣子有利於在對圖像做進一步處理時,圖像的集合性質只與 像素值為0或255的點的位置有關,不再涉及像素的多級值,使處理變得簡單,而且數據的處理和壓縮量小。為了得到理想的二值圖像,一般采用封閉、連通的邊界定義不交疊的區域。所有灰度大於或等於閾值的像素被判定為屬於特定物體,其灰度值為255表示,否則這些像素點被排除在物體區域以外,灰度值為0,表示背景或者例外的物體區域。
如果某特定物體在內部有均勻一致的灰度值,並且其處在一個具有其他等級 灰度值的均勻背景下,使用閾值法就可以得到比較的分割效果。如果物體同背景的差別表現不在灰度值上(比如 紋理不同),可以將這個差別特征轉換為灰度的差別,然后利用閾值選取技術來分割該圖像。動態調節閾值實現圖像的二值化可動態觀察其分割圖像的具體結果。
說白了就是將灰度圖像,根據閾值划分為黑和白。大於閾值為黑色,小於閾值為白色。
import tesserocr
from PIL import Image
from numpy import array

image = Image.open("check.png")
result = tesserocr.image_to_text(image)
print('之前:' + result)
threshold = 40


def book_clear(image, threshold):
    image = image.convert("L")#灰度化,采用(R+G+B)/3的到R,G,B三色。
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    img = image.point(table, "1")#二值化
    img.save("img1.jpg")
    img.show()
    result = tesserocr.image_to_text(img)
    print('之后:' + result)

book_clear(image, threshold)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM