Giới thiệu chung 6
Xử lý ảnh số là một lĩnh vực khoa học mới mẻ, đặc biệt trong quy mô công nghiệp, với sự xuất hiện của các máy tính chuyên dụng Để hiểu rõ cấu hình của một hệ thống xử lý ảnh chuyên dụng hoặc hệ thống phục vụ nghiên cứu và đào tạo, chúng ta cần xem xét mô hình của hệ thống xử lý ảnh.
Thu nhận ảnh là quá trình chuyển đổi tín hiệu ảnh quang thành tín hiệu số, được thực hiện bởi các thiết bị như camera, sensor và scanner.
- Xử lý ảnh: Bao gồm một số công đoạn sau:
Xử lý cải thiện chất l-ợng ảnh (Còn gọi là Tiền xử lý )
Phát hiện và tách biên
- L-u trữ ảnh: Là quá trình l-u dữ liệu của ảnh (đã đ-ợc xử lý) ra bộ nhớ ngoài
Nh- vậy, chúng ta cần phân biệt Xử lý ảnh với Kỹ thuật đồ hoạ , đó là:
- Xử lý ảnh: Là hệ thống tiếp nhận ảnh thực để phân tích và hiểu đ-ợc bản chất kết cấu ảnh
Thu nhËn ảnh Số hoá Xử lý ảnh Nhận dạng
Xử lý: Các thuật toán xử lý
Đầu ra: ảnh đ-ợc l-u trữ
- Kỹ thuật đồ hoạ: Dùng các kỹ thuật và ph-ơng pháp để vẽ hình trên máy tÝnh
Xử lý: Các thuật toán tạo hình trên máy tính
Đầu ra: ảnh hiển thị
Hệ thống xử lý ảnh mà tôi nghiên cứu chỉ áp dụng cho máy tính cá nhân, với đầu vào là tệp ảnh số và đầu ra là ảnh số đã qua xử lý.
Đọc dữ liệu và hiển thị ảnh 7
Cấu trúc tệp BMP 7
Cấu trúc của tệp BMP có thể gồm 4 phần, đó là:
BITMAPFILEHEADER Thông tin về tệp BITMAPINFOHEADER Thông tin về ảnh
RGBQUAD[i] Bảng màu (nếu có)
DATA Dữ liệu của ảnh
Trong đó chi tiết đ-ợc mô tả nh- sau: typedef struct _BITMAPFILEHEADER // Vị trí Độ lớn
{ short bfType; // 0 2 BYTE long bfSize; // 2 4 BYTE short bfReserved1; // 6 2 BYTE short bfReserved2; // 8 2 BYTE long bfOffBits; // 10 4 BYTE
The Bitmap file header (bfType) begins with the signature 'MB' (4D42h), indicating the file type The bfSize represents the file size in bytes Both bfReserved1 and bfReserved2 are reserved values set to zero The bfOffBits specifies the offset where the pixel data starts, measured from the beginning of the file This information is encapsulated in the _BITMAPINFOHEADER structure, which defines the size and layout of the bitmap.
The bitmap header contains essential information for image processing, including the size of the header (biSize), dimensions such as width (biWidth) and height (biHeight), and color specifications like the number of color planes (biPlanes) and bits per pixel (biBitCount) Additionally, it specifies the compression method used (biCompression), the size of the image data (biSizeImage), and pixel density in pixels per meter for both the X (biXPelsPerMeter) and Y (biYPelsPerMeter) axes Finally, it includes information on the number of colors used (biClrUsed) and the number of important colors (biClrImportant).
Cấu trúc BITMAP bao gồm các thành phần quan trọng như biSize (kích thước cấu trúc tính theo byte, giá trị 40), biWidth (chiều rộng ảnh), biHeight (chiều cao ảnh), biPlanes (số mặt ảnh thường bằng 1), và biBitCount (số bit trên một điểm ảnh có thể là 1, 2, 4, 8 hoặc 24) Ngoài ra, biCompression chỉ ra kiểu nén được sử dụng, với các giá trị 0 (không nén), 1 (RLE8), hoặc 2 (RLE4) biSizeImage xác định kích thước ảnh khi biCompression khác 0, trong khi biXPelsPerMeter và biYPelsPerMeter thể hiện độ phân giải ngang và dọc của điểm ảnh Cuối cùng, biClrUsed và biClrImportant lần lượt là số màu thực tế và số màu trong bảng màu của ảnh, có thể bằng 0.
{ char rgbBlue; // 0 1 BYTE char rgbGreen; // 1 1 BYTE char rgbRed; // 2 1 BYTE char rgbReserved; // 3 1 BYTE
Trong đó: rgbBlue : Màu xanh rgbGreen : Xanh lôc rgbRed : Màu đỏ
Nh- vậy, một ảnh sẽ có:
- 2 RGBQUAD đối với ảnh 2 bit/điểm
- 16 RGBQUAD đối với 4 bit /điểm
- 256 RGBQUAD đối với 8 bit/điểm
- Đối với ảnh 24 bit/điểm, thì không có phần bảng màu
Dữ liệu (DATA) của ảnh số có thể đ-ợc biểu diễn bởi một ma trận hai chiều NxM, có dạng nh- sau: a(n,m) =
Mỗi điểm ảnh trong ảnh 8 bit (256 màu) tương ứng với một phần tử của ma trận, với các phần tử là các số nguyên từ 0 đến 255 Trong tệp Bitmap, dữ liệu ảnh được lưu trữ dưới dạng ma trận một chiều.
Nh- vậy, khi l-u ảnh vào tệp BMP, ng-ời ta quét ảnh theo dòng song lại quét từ d-ới ảnh lên.
Cài đặt thủ tục đọc dữ liệu từ tệp BMP 10
Thuật toán: Đầu vào: Tên tệp BMP Đầu ra : Ma trận hai chiều Image(m,n) chứa dữ liệu của ảnh và các thông tin khác của ảnh
B-ớc 1 : Đọc phần BITMAPFILEHEADER của tệp
B-ớc 2 : Kiểm tra có phải là tệp Bitmap không?
NÕu sai th× kÕt thóc
Ng-ợc lại, chuyển sang b-ớc 3
B-ớc 3 : Đọc phần BITMAPINFOHEADER của tệp
B-ớc 4 : Xác định số màu của ảnh?
Nếu số màu của ảnh bé hơn hoặc bằng 256 chuyển sang B-ớc 5
Ng-ợc lại, chuyển sang b-ớc 6
B-ớc 5 : Đọc phần bảng màu và chuyển đổi mã màu
B-ớc 6 : Đọc phần dữ liệu của ảnh và l-u vào ma trận hai chiều
Để đảm bảo hiển thị chính xác màu sắc trong môi trường Windows, việc chuyển đổi mã màu là cần thiết đối với các ảnh sử dụng bảng màu, tức là những ảnh có số màu tối đa là 256.
Cài đặt thủ tục hiển thị ảnh 11
Thuật toán nhận đầu vào là ma trận hai chiều Image(m,n) chứa dữ liệu và thông tin liên quan đến ảnh, được lấy từ thủ tục đọc dữ liệu tệp BMP Đầu ra của thuật toán là hình ảnh đã được hiển thị trên màn hình đồ họa.
Xử lý: Đ-a giá trị của từng điểm ảnh lên màn hình
Thủ tục hiển thị ảnh 256 màu lên màn hình đồ hoạ đ-ợc cài đặt nh- sau: void HienThi(a,h_dau,c_dau,h_cuoi,c_cuoi,Colors,pDC) image a; // ảnh cần hiển thị
DWORD h_dau,c_dau; // Toạ độ đầu
DWORD h_cuoi,c_cuoi; // Toạ độ cuối
CDC *pDC; // Thiết bị vẽ chuẩn
BYTE b; for (unsigned i=h_dau;i