十三、gdi+例項——灰度效果
灰度化處理的方法主要有三種:
最大化法。這種方法的原理是使rgb的值等於值,即:
r=g=b
=max(r,g,b)
使用最大化法處理後的灰度影象的亮度很高。
平均值法。這種方法的原理是使rgb的恆等於三個色彩分量的平均值,即
r=g=b
= (r+g+b)/3
使用平均值法處理後的灰度影象亮度較為柔和。
加權平均值法。
「加權」是統計學中常用的名詞,這種方法是根據重要性或其他
指標給r、g、d賦於不同的權值,並位r、g、b等於它們的加權平均值。即:
r=g=b=(rr+gg+bb))/3
,r、g、b分別是r、g、b的權值*權數r、g、b取不同的值時,加權平均值法能夠形成不同灰度的灰度影象。由於人眼對綠色的敏感度最高,紅色次之,對藍色的敏感度最低,因此,當權值礦的時,所生成的灰度影象更符合人眼的視覺感受。通常,當r=30%,g=59%,b=11%時,這種影象的灰度較為合理。
private
static
bitmap bitmap;
private
int width;
private
int height;
public form1()
bitmap bmp2;
bitmap b***;
bitmap bmp4;
private
void button1_click(object sender, eventargs e)
} panel2g.drawimage(bmp2, panel2.clientrectangle);
panel2g.resettransform();
panel2g.translatetransform(width, 0);
// bmp2.dispose();
panel2g.dispose(); }
private
void panel1_paint(object sender, painteventargs e)
private
void redrawimage(bitmap bmp0)
if (g >= 192 && (!yes))
if (g <= 63 && (!yes))
if (g <= 127 && g >= 67 && (!yes))
//還原藍色分量
if (b <= 63)
b = 255;
if (b >= 128)
b = 0;
if (b >= 67 && b <= 127)
b = 510 - 4 * b;
color colorresult = color.fromargb(255, r, g, b);
bmp0.setpixel(i, j, colorresult); }
}graphics panel3g = panel3.creategraphics();
panel3g.drawimage(bmp0, panel3.clientrectangle);
bmp0.dispose();
panel3g.dispose(); }
//////最大值
///
///
///
private
void button3_click(object sender, eventargs e)
} panel2g.drawimage(b***, panel2.clientrectangle);
//b***.dispose();
panel2g.dispose(); }
//////
加權平均
///
///
///
private
void button4_click(object sender, eventargs e)
} panel2g.drawimage(bmp4, panel2.clientrectangle);
// bmp4.dispose();
panel2g.dispose(); }
private
int maxcolor(int r, int g, int b)
else }
else
else }
}private
void button2_click(object sender, eventargs e)
redrawimage(b***.clone(new
rectangle(0,0,width,height),pixelformat.dontcare)); }
private
void button2_click_1(object sender, eventargs e)
redrawimage(bmp2.clone(new
rectangle(0,0,width,height),pixelformat.dontcare)); }
private
void button6_click(object sender, eventargs e)
redrawimage(bmp4.clone(new
rectangle(0,0,width,height),pixelformat.dontcare)); }
button1_click
:平均值法
panel1_paint
:載入原圖
redrawimage
:灰色影象還原彩色影象
button3_click
:最大值法製作灰度影象
button4_click
:加權平均法製作灰度影象
maxcolor
:求顏色分量最大值
平均值方法:
最大值法:
加權平均法
本人也在學習gdi+,寫得比較簡單,讓高手見笑了。歡迎高手給我指點
:125941562
GDI 入門(十一 GDI 例項 底片效果)
十一 gdi 例項 底片效果 bool istrue false bitmap bmp private void button1 click object sender,eventargs e graphics g panel2.creategraphics g.drawimage bmp,pane...
GDI 入門(十四 GDI 例項 木刻效果)
十四 gdi 例項 木刻效果 木刻濾鏡 分析彩色中的每一點畫素值,如果該點比較亮,將之改為黑色 反之則改白色。亮與不亮的標準在於該點的r g b的平均分量值是否達到255 2。bitmap bmp new graphics g this.creategraphics g.translatetrans...
GDI 入門(十七 GDI 例項 油畫效果)
十七 gdi 例項 油畫效果 油畫濾鏡的演算法足 用當前點四周 定範圍內任一點的顏色末代替當前點的顏色。private void button1 click object sender,eventargs e g.drawimage bmp,new rectangle 205,0,200,200 g...