GDI+ 在Delphi程式的應用 — 映像二值化

來源:互聯網
上載者:User

    映像的二值化,無論是理論,還是方法都很多,網上搜尋一大堆,本人水平有限,沒法完全搞清楚,只在這裡針對GDI+在Delphi中如何做一般二值化處理,寫一個簡單例子。

    其實,這個例子在昨天本人發表的《GDI+ 在Delphi程式的應用 -- ColorMatrix與映像灰階化 》中已經給出了基本的代碼,只要在其上加一個參數和一句代碼就行了:

 

// 灰階或者二值化彩色映像procedure GrayImage(Image: TGpImage; Threshold: Single = 0.0);
const
  ColorMatrix: TColorMatrix =
   ((0.3, 0.3, 0.3, 0.0, 0.0),
    (0.59, 0.59, 0.59, 0.0, 0.0),
    (0.11, 0.11, 0.11, 0.0, 0.0),
    (0.0, 0.0, 0.0, 1.0, 0.0),
    (0.0, 0.0, 0.0, 0.0, 1.0));
var
  Tmp: TGpImage;
  attr: TGpImageAttributes;
  g: TGpGraphics;
begin
  Tmp := Image.Clone;
  g := TGpGraphics.Create(Image);
  attr := TGpImageAttributes.Create;
  try
    attr.SetColorMatrix(ColorMatrix);        // 灰階化
    if Threshold > 0.0 then                        // 如果給出了閥值,在灰階圖基礎上二值化
      attr.SetThreshold(Threshold);
    g.DrawImage(Tmp, GpRect(0, 0, Image.Width, Image.Height),
                0, 0, Tmp.Width, Tmp.Height, utPixel, attr);
  finally
    g.Free;
    attr.Free;
    Tmp.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Image: TGpImage;
  g: TGpGraphics;
begin
  Image := TGpImage.Create('..mediaFRUIT.jpg');
  g := TGpGraphics.Create(Handle, False);
  g.DrawImage(Image, 10, 10, Image.Width, Image.Height);
  GrayImage(Image, 0.5);
  g.DrawImage(Image, 220, 10, Image.Width, Image.Height);
  g.Free;
  image.Free;
end;

    從例子可以看出,彩色映像二值化,就是在其灰階化基礎上給定一個0 - 1之間的閥值,所謂閥值就是每種顏色成分的分界點。假定閾值設定為 0.7,並且假定當前所呈現的顏色中的紅色、綠色和藍色成分分別為 230、50 和 220,那麼紅色成分 230 大於 0.7x255,因此,紅色成分將更改為 255(全亮度);綠色成分 50 小於0.7x255,因此,綠色成分將更改為 0; 藍色成分 220 大於 0.7x255,因此,藍色成分將更改為 255。

    由此可以看出,在正確得到灰階圖圖後,二值化程度的關鍵就在這個閥值。所以關於如何確定閥值的理論也就成立映像二值化最主要的理論。

    本例子的閥值為0.5。,運行效果如:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.