
Bao Cao Bai Tâp L n ơ
X Ly Anhư
Đê Tai :Tim hiêu cac phep biên đôi trên biêu đô phân bô va
th nghiêm ng dung cac phep x ly histogram trên anh đaư ư ư
m c xam va anh mau 24 bit.ư

1.Histogram là gì?
1.1.Đ nh nghĩa :ị
Histogram là bi u đ phân b giá tr m c xám c a m t nh ho c m t vùng nhể ồ ố ị ứ ủ ộ ả ặ ộ ả
s (m t s công c cho phép xem histogram c a m t vùng nh đã ch n)ố ộ ố ụ ủ ộ ả ọ
V i nh đa m c xám,histogram là m t bi u đ c t duy nh t.V i tr c hoànhớ ả ứ ộ ể ồ ộ ấ ớ ụ
đ c chia thành 256 giá tr đô chói (i) và tr c tung là t n xu t xu t hi n giá trượ ị ụ ầ ấ ấ ệ ị
(i) trong nh t ng ng v i 1 ma tr n d li u nh :ả ươ ứ ớ ậ ữ ệ ả
T ng t , nh màu có histogram là 3 bi u đ c t th hiên đ chói c a ba màuươ ự ả ể ồ ộ ế ộ ủ
c b n trên nh t ng ng v i 3 ma tr n d li u nh .(Trong photo shop thìơ ả ả ươ ứ ớ ậ ữ ệ ả
Histogram nh màu đ c k t h p thành m t bi u đ duy nh t.)ả ượ ế ợ ộ ể ồ ấ
2

–
Histogram máy Nikon
1.2 Cach tinh:
•Xet ma trân d liêu anh H(m,n) ư
•Chay I t 0->255 va đêm sô điêm anh co cung m c xam i. ư ư
•Code :tinh H(x) cho anh xam
int H[]=new int[255];```````
for(y = 0;y<bm.Height - 1;y++)
{
for( x = 0;x<bm.Width - 1;x++)
{
H[bm.GetPixel(x, y).R] += 1;
}
}
Sau khi thoát kh i vòng l p, m i ph n t trong m ng H là giá tr s l ngỏ ặ ỗ ầ ử ả ị ố ượ
đi m nh t i m c xám c a v trí ph n t đóể ả ạ ứ ủ ị ầ ử
3

2.Các phép bi n đ i trên histogram và ng d ng:ế ổ ứ ụ
2.1 Tr t Histogram:ượ
a.Ly thuyêt :
M c đích: làm tăng ho c gi m c ng đ xám c a nhụ ặ ả ườ ộ ủ ả
Ý t ng :ưở
O(x,y) = I(x,y) + n
n < 0 : tr t nh v bên trái => nh t i h nượ ả ề ả ố ơ
n > 0 : tr t nh v bên ph i => nh sáng h nượ ả ề ả ả ơ
Chú ý: K t qu c a O(x,y) có th > 255 ho c < 0 vì v y b n c n chú ý đế ả ủ ể ặ ậ ạ ầ ể
set l i 2 giá tr này.ạ ị
Code :
private Bitmap HisToGramStep(Bitmap bm, int n)
{
Bitmap bitmap=new Bitmap(bm);
int x, y;
Color c;
for( y = 0;y<bitmap.Height - 1;y++)
{
for( x = 0;x<bitmap.Width - 1;x++)
{
c = bitmap.GetPixel(x, y);
if ((c.R + n) <= 255 && (c.R + n) >= 0 )
bitmap.SetPixel(x, y, Color.FromArgb(c.R + n, c.R + n, c.R + n));
else if ((c.R + n) > 255)
bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
else if ((c.R + n) < 0)
bitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
}
}
return bitmap;
}
b.Kich ban :
•Công cu :PS Brightness(Photoshop->Image->Adjustments
4

->Brightness/contrast):
•Anh đâu vao :
•Nhâp m c xam muôn tăng va co kêt qua tr c tiêp trên man hinh : ư ư
5

