靜態灰階影像 |
答題得分者是:dllee
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
GeminiLin
一般會員 發表:12 回覆:24 積分:12 註冊:2002-12-26 發送簡訊給我 |
|
GeminiLin
一般會員 發表:12 回覆:24 積分:12 註冊:2002-12-26 發送簡訊給我 |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
GeminiLin
一般會員 發表:12 回覆:24 積分:12 註冊:2002-12-26 發送簡訊給我 |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
banson1716
高階會員 發表:55 回覆:182 積分:167 註冊:2002-04-14 發送簡訊給我 |
圖像灰階處理的3種方法
灰度處理的方法主要有如下3種:
1、最大值法:使R、G、B的值等於3值中最大的一個,即: R=G=B=max(R,G,B) 最大值法會使形成高亮度很高的灰度圖像 var bitmap:tbitmap; i,j:integer; a,b,c,crgb,temp:longint; res:byte; begin //最大值灰度處理方法 bitmap:=tbitmap.Create; bitmap.Width:=image1.Width 1; bitmap.Height:=image1.Height 1; for i:=0 to image1.Width 1 do begin for j:=0 to image1.Height 1 do begin crgb:=colortorgb(image1.Canvas.Pixels[i,j]); a:=crgb; b:=crgb shr 8; c:=crgb shr 8; //求出3者之間的最大值 if a>b then temp:=a else temp:=b; if c>temp then temp:=c ; res:=byte(temp); bitmap.Canvas.Pixels[i,j]:=rgb(res,res,res); end; end; image1.Canvas.Draw(0,0,bitmap); bitmap.Free; end; 2、平均值方法:使R、G、B的值求出平均值,即: R=G=B=(R G B)/3 平均值法會形成較柔和的灰度圖像。 var bitmap:tbitmap; i,j:integer; crgb:longint; rr,gg,bb:byte; res:byte; begin //圖像的平均值處理 bitmap:=tbitmap.Create; bitmap.Width:=image1.Width; bitmap.Height:=image1.Height; for i:=0 to image1.Width 1 do begin for j:=0 to image1.Height 1 do begin crgb:=colortorgb(image1.Canvas.Pixels[i,j]); rr:=byte(crgb); gg:=byte(crgb shr 8); bb:=byte(crgb shr 8); res:=(rr gg bb)div 3; bitmap.Canvas.Pixels[i,j]:=rgb(res,res,res); end; end; image1.Canvas.Draw(0,0,bitmap); bitmap.Free; end; 3、加權平均值法:根據重要性或其他指標給R、G、B賦予不同的權值,並使R、G、B它們的值加權平均,即: R=G=B=(WrR WrG WbB)/3,經實際經驗和理論推導證明,采用R=G=B=0.30*R 0.59*G 0.11*B,可以得到最合理的灰度圖像 var bitmap:tbitmap; i,j:integer; rr,gg,bb,res:byte; crgb:longint; begin //加權平均處理方法 bitmap:=tbitmap.Create; bitmap.Width:=image1.Width 1; bitmap.Height:=image1.Height 1; for i:=0 to image1.Width 1 do begin for j:=0 to image1.Height 1 do begin crgb:=colortorgb(image1.Canvas.Pixels[i,j]); rr:=byte(crgb); gg:=byte(crgb shr 8); bb:=byte(crgb shr 8); res:=(30*rr 59*gg 11*bb)div 100; bitmap.Canvas.Pixels[i,j]:=rgb(res,res,res); end; end; image1.Canvas.Draw(0,0,bitmap); bitmap.Free; end;
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |