映像的灰階化原理和實現

來源:互聯網
上載者:User
 

一、映像的灰階化處理的基本原理

將彩色映像轉化成為灰階映像的過程成為映像的灰階化處理。彩色映像中的每個像素的顏色有R、G、B三個分量決定,而每個分量有255中值可取,這樣一個像素點可以有1600多萬(255*255*255)的顏色的變化範圍。而灰階映像是R、G、B三個分量相同的一種特殊的彩色映像,其一個像素點的變化範圍為255種,所以在數位影像處理種一般先將各種格式的映像轉變成灰階映像以使後續的映像的計算量變得少一些。灰階映像的描述與彩色映像一樣仍然反映了整幅映像的整體和局部的色度和亮度等級的分布和特徵。映像的灰階化處理可用兩種方法來實現。

第一種方法使求出每個像素點的R、G、B三個分量的平均值,然後將這個平均值賦予給這個像素的三個分量。

第二種方法是根據YUV的色彩空間中,Y的分量的物理意義是點的亮度,由該值反映亮度等級,根據RGB和YUV色彩空間的變化關係可建立亮度Y與R、G、B三個顏色分量的對應:Y=0.3R+0.59G+0.11B,以這個亮度值表達映像的灰階值。

二、用Delphi進行映像灰階化的實現:

procedure TForm1.BitBtn1Click(Sender: TObject);

var

  p:PByteArray;

  //PByteArray的定義格式

  //PByteArray = ^TByteArray;

  //TByteArray = array[0..32767] of Byte;

  ChangedBmp : Tbitmap;

  gray,x,y:integer;

  TestBMP : Tbitmap;   // 處理過程中位元影像

begin

  TestBMP:=Tbitmap.Create;

  ChangedBmp:=Tbitmap.Create;

  TestBMP.Assign(image1.Picture);

  for y := 0 to TestBMP.Height - 1 do

  begin

        //擷取每一行象素資訊

    p := TestBMP.scanline[y];

    for x := 0 to TestBMP.Width - 1 do

    begin

    //這裡採用YUV與RGB色彩空間變換的方法,即 Y=0.3R+0.59G+0.11B

      Gray := Round(p[3 * x + 2] * 0.3 + p[3 * x + 1] * 0.59

            + p[3 * x] * 0.11);

    //由於是24位真彩色,故一個像素點為三個位元組

      p[3 * x + 2] := byte(Gray);

      p[3 * x + 1] := byte(Gray);

      p[3 * x] := byte(Gray);

    //Gray的值必須在0~255之間

    end;

      ChangedBmp.Assign(TestBMP);

      PaintBox1.Canvas.CopyMode:=srccopy;

      PaintBox1.Canvas.Draw(0,0,ChangedBmp);//用PaintBox控制項重新繪製映像;

  end;

三、注意事項:

 程式申請了TestBMP、WillbeChangedBmp,所以在程式初始化的時候,要注意建立:

       TestBMP:=Tbitmap.Create;

ChangedBmp:=Tbitmap.Create;

     程式結束後注意要把TestBMP.Destory和ChangedBmp.Destory;

四、效果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.