Ngưỡng xác định các cạnh bên

Một phần của tài liệu Xử lý tự động phiếu điều tra (Trang 57)

Ngưỡng xác định các cạnh bên là số các điểm đen ít nhất cho phép xác định một tập hợp điểm đen có là cạnh bên của các khung hay không.

Tỉ lệ độ dài (pt) 0. 6 0. 7 0. 8 0.9 1 Độ chính xác (%) 45 60 81 99 0

Từ bảng, ta có thể chọn giá trị ngưỡng xác định các cạnh bên là chiều dài cạnh bên của khung * 0.9.

4.5. Thực nghiệm xác định các ngưỡng nhận dạng trên mẫu phiếu trả lời loại 1

4.5.1 Các ngưỡng nhận dạng dòng

Khi nhận dạng dòng, chúng ta cần quan tâm đến 3 ngưỡng:

- Ngưỡng xác định bắt đầu của một dòng

Khi quét một khung từ trên xuống dưới, từ trái qua phải, để xác định khi nào một tập hợp điểm đen là bắt đầu của một dòng, chúng ta đưa ra “ngưỡng xác định bắt đầu của một dòng”. Ngưỡng 2 4 6 8 10 Độ chính xác (%) 5 0 8 0 95 99 30 Nhận xét :

+ Nếu để ngưỡng này nhỏ, nhận dạng sẽ gặp nhiều sai số do nhận nhầm tập các điểm đen nhiễu.

+ Nếu để ngưỡng này lớn thì không nhận dạng được.

- Ngưỡng chiều cao tối thiểu của dòng

Vì nhiều lý do khác nhau, một dòng có thể bị mờ mất một phần chiều cao hoặc trong phiếu trả lời có một số nhiễu có thể làm nhận nhầm vị trí của dòng. Do đó, ngưỡng chiều cao tối thiểu của dòng được sử dụng để khắc phục các vấn đề này. Chiều cao của dòng khi quét lón hơn hoặc bằng ngưỡng này thì được tính là một dòng, nếu nhỏ hơn thì không tính.

Từ thực nghiệm, chúng tôi chọn ngưỡng này bằng 25 pixel

- Ngưỡng chiều cao tối đa của dòng

Ngưỡng chiều cao tối đa của dòng là ngưỡng được sử dụng để loại các nhiễu lớn có thể gặp phải khi nhân dạng. Các nhiễu lớn có thể là các vết gạch bút vô ý trên phiếu trả lời. Trong khi quét từ trên xuống dưới, nếu thấy chiều cao của dòng vượt quá ngưỡng chiều cao tối đa thì không tiếp tục quét nữa và vị trí của dòng đó được xác định

Từ thực tế chạy thử, chúng tôi đặt ngưỡng này (áp dụng cho mẫu phiếu trả lời loại 1) là 40 pixel.

4.5.2. Các ngưỡng nhận dạng ô

- Ngưỡng để xác định bắt đầu một ô:

Ngưỡng này là số điểm đen nhỏ nhất để có thể xác định vị trí nào là bắt đầu của một ô.

Do mỗi ô có dạng hình tròn nên chúng ta có thể lấy ngay ngưỡng này là 3 pixel. Bởi vì nếu chúng ta lấy là 1 hay 2 pixel thì sẽ dẫn đến bị xác định nhầm khi gặp nhiễu.

- Ngưỡng độ rộng tối thiểu và ngưỡng độ rộng tối đa để xác định vị trí một ô:

Ý nghĩa của hai ngưỡng này cũng giống ý nghĩa của hai ngưỡng chiều cao tối đa và chiều cao tối thiểu khi xác định mỗi dòng.

Từ thực nghiệm, chúng tôi xác định ngưỡng độ rộng tối thiểu là 25 pixel và ngưỡng độ rộng tối đa là 40 pixel khi định vị các ô.

4.5.3. Các ngưỡng nhận dạng ô được tích

Nhận xét: Khi thực nghiệm chạy thử, chúng tôi thấy rằng, số điểm ảnh đen của mỗi chữ cái là khác nhau. Sự chênh lệch này có ảnh hưởng đến kết quả của việc xác định ô nào là ô được đánh dấu. Cụ thể sự chênh lệch này như sau:

Các chữ cái (tính cả đường tròn ngoài) A B C D

Số điểm trung bình 398 432 40

8

437 (Font Time New Roman, chữ hoa, cỡ 8)

Sự chênh lệch này sẽ được sử dụng khi so sánh để xác định ô được đánh dấu.

- Ngưỡng độ chênh lệch để xác định ô được tích (adsbygoogle = window.adsbygoogle || []).push({});

Ngưỡng này chính là số điểm đen chênh lệch giữa ô có số điểm đen cao nhất và ô có số điểm đen thấp nhất. Việc xác định ngưỡng này tốt sẽ làm nâng cao độ chính xác khi xác định ô được tích. Ngưỡng 30 35 41 5 0 60 Độ chính xác (%) 72 8 6 99 76 45

Từ bảng thực nghiệm, chúng ta có thể chọn ngưỡng độ chênh lệch điểm đen là 60 pixel.

4.6. Thực nghiệm xác định các ngưỡng nhận dạng trên phiếu trả lời loại 2

4.6.1. Các ngưỡng nhận dạng dòng

Khác với kỹ thuật nhận dạng dòng ở mẫu phiếu điều tra loại 1, kỹ thuật nhận dạng dòng ở mẫu phiếu trả lời loại 2 dựa vào việc xác định vị trí của số thứ tự ở đầu mỗi dòng.

Do vậy ngưỡng để xác định bắt đầu một dòng là ngưỡng để xác định bắt đầu hai chữ số thứ tự.

Ngưỡng 1 2 3 4

Độ chính xác (%) 5 0

90 99 71

Từ bảng thực nghiệm, ta có thể xác định giá trị tốt nhất của ngưỡng này có giá trị là 3 pixel.

- Ngưỡng độ cao tối thiểu xác định một dòng

Ngưỡng này có ý nghĩa khắc phục một số lỗi có thể gặp khi xác định dòng: mẫu có nhiều điểm đen nhiễu có thể làm kết quả nhận dạng bị sai hoặc dòng bị mờ mất một phần nhỏ. Độ cao của dòng phải vượt qua được ngưỡng này thì đó mới là một dòng.

Từ thực nghiệm, ta có thể chọn giá trị tốt nhất cho ngưỡng độ cao tối thiểu của dòng là 7 pixel.

- Ngưỡng độ cao tối đa xác định một dòng

Ngưỡng chiều cao tối đa của dòng là ngưỡng được sử dụng để loại các nhiễu lớn có thể gặp phải khi nhận dạng. Các nhiễu lớn có thể là các vết gạch bút vô ý trên tờ mẫu. Trong khi quét từ trên xuống dưới, nếu thấy chiều cao của dòng vượt qua ngưỡng chiều cao tối đa thì không tiếp tục quét nữa và vị trí của dòng đó được xác định.

Từ thực nghiệm, chúng ta có thể chọn giá trị tốt nhất cho ngưỡng này là 20 pixel .

4.6.2. Thực nghiệm xác định ô

Sau khi đã tính được vị trí của từng dòng (toạ độ của điểm bắt đầu dòng), vị trí của mỗi ô được xác định đơn giản bằng cách: vị trí của mỗi ô sẽ là toạ độ của điểm bắt đầu dòng tịnh tiến từ trái qua phải một khoảng tương ứng đã biết.

4.6.3. Các ngưỡng nhận dạng ô được tích

- Ngưỡng để một điểm ảnh được coi là một điểm đen

Trước hết, điểm xem xét phải có mức xám nhỏ hơn ngưỡng trắng.

Sau đó ngưỡng xác định một điểm đó có là điểm đen hay không chính là tổng số 8_láng giềng của nó mà có độ xám nhỏ hơn ngưỡng trắng.

Ngưỡng này có ảnh hưởng đến độ chính xác khi xác định tổng số điểm đen hay tính diện tích vùng được đánh dấu, từ đó ảnh hưởng đến kết quả nhận dạng, đặc biệt là khi phiếu có nhiều nhiễu .

Từ thực nghiệm, ta chọn ngưỡng này có giá trị là 2.

- Nhận xét về độ chênh lệch số điểm đen giữa các chữ cái

Với các chữ ở định dạng font VnBlackH, cỡ 8 thì độ chênh lệch điểm đen giữa các chữ cái là:

Các chữ cái A B C D

Số điểm trung bình 74 8 2

66 80

Sự chênh lệch này sẽ được áp dụng khi tính toán tổng số điểm đen của mỗi ô. (adsbygoogle = window.adsbygoogle || []).push({});

- Xác định “vùng được xét”

Độ lớn vùng được xét ảnh hưởng rất lớn tới kết quả nhận dạng ô được đánh dấu:

Diện tích a*a 12 15 2 0

25 Độ chính xác 5 7 99 70

0 0

Từ bảng thực nghiệm trên, chúng tôi chọn giá trị tốt nhất của vùng được xét là 20 pixel * 20 pixel

- Xác định ngưỡng diện tích tối thiểu

Sau khi tính diện tích mỗi ô, ô nào có diện tích lớn hơn ngưỡng diện tích tối thiểu thì tiếp tục được xem xét có là ô được đánh dấu hay không. Còn ô nào có diện tích nhỏ hơn ngưỡng thì không được xét.

Từ thực nghiệm, diện tích của các ô chưa được điền là nhỏ hơn 120 (pixel*pixel). Do đó , chúng tôi đã chọn ngưõng diện tích tối thiểu là 150 (pixel*pixel)

- Xác định ngưỡng số điểm đen tối thiểu dưới

Một ô muốn được xem xét có là điểm được đánh dấu hay không thì số điểm đen của ô đó phải lớn hơn ngưỡng điểm đen tối thiểu dưới.

Vì mỗi chữ cái lại có số điểm đen khác nhau nên ngưỡng này cũng là khác nhau với mỗi chữ.

Từ thực nghiệm ta có lựa chọn sau:

+ Với lựa chọn A: Khi chưa được đánh dấu thì số điểm đen thường là 75 pixel. Chúng tôi chọn ngưỡng điểm đen tối thiểu dưới là 80

+ Với lựa chọn B: Khi chưa được đánh dấu thì số điểm đen thường là 83 pixel. Chúng tôi chọn ngưỡng điểm đen tối thiểu dưới là 100

+ Với lựa chọn C: Khi chưa được đánh dấu thì số điểm đen thường là 65 pixel. Chúng tôi chọn ngưỡng điểm đen tối thiểu dưới là 80

+ Với lựa chọn D: Khi chưa được đánh dấu thì số điểm đen thường là 82 pixel. Chúng tôi chọn ngưỡng điểm đen tối thiểu dưới là 100

Nếu số điểm đen của ô nào lớn hơn hoặc bằng ngưỡng số điểm đen tối thiểu trên thì ô đó là ô được đánh dấu.

Từ thực nghiêm, chúng ta có ngưỡng số điểm đen tối thiểu trên: + Với lựa chọn A: 140

+ Với lựa chọn B: 150 + Với lựa chọn C: 140 + Với lựa chọn D: 150

4.7. Thực nghiệm nhận dạng hai loại mẫu phiếu trả lời

Ở các phần trên, chúng ta đã thực nghiệm để tạo các mẫu và tìm kiếm giá trị tốt nhất cho các tham số dùng để nhận dạng phiếu. Phần này, chúng tôi sẽ trình bày cụ thể quá trình thực nghiệm trên các mẫu đã tạo ở trên, sử dụng các tham số nhận dạng đã được xác định.

Cả hai loại mẫu phiếu trả lởi đều có các quá trình nhận dạng đường thẳng dày, xoay ảnh, nhận dạng khung là giống nhau. Chúng khác nhau ở các giai đoạn tách dòng, tách ô và nhận dạng ô đươc tích. Do đó, quá trình thực nghiệm diễn ra như sau:

4.7.1. Thực nghiệm nhận dạng đường thẳng dày

Với đường thẳng dày có độ dài 15 cm, độ dày 4 pt, ngưỡng xác định độ dài là 9/10 độ dài thực tế, ngưỡng nghiêng là 20 , ta có kết quả thực nghiệm:

- Thời gian nhận dạng: 0.03 s - Độ chính xác: 99%

Hình 5.3 Đường thẳng dày

4.7.2. Thực nghiệm xoay ảnh

Với ảnh có độ nghiêng dưới 20 , ta có kết quả thực nghiệm: - Thời gian xoay: 0.02 s

- Độ chính xác: 100% (adsbygoogle = window.adsbygoogle || []).push({});

Hình 5.4. Xoay ảnh

4.7.3. Thực nghiệm nhận dạng các khung

Với mẫu có 3 khung, độ dày của mỗi cạnh là 1 pt, các ngưỡng xác định độ dài là 9/10 độ dài thực tế, ta có kết quả thực nghiêm:

- Thời gian nhận dạng: 0.25 s - Độ chính xác: 99%

Hình 5.5. Khung

4.7.4. Thực nghiệm nhận dạng trên mẫu phiếu trả lời loại 1

4.7.4.1. Thực nghiệm tách dòng

Với ngưỡng xác định bắt đầu một dòng là 8 pixel, ngưỡng chiều cao tối thiểu của dòng là 25 pixel, ngưỡng chiều cao tối đa của dòng là 40 pixel, ta có kết quả thực nghiệm:

- Thời gian nhận dạng: 0.01 s - Độ chính xác: 99%

Hình 5.6. Tách dòng 4.7.4.2. Thực nghiệm tách ô

Với ngưỡng xác định bắt đầu một ô là 3 pixel, ngưỡng độ rộng tối thiểu một ô là 25 pixel, ngưỡng độ rộng tối đa của một ô là 40 pixel, ta có kết quả thực nghiệm:

- Thời gian nhận dạng: 0.01 s - Độ chính xác: 99%

4.7.4.3. Thực nghiệm xác định ô được tích

Với ngưỡng độ chênh lệch điểm đen để xác định ô được tích là 41 pixel, ta có kết quả thực nghiệm:

- Thời gian nhận dạng: 0.005 - Độ chính xác: 99%

Hình 5.8. Kết quả 4.7.4.4. Kết quả thực nghiệm nhận dạng phiếu trả lời loại 1

Chạy thử trên toàn phiếu trả lời loại 1 và có kết quả như sau: - Môi trường thực nghiệm: CPU 1Ghz, RAM 256 Mb

- Số phiếu: 50

- Thời gian nhận dạng trung bình 1 phiếu: 0.98 giây - Độ chính xác trung bình : 99 %

4.7.5 Thực nghiệm nhận dạng trên mẫu phiếu trả lời loại 2

4.7.5.1. Thực nghiệm tách dòng

Với ngưỡng xác định bắt đầu một dòng là 3 pixel, ngưỡng chiều cao tối thiểu của dòng là 7 pixel, ngưỡng chiều cao tối đa của dòng là 20 pixel, ta có kết quả thực nghiệm:

- Thời gian xác định: 0.01 s - Độ chính xác : 99%

Hình 5.9. Tách dòng 4.7.5.2. Thực nghiệm tách ô

- Thời gian tách ô: không đáng kể. - Độ chính xác : 100%.

Hình 5.10. Tách dòng 4.7.5.3. Thực nghiệm xác định ô được tích

Với diên tích vùng được xét là 20 pixel*20 pixel, ngưỡng điểm đen tối thiểu dưới và ngưỡng điểm đen tối thiểu trên ứng với từng trường hợp được tích, ngưỡng diện tích vùng được tích là 150 (pixel*pixel), chúng ta có kết quả thực nghiệm:

- Thời gian nhận dạng: 0.02 s - Độ chính xác :99%

Hình 5.11. Kết quả

4.7.5.4. Kết quả thực nghiệm nhận dạng phiếu trả lời loại 2 (adsbygoogle = window.adsbygoogle || []).push({});

Chạy thử trên toàn phiếu trả lời loại 2 và có kết quả như sau: - Môi trường thực nghiệm: CPU 1Ghz, RAM 256 Mb

- Số phiếu: 50

- Thời gian nhận dạng trung bình 1 phiếu: 1.2 s - Độ chính xác: 99 %

4.8. So sánh kết quả thực nghiệm giữa hai loại mẫu phiếu trả lời

Từ thực nghiệm, chúng tôi rút ra những nhận xét sau:

- 2 mẫu đều cho kết quả nhận dạng có độ chính xác cao, tốc độ nhận dạng nhanh.

- Kỹ thuật xác định vị trí các ô được áp dụng trên mẫu phiếu loại 2 có độ chính xác cao hơn kỹ thuật tìm vị trí các ô của mẫu phiếu loại 1.

- Tốc độ nhận dạng của mẫu loại 1 nhanh hơn một chút so với tốc độ nhận dạng của phiếu loại 2.

- Độ chính xác của nhận dạng phiếu loại 2 cao hơn phiếu loại 1.

- Kỹ thuật nhận dạng phiếu loại 2 còn cho độ chính xác rất cao với các câu hỏi có nhiều tùy chọn. Phiếu loại 1 hiện tại chỉ áp dụng cho các câu hỏi có 1 lựa chọn.

Chương 6: Kết luận

Trong Khoá luận này, chúng tôi đã thực hiện được những công việc sau:

• Nghiên cứu và áp dụng các kỹ thuật xử lý ảnh cơ bản trong nhận dạng phiếu điều tra.

• Nghiên cứu và phát triển một số thuật toán áp dụng cho nhận dạng hai mẫu phiếu trả lời.

• Phân tích sơ bộ các chức năng chính của hệ thống hỗ trợ tổ chức điều tra xã hội học.

• Viết chương trình nhận dạng và thực nghiệm trên hai mẫu phiếu trả lời. Kết quả thực nghiệm là rất khả quan:

- Với phiếu trả lời loại 1, thời gian nhận dạng trung bình 1 phiếu là 1 s, độ chính xác là 99%.

- Với phiếu trả lời loại 2, thời gian nhận dạng trung bình 1 phiếu là 1.2 s, độ chính xác là 99%.

Kết luận:

- Hệ thống chúng tôi đang xây dựng có tính khả thi cao.

- Cả hai mẫu phiếu trả lời được thiết kế, thử nghiệm đều cho kết quả tốt. - Độ phân giải phù hợp khi quét ảnh là 150 dpi.

Hướng phát triển tiếp theo của Khoá luận này trong tương lai:

• Nâng cao hiệu quả và độ chính xác hơn nữa trong việc nhận dạng phiếu điều tra.

• Tìm hiểu sâu hơn về kiến thức và nghiệp vụ trong điều tra.

Phụ lục

Giới thiệu thư viện OPENCV

OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở được viết bằng C và C++, cung cấp các hàm liên quan đến thao tác ảnh và thực hiện một số thuật toán thông dụng trong xử lý ảnh.

Dưới đây, chúng ta sẽ xem xét một số cấu trúc và hàm được thông dụng.

1. Cấu trúc IplImage

typedef struct _IplImage (adsbygoogle = window.adsbygoogle || []).push({});

{ int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/

int nChannels; int alphaChannel;

int depth; /* pixel depth in bits */

Một phần của tài liệu Xử lý tự động phiếu điều tra (Trang 57)