4. Bố cục của luận văn
3.2. Phân tích, cài đặt chƣơng trình thử nghiệm
Chƣơng trình thực nghiệm đƣợc cài đặt trong môi trƣờng Microsoft Visual Studio 2010, sử dụng thƣ viện xử lý ảnh Leptonica cho việc đọc/ghi ảnh và các thao tác xử lý ảnh cơ bản. Quy trình thực hiện của chƣơng trình đƣợc thể hiện cụ thể trên Hình 3. 2.
Trong đó, đầu vào của chƣơng trình là các ảnh mặt trƣớc và mặt sau CMND. Để thực hiện việc đọc, ghi và các thao tác xử lý cơ bản trên các ảnh đầu vào, luận văn sử dụng thƣ viện Leptonica []. Trong đó, mỗi ảnh đầu vào đƣợc biểu diễn bằng một cấu trúc PIX, với các thành phần dữ liệu đƣợc định nghĩa nhƣ sau:
struct Pix{
l_uint32 w; /* Chiều rộng của ảnh (theo pixels) */ l_uint32 h; /* Chiều cao của ảnh (theo pixels) */
l_uint32 d; /* Số bit màu của ảnh (với ảnh đen trắng d = 1) */
l_uint32 wpl; /* 32-bit words/line */
l_uint32 xres; /* Độ phân của ảnh (ppi) theo trục x */ l_uint32 yres; /* Độ phân của ảnh (ppi) theo trục y */ l_int32 informat; /* Xác định format của ảnh đầu vào */ char *text; /* text string associated with pix */
struct PixColormap *colormap; /* bảng màu (có thể để null ) */
l_uint32 *data; /* Dữ liệu ảnh*/ };
typedef struct Pix PIX;
Tƣơng tự nhƣ một hệ thống phân tích trang ảnh truyền thống, tiền xử lý là bƣớc quan trọng, không thể thiếu trong chƣơng trình thử nghiệm. Do đặc điểm khác nhau giữa ảnh mặt trƣớc và mặt sau CMND nên các kỹ thuật tiền xử lý khác nhau đã đƣợc áp dụng riêng cho ảnh mặt trƣớc và mặt sau CMND
(sẽ đƣợc đề cập cụ thể trong phần 3.2.1 và 3.2.2 ). Sau bƣớc tiền xử lý, các ảnh đầu vào sẽ đƣợc chuyển tới bộ phân tích cấu trúc. Quá trình phân tích sẽ lần lƣợt gọi tới các hàm:
+ PIX* NumberDectection (PIX *pixs): Đầu vào của hàm là ảnh mặt trƣớc CMND (thể hiện bằng cấu trúc PIX). Hàm đƣợc sử dụng để dò tìm, phát hiện và bóc tách trƣờng số CMND theo phƣơng pháp đã đƣợc đề cập trong phần 2.7.2.
+ PIXA* cBackDetectTable(PIX *pixs): Đầu vào của hàm là ảnh mặt sau
của CMND, đƣợc thể hiện bằng cấu trúc PIX pixs. Hàm đƣợc sử dụng để phân tích cấu trúc bảng theo phƣơng pháp đã đƣợc đề cập trong phần 2.7.3.
+ BOX*cFrontTextDetect (PIX *pixs, BOX *boxNum, PIX **ppixd):
Đầu vào của hàm là ảnh mặt trƣớc CMND (pixs). Hàm đƣợc sử dụng để dò tìm Xoá phần tiêu đề thông tin ở mặt trƣớc của CMND theo phƣơng pháp đã đƣợc đề cập ở phần 2.7.4.
+ BOXA* cBackDetectTableExtract(NUMA *verLine, NUMA
*horLine): Đầu vào của hàm là cấu trúc bảng đã xác định, đƣợc thể hiện bằng tập các đƣờng kẻ dọc (verLine) và ngang (horLine). Hàm đƣợc sử dụng để tách các trƣờng thông tin cần nhận dạng ở mặt sau của CMND từ cấu trúc bảng.
Để đánh giá hiệu quả của phƣơng pháp, luận văn đã sử dụng 3 độ đo: Precision (độ chính xác), recall (khả năng tìm hết) và F- measure (độ đo F) (sẽ đƣợc trình bày cụ thể trong phần 3.2). Trong đó, mỗi ảnh đầu vào đƣợc cung cấp kèm một file ground-truth lƣu đầy đủ thông tin của các vùng thông tin cần xác định (số vùng, tọa độ của các vùng, v.v.).