全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1556
推到 Plurk!
推到 Facebook!

圖象二值化

答題得分者是:japhenchen
tidal
初階會員


發表:93
回覆:32
積分:25
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-26 15:01:29 IP:202.82.xxx.xxx 未訂閱
bmp:=TBitMap.Create; bmp.LoadFromFile('E:\testimage.bmp'); image1.Picture.Bitmap:=bmp; memstream:=TMemoryStream.Create; bmp.SaveToStream(memstream); memstream.Position:=62; setLength(s,memstream.Size-62); memstream.Read(s[1],memstream.Size); 之後要如何做才可以把testimage.bmp 變做二值化?
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-26 17:11:09 IP:219.134.xxx.xxx 未訂閱
你可以直接對tbitmap做scanline操作,不用那麼麻煩還要用tmemorystream來去掉檔頭做圖像處理啦
type
  PArr = ^TRGBTripleArray;
  TRGBTripleArray = array [Byte] of TRGBTriple;
var bmp : TBitmap;
    xp: Parr ;
    Gray , x , y: integer;    
begin
   bmp:=TBitmap.create;
   bmp.loadfromfile('a.bmp');  // 最好圖片都是24bits的圖檔,不然還要做一次轉成24bits的動作
                               // 一個點佔三個bytes,分別為RGB
   for y:=0 to bmp.height-1 do begin
     xp:=scanline[y];
     for x:=0 to bmp.width-1 do begin
         //  開始進行二值化
        Gray:=round(xp[x].rgbtRed*0.3)   
              round(xp[x].rgbtGreen*0.59) 
              round(xp[x].rgbtBlue*0.11);  // RGB轉成YUV模型取Y分量做灰階值
        if Gray>128 then begin
          xp[x].rgbtRED:=$FF;  
          xp[x].rgbtGreen:=$FF;  
          xp[x].rgbtBlue:=$FF;  // 黑色
        end
        else begin
          xp[x].rgbtRED:=$00;  
          xp[x].rgbtGreen:=$00;  
          xp[x].rgbtBlue:=$00;   // 白色
        end; 
     end;    
   end;
   bmp.savetofile('b.bmp');  //存成另外一個檔案囉
   bmp.free;
end;
發表人 - japhenchen 於 2004/10/26 17:14:48
tidal
初階會員


發表:93
回覆:32
積分:25
註冊:2003-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-26 17:51:27 IP:202.82.xxx.xxx 未訂閱
如果圖片不是24bits的圖檔,要如何轉成24bits的?
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-26 22:48:36 IP:219.133.xxx.xxx 未訂閱
在bmp.loadfromfile之後加上一行 bmp.pixelformat:=pf24bit; 就好啦 (不過似乎16bits的圖檔有555跟565二種,轉過來會有一些些的小差異,聽說的,沒試過是不是) jpg二值化的方法同上,只是多加一個tjpeg的元件上來,先把jpeg檔讀進來,再bmp.assign(jpg)即可 藏私の禁止
系統時間:2024-03-29 14:17:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!