圖像的二值化原理和實現


1、  圖像的二值化的基本原理

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

2、  圖像的二值化的程序實現

以下程序是用QT實現的

 

bool convertGray::convertToBinary(int threshold)
{
  QImage rgbImage(rgbFile);
  QSize size = rgbImage.size();
  QImage binaryImage(size, QImage::Format_RGB32);
  int width = size.width();
  int height = size.width();
  for(int i = 0; i < size.width(); i++)
    for(int j = 0; j < size.height(); j++)
    {
      QRgb pixel = rgbImage.pixel(i, j);
      int r = qRed(pixel) * 0.3;
      int g = qGreen(pixel) * 0.59;
      int b = qBlue(pixel) * 0.11;
      int rgb = r + g + b;//先把圖像灰度化,轉化為灰度圖像
      if (rgb > threshold)//然后按某一閥值進行二值化
      {
        rgb = 255;
      }else
      {
        rgb = 0;
      }
      QRgb newPixel = qRgb(rgb, rgb, rgb);
      binaryImage.setPixel(i, j, newPixel);
    }
  binaryImage.save(binaryFile);
  ui.grayLabel->setPixmap(QPixmap(binaryFile));
  return true;
}


3、  處理的效果

 


免責聲明!

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



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