PHẦN I – XỬ LÝ TRÊN MIỀN KHÔNG GIAN
1. Chuyển đổi cơ bản
1.1 Sử dụng phương thức Set-GetPixel
- Thông thường ảnh được xử lý trên ảnh mức xám (1 lớp màu), ảnh trắng đen (ảnh nhị -phân)
- Vậy làm sao để chuyển 1 ảnh màu về ảnh mức xám hay ảnh nhị phân? …
- Như các bạn đã biết
+ 1 ảnh mức xám có nghĩa là: 1 điểm ảnh trong ảnh này được biểu diễn bằng 1 số 8 bit = 2^8=256 giá trị từ tối tới sáng
+ 1 ảnh nhị phân: 1 điểm ảnh được biểu diễn bằng số 1 bit = 2^1=2 giá trị tối và sáng
+ Ảnh màu đương nhiên được tổng hợp từ 3 màu R-G-B
Vd:
- Để chuyển ảnh màu về ảnh xám chúng ta có công thức sau:
a.
O(x,y)=( IR(x,y) + IG(x,y) + IB(x,y)) /3
Với:
x,y là tạo độ của điểm ảnh
IR thành phân màu đỏ tại màu I(x,y)
IG thành phân màu xanh lá tại màu I(x,y)
IB thành phân màu xanh dương tại màu I(x,y)
O(x,y): mà đầu ra, I(x,y) màu đầu vào
b.
O(x,y)= IR(x,y) * 0.287 + IG(x,y) * 0.599 + IB(x,y) * 0.114
VD1:
Sử dụng công thức b cho vd1 sau:
Code: Select all
Function ToGray(ByVal bm As Bitmap) As Bitmap Dim bitmap As New Bitmap(bm) Dim x, y As Integer Dim c As Color Dim gray As Byte For y = 0 To bm.Height - 1 For x = 0 To bm.Width - 1 c = bm.GetPixel(x, y) gray = c.R * 0.287 + c.G * 0.599 + c.B * 0.114 bitmap.SetPixel(x, y, Color.FromArgb(gray, gray, gray)) Next Next Return bitmap End Function
Vd:

- Ảnh gốc
- goc.JPG (17.94 KiB) Viewed 26205 times

- Ảnh Xám
- ketqua.png (28.86 KiB) Viewed 26204 times
- Đối với ảnh nhị phân ta kiểm tra giá trị màu nếu <128 thì set lại giá trị là 0 ngược lại set giá trị là 255.
Ta có công thức sau:
O(x,y)= 0 nếu I(x,y) < C
O(x,y)= 255 ngược lại
Với C là ngưởng (-1 < C < 256) cần phân ngưỡng
Vd2:
Code: Select all
Function ToBinary(ByVal bm As Bitmap, ByVal band As Byte) As Bitmap Dim bitmap As New Bitmap(bm) Dim x, y As Integer Dim c As Color For y = 0 To bm.Height - 1 For x = 0 To bm.Width - 1 c = bm.GetPixel(x, y) If c.R < band Then bitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)) Else bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)) End If Next Next Return bitmap End Function
- Ở hàm trên If c.R < band Then tui sử dụng là c.R vì đối với ảnh mức xám thì 3 thành phần màu bằng nhau nên không cần phân biệt c.R, c.G hay C.B.
- bạn hãy tạo 1 project rồi kiểm thử nó.