Định nghĩa:
Vùng tô là phần được giới hạn trong một ô tròn (các ô tròn này có rất nhiều trên bài làm của thí sinh). Tùy theo cách làm bài của từng thí sinh mà mỗi ô tròn có được tô hay không. Công việc kiểm tra vùng tô là xét xem trong một ô tròn nào đó có được tô đen hay không. Tùy theo quy định của người lập trình mà số phần trăm được tô đen trong vùng tô là bao nhiêu thì ô tròn được xem là đã tô.
Hình 2-19: khi chưa được tô
Hình 2-20: các dạng sau khi đã tô Cách thực hiện:
Do vùng tô cần xét chỉ là một vòng tròn nhỏ trong ảnh bitmap, và khi xem xét một ảnh bitmap thì ảnh đó luôn là hình chữ nhật. Cho nên đầu vào của vùng tô cần kiểm tra là một hình vuông (được lấy ra từ ảnh bài thi) có đường tròn nội tiếp chính là ô tròn đang xét.
Khi đó, ta có 2 cách để kiểm tra vùng tô xem có được tô hay chưa:
Ta sẽ quét tòan bộ vùng ảnh vuông đầu vào từ trái qua phải và từ trên xuống dưới, xét xem số pixel đen chiếm bao nhiêu phần trăm trong tổng số pixel của vùng ảnh đầu vào. Theo quy định như trong đề tài này, nếu số pixel đen này chiếm hơn 60%, thì vùng tô đó đã đựơc tô đen, còn ngược lại là chưa được tô.
Cách kiểm tra này độ chính xác không cao, vì xét cả những phần nằm ngoài vùng tô. Tuy nhiên, do cài đặt dễ dàng và xử lý ít phức tạp (chỉ quét một lần và theo thứ tự), tốc độ thực hiện nhanh hơn nên được áp dụng trong đề tài.
Cách thứ hai:
Ta sẽ quét từ tâm hình vuông (còn là tâm của vòng tròn) dần lan ra đến cạnh của hình vuông theo các đường tròn đồng tâm là tâm hình vuông. Ta sẽ phân các vòng tròn thành 3 loại:
9 các vòng tròn nhỏ bên trong (ta quy định là các vòng tròn có đường kính bằng nữa cạnh hình vuông trở xuống) gọi là T1.
9 các vòng tròn lớn bên trong (ta quy định là các vòng tròn có đuờng kính lớn hơn nữa cạnh hình vuông đến bằng cạnh hình vuông) gọi là T2.
9 các vòng tròn bên ngòai (có đường kính lớn hơn cả cạnh hình vuông) gọi là T3.
Trong một điều kiện tối ưu, vùng ảnh vuông đầu vào sẽ có vòng tròn cần xét tô nội tiếp với ảnh vuông đó. Nhưng trong thực tế thì vòng tròn tô trong vùng ảnh vuông đầu vào sẽ bị lệch, do đó các vòng tròn nhỏ T1 sẽ có khả năng nằm trong vùng cần tô nhiều hơn là T2, và các vòng tròn T2 lại có khả năng nhiều hơn T3. Do đó, pixel thuộc vòng tròn T1 sẽ góp phần nhiều hơn so với các pixel thuộc T2 vào việc quyết định xem vùng tô có được tô hay không. Điều này cũng tương tự cho các pixel thuộc vòng tròn T2 so với T3. Vì vậy, độ ưu tiên của các pixel thuộc các vòng tròn sẽ được quy định theo thứ tự lần lượt như sau: T1, T2, T3.
Ta có công thức sau:
Giá trị của vùng tô = ( Tổng số pixel T1 đen * độ ưu tiên của T1 ) + ( Tổng số pixel T2 đen * độưu tiên của T2 ) + ( Tổng số
pixel T3 đen * độưu tiên T3 ) (1)
Như vậy, khi vùng tô được tô hoàn toàn trong điều kiện tối ưu (tức ảnh đầu vào hình vuông chứa ô tròn cần tô nội tiếp ảnh), ta có:
Giá trị cho thấy vùng tô được tô hoàn toàn = ( Tổng số pixel T1 * độưu tiên của T1 ) + ( Tổng số pixel T2 * độưu tiên của T2)
Do đó, chỉ gần đúng, ta đưa ra được thuật toán cho phép quyết định xem vùng tô có được tô hay không bằng cách:
• Tính giá trị vùng tô áp dụng công thức (1).
• Nếu giá trị vùng tô > (60% * Giá trị vùng tô được tô hoàn toàn) thì
o ô tròn đã được tô đen • ngược lại
o ô tròn chưa đựơc tô.
Phương pháp này có độ chính xác cao hơn trong các trường hợp ảnh vuông đầu vào có vùng tô bị lệch, tuy nhiên do cài đặt phức tạp, xử lý tính toán nhiều hơn (phải tính từ tâm của hình tròn rồi lan dần sang xung quanh)
có thể làm ảnh hưởng đến tốc độ chung của chương trình nên không được áp dụng cho đề tài.