Chuyển đổi ảnh màu sang ảnh xám
Lý thuyết: Ta chỉ cần nhân các giá trị màu của mỗi điểm ảnh với một hệ số cho trước
Y = 0.3*Red + 0.59*Green + 0.11*Blue
Xây dựng chương trình:
+ Kích thước của bức ảnh là X*Y
+ uchar c[3*X][Y] là ma trận 2 chiều chứa dữ liệu của bức ảnh màu, 3 màu xếp theo thứ tự Red, Green, Blue.
+ uchar g[X][Y] là ma trận 2 chiều chứa dữ liệu của bức ảnh xám
+ Duyệt từng điểm ảnh của cả bức ảnh (raster scan) bằng 2 vòng lặp và gán giá trị ảnh màu nhân với hệ số vào ảnh xám
for (i = 0; i <= X; i++) {
for (j = 0; j <= Y; j++) {
g[i][j] = 0.3*c[3*i][j] + 0.59*c[3*i+1][j] + 0.11*c[3*i+2][j];
}
}
Chuyển đổi ảnh xám sang ảnh nhị phân
Lý thuyết: Thao tác này được gọi là thresholding, ta chỉ cần đặt một ngưỡng (threshold)thích hợp, điểm ảnh xám nào có giá trị bằng hoặc dưới ngưỡng đó ta cho bằng 0, trên ngưỡng đó ta cho bằng 255.
if g[i][j] <= threshold
b[i][j] = 0;
else
b[i][j] = 255;
Xây dựng chương trình:
+ Quá dễ
Nâng cao: Mỗi bức ảnh lại có điều kiện chiếu sáng khác nhau nên việc đặt ngưỡng phù hợp cho mỗi bức ảnh là cần thiết. Ví dụ người ta có thể thay đổi ngưỡng sao cho số lượng điểm ảnh trên ngưỡng luôn đạt 1 số phần trăm nhất định, ví dụ 25% => Percentile Method.