Khóa luận Xử lý tự động phiếu điều tra

Lời nói đầu Xử lý ảnh là một khoa học còn tương đối mới mẻ so với nhiều ngành khoa học khác, nhất là trên quy mô công nghiệp, song trong xử lý ảnh đã bắt đầu xuất hiện những máy tính chuyên dụng. Nhận dạng là một trong những bộ phận quan trọng của xử lý ảnh và đã được ứng dụng rất hiệu quả trong nhiều lĩnh vực khác nhau như y tế, quốc phòng, nghiên cứu vũ trụ. Mục đích của khóa luận này là nghiên cứu và áp dụng xử lý ảnh vào việc nhận dạng tự động phiếu điều tra. Từ đó làm nền tảng cho việc xây dựng và phát triển hệ thống tổ chức điều tra. Trong các cuộc điều tra, chúng tôi nhận thấy rằng: Việc xử lý kết quả điều tra một cách thủ công thì rất tốn công sức, khả năng nhầm lẫn cao, đặc biệt là trong các cuộc điều tra quy mô lớn. Ví dụ: trong một cuộc điều tra dân số, số phiếu điều tra lên tới hàng trăm nghìn bản. Nếu công việc xử lý kết quả điều tra được tự động hóa thì hiệu quả hơn rất nhiều. Trên thực tế đã có một số hệ thống nhận dạng được cứng hóa phục vụ cho một số mục đích nhất định như: các máy xác định kết quả bầu cử tổng thống ở Mỹ Và cũng có những sản phẩm phần mềm nhận dạng như : nhận dạng kết quả chấm thi trắc nghiệm Tuy vậy, những hệ thống này mang tính đặc thù cao, khó áp dụng đồng thời cho nhiều mục đích khác nhau. Do đó chúng tôi có ý tưởng xây dựng một hệ thống nhận dạng tự động phiếu điều tra nhằm mục tiêu có được một hệ thống nhận dạng dễ áp dụng, dùng chung, tốc độ nhanh, với độ chính xác cao. Mặc dù tôi đã hết sức cố gắng trong việc thu thập và nghiên cứu tài liệu, tìm hiểu ngôn ngữ cài đặt nhưng thời gian không cho phép và trình độ còn hạn chế, bên cạnh đó thì tài liệu hết sức nghèo nàn nên sẽ không tránh khỏi sai sót. Vì vậy, tôi rất mong nhận được sự đánh giá đóng góp, bổ sung và khuyến khích của thầy giáo hướng dẫn, các thầy cô giáo trong khoa Công Nghệ Thông Tin cùng các bạn để tôi có thể hoàn thành tốt khoá luận của mình. Tóm tắt Xử lý ảnh là một trong những lĩnh vực có nhiều ứng dụng thiết thực trong thực tế. Khoá luận này trình bày một ứng dụng của xử lý ảnh vào tự động nhận dạng phiếu trả lời trong các cuộc điều tra xã hội. Chúng tôi nhận thấy đây là một hệ thống có nhiều ý nghĩa thực tiễn và có khả năng ứng dụng cao. Khoá luận trình bày về hệ thống xử lý tự động phiếu điều tra, bao gồm các nội dung sau: Chương 1 trình bày cơ sở lý thuyết của xử lý ảnh, bao gồm các khái niệm cơ bản, các kỹ thuật thông dụng trong xử lý và nhận dạng ảnh. Chương 2 đi sâu vào thiết kế phiếu điều tra và các thuật toán nhận dạng phiếu điều tra. Chương 3 khái quát về các chức năng của hệ thống xử lý phiếu điều tra. Chương 4 trình bày các kết quả thực nghiệm của quá trình thiết kế mẫu và nhận dạng phiếu trả lời câu hỏi điều tra. Chương 5 là chương kết luận, nêu một số thành quả thu được và hướng phát triển trong tương lai của đề tài.

doc79 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3222 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Khóa luận Xử lý tự động phiếu điều tra, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng kính của ô trả lời thì đó là một ô, còn nếu lớn hơn hoặc nhỏ hơn nhiều đường kính của ô trả lời thì không phải là một ô, đó có thể là nhiễu. Ta chuyển sang bước 4. - Bước 4: Nếu số ô tìm được nhỏ hơn số ô trong hàng đó thì quay lại bước 2 để tiếp tục tìm ô, ngược lại nếu bằng số ô trong khung thì kết thúc 2.4.3. Nhận dạng ô được chọn Hình 2.8. Khoanh vùng các ô Đến bước này ta đã có các khoanh vùng của từng ô. Ta có nhận xét, trên mỗi dòng, số điểm đen trong vùng của ô được chọn lớn hơn hẳn so với các vùng của ô cùng dòng đó. Như vậy, phương pháp được mô tả như sau: Xét trên từng dòng - Bước 1: Tìm số điểm đen trong từng vùng của dòng - Bước 2: Chọn ra hai vùng có số điểm đen cao nhất và thấp nhất và tìm độ chênh lệch số điểm đen của hai vùng đó. - Bước 3: Nếu độ chênh lệch này lớn hơn một ngưỡng th cho phép thì vùng có số điểm đen cao nhất đã được đánh dấu, ngược lại dòng đó không có ô nào được đánh dấu. Tuy nhiên ta nhận thấy rằng, khi chưa có ô nào được đánh dấu, số lượng điểm đen trong các vùng vẫn chênh lệch nhau đáng kể do số điểm đen của các chữ cái không giống nhau, do đó ta phải tính thêm độ chênh lệch tương đối của các chữ cái bằng thực nghiệm để có thể nhận dạng được chính xác hơn. Ngưỡng th được xác định dựa trên thực nghiệm. 2.5. Kĩ thuật nhận dạng mẫu phiếu trả lời loại 2 Mô tả mẫu loại 2: Mẫu loại 2 về mặt kỹ thuật khác mẫu loại 1 ở chỗ: - Các chữ cái A,B,C .. không phải bao quanh bởi một hình vuông hay một hình tròn - Khi điền kết quả vào phiếu thì cách điền như sau: chữ cái mà tương ứng với phương án trả lời được chọn, thì sẽ được khoanh tròn hoặc bôi đen. Vì lý do đó, kĩ thuật nhận dạng mẫu loại 2 khác với kĩ thuật nhận dạng mẫu loại 1. 2.5.1. Tách dòng Các dòng đươc tách dựa trên tư tưởng xác định vị trí của các chữ số thứ tự ở mỗi đầu dòng. Các số thứ tự này tương ứng với số thứ tự các câu trả lời trong bảng hỏi. Hình 2.9. Hình chiếu của các dòng lên trục Oy Việc xác định vị trí của các số thứ tự được thực hiện như sau: Trên trục Ox, quét từ trái qua phải, giá trị bắt đầu là giá trị góc trên bên trái của khung, giá trị kết thúc là giá trị bắt đầu cộng thêm 40 pixel. Trên trục Oy, quét từ trên xuống dưới, giá trị bắt đầu là giá trị của đỉnh của khung. Nếu gặp một vùng mà thỏa mãn được các ngưỡng đặt ra thì đó là số thứ tự mà ta cần tìm. Vị trí của vùng đó sẽ cho ta vị trí của dòng cần xác định. Thuật toán như sau: - Bước 1: Bắt đầu quét như mô tả ở trên. - Bước 2: Quét đến khi nào gặp hàng chứa số điểm đen lớn hơn ngưỡng th thì chuyển sang bước 3. (ngưỡng th là ngưỡng xác định bắt đầu một dòng). - Bước 3: Lại tiếp tục quét đến khi nào gặp hàng không chứa điểm đen hoặc số điểm đen ít hơn ngưỡng th. Nếu số hàng quét được trong bước 3 xấp xỉ bằng độ cao của chữ số thì đó là chữ số, còn nếu lớn hơn hoặc nhỏ hơn nhiều độ cao của chữ số thì không phải là một chữ số, đó có thể là nhiễu. Trong trường hợp là chữ số, ta ghi lại tọa độ của chữ số đó (đây chính là toạ độ của dòng cần tìm). Ta chuyển sang bước 4. - Bước 4: Nếu số dòng tìm được nhỏ hơn số dòng trong khung thì quay lại bước 2 để tiếp tục tìm dòng, ngược lại nếu bằng số dòng trong khung thì kết thúc. Ngưỡng th được đưa ra nhằm mục đích loại bỏ các nhiễu trong ảnh. 2.5.2. Tách ô Ta biết rằng, trên phiếu điều tra chuẩn đã được chọn thì tỉ lệ vị trí giữa các ô trên một dòng là hoàn toàn xác định. Do đó, khi đã xác định được vị trí của dòng thì vị trí của từng ô trong dòng cũng là xác định. Việc xác định vị trí của các ô trên một dòng sẽ được thực hiện nhờ nhận xét này. Do đó: Với mỗi ô trong dòng: Nếu ô là ô thứ i: Toạ độ x của ô = toạ độ x của dòng + a[i] Toạ độ y của ô = toạ độ y của dòng Chú thích: a[i] là các hằng số xác định vị trí tương đối của của ô trong dòng. 2.5.3. Nhận dạng các ô được chọn Tư tưởng để xác định một ô có được đánh dấu hay không là dựa vào hai tiêu chuẩn để đánh giá : + Tổng số điểm đen trong vùng được xét của ô. + Diện tích bị đánh dấu trong vùng được xét của ô. Trước hết chúng ta sẽ định nghĩa thế nào là “vùng được xét ” của ô: ở phần trên ta đã xác định được toạ độ của ô, đó là toạ độ ở chính giữa tâm của ô. Vùng được xét của ô là vùng có dạng hình vuông nhận toạ độ của ô làm tâm, chiều dài mỗi cạnh của của vùng bằng hằng số th (th là hằng số cho phép ta xác định độ lớn của vùng được xét). Việc xác định vùng làm việc này rất quan trọng trong việc tính toán tổng số điểm đen và diện tích bị đánh dấu. Tiếp theo ta sẽ định nghĩa thế nào một điểm được gọi là “điểm quan tâm”. Một điểm được gọi là “điểm quan tâm” nếu: + Điểm đó là điểm đen + Có ít nhất 2 trong số 8_láng giềng của điểm đó là điểm đen. Vùng được đánh dấu là hình vuông nhỏ nhất chứa tất cả các điểm đen ở trong vùng được xét. Hình 2.10. Các vùng nhận dạng ô Việc tính diện tích của vùng bị đánh dấu trong vùng được xét như sau: Quét vùng được xét từ trên xuống dưới, từ trái qua phải, quét lần lượt từng góc phần tư của vùng được xét. Tại mỗi góc phần tư, một điểm mà điểm đó là điểm đen thì tính khoảng cách từ nó đến tâm. Từ các khoảng cách đó, chúng ta sẽ tính được chính xác diện tích của vùng bị đánh dấu Việc tính tổng số điểm đen được thực hiên đi kèm với việc tính diện tích. Sau khi tính được hai tiêu chuẩn này, một ô được xét là được đánh dấu nếu nó thoả mãn một trong hai điều kiện sau: + Diện tích vùng bị đánh dấu lớn hơn một ngưỡng diện tích th1 và tổng số điểm đen lớn hơn một ngưỡng số điểm đen tối thiểu th2. + Tổng số điểm đen lớn hơn một ngưỡng số điểm đen th3. Ta có thuật toán: Bước 1: quét vùng được xét, tính số điểm đen và tính diện tích vùng bị đánh dấu. Bước 2: Nếu ô đó thoả mãn các điều kiện ngưỡng thì ô đó là ô được đánh dấu. Ghi nhớ lại ô này. Chú thích: các ngưỡng th, th1, th2, th3 được xác định nhờ thực nghiệm. Nhận xét: Thuật toán nhận dạng ô được tích của phiếu điều tra loại 2 có ưu điểm hơn hẳn thuật toán nhận dạng thuật toán nhận dạng ô được tích của phiếu điều tra loại 1 ở chỗ: Thuật toán nhận dạng ô được tích của phiếu điều tra loại một chỉ áp dụng cho các câu hỏi chỉ có một lựa chọn. Còn thuật toán nhận dạng ô được tích của phiếu điều tra loại 2 vừa có thể áp dụng cho dạng câu hỏi chỉ có một phương án trả lời, vừa có thể áp dụng cho loại câu hỏi có nhiều phương án trả lời. Chương 3: Thử nghiệm xây dựng phần mềm tổ chức điều tra Các chương trước đã trình bày về các kỹ thuật cơ bản trong nhận dạng phiếu trả lời câu hỏi điều tra, đây là phần lõi của toàn bộ hệ thống phần mềm tổ chức điều tra. Trong chương này sẽ khái quát về xây dựng một phần mềm tổ chức điều tra. Phần mềm này có các chức năng cập nhận các câu hỏi điều tra, sinh các phiếu điều tra và phiếu trả lời, và sau đó sinh ra các báo cáo thống kê từ cuộc điều tra. 3.1. Mô tả một cuộc điều tra Các cuộc điều tra thường nhằm phục vụ cho mục đích nghiên cứu về khoa học, xã hội của các nhóm hay tổ chức nào đó. Chẳng hạn, điều tra dân số của Việt Nam nhằm thống kê một cách tương đối về số dân, tỉ lệ dân giữa nam và nữ, tỉ lệ giữa già và trẻ,…; điều tra ý kiến của sinh viên khoa Công Nghệ Thông Tin về sử dụng máy tính để thống kê số sinh viên thứ nhất có máy tính, số sinh viên năm thứ hai dùng thành thạo máy tính,… 3.1.1. Xác định mục tiêu điều tra Để mở một cuộc điều tra, chúng ta cần xác định mục tiêu của cuộc điều tra. Mục tiêu đó dựa trên mục đích nghiên cứu. Có thể có nhiều mục tiêu trong một cuộc điều tra, Biết được mục tiêu điều tra, ta mới đưa ra được các câu hỏi điều tra, do vậy xác định các mục tiêu điều tra là rất quan trọng. Các câu hỏi cần phải sát với mục tiêu điều tra, không nên đưa ra các câu hỏi thừa hoặc trùng lặp, không có ý nghĩa với mục tiêu điều tra. Các câu hỏi điều tra được chia thành một số loại khác nhau tùy theo mục đích của cuộc điều tra, sẽ được trình bày chi tiết hơn ở mục 3.1.2. Mỗi câu hỏi có một số tùy chọn trả lời, các tùy chọn này phải phân biệt rõ ràng nhau trong mỗi câu hỏi. Các câu hỏi khác nhau có thể có số tùy chọn trả lời là khác nhau. Ngoài các câu hỏi có sẵn các tùy chọn, còn có thể một số câu hỏi mở, các câu hỏi này thường không mang mục đích thống kê mà chỉ mang tính tham khảo. Ví dụ, trong điều tra dân số, một câu hỏi mở có thể được đặt ra: “Theo bạn, phải có những chính sách gì để giảm gia tăng dân số ở nước ta”. Các câu hỏi này sẽ được trả lời tùy theo ý kiến của từng người. Máy tính chỉ xử lý được các câu hỏi có các tùy chọn, các câu hỏi mở sẽ không được xử lý. Tuy vậy, trong phiếu trả lời vẫn phải có các vùng dành cho phần trả lời các câu hỏi mở. Sau khi điều tra, kết quả điều tra sẽ được phân tích, từ đó đưa ra các báo cáo thống kê cần thiết. Các báo cáo này được sinh ra dựa trên kết quả điều tra và sự phân loại các câu hỏi điều tra. 3.1.2. Phân loại câu hỏi điều tra Dựa vào mục đích của cuộc điều tra, ta có thể phân loại câu hỏi điều tra thành hai loại chính như sau: Câu hỏi điều tra mang tính thống kê: là loại câu hỏi được đưa ra nhằm mục đích thống kê số lượng, tỉ lệ của một loại đối tượng trong lĩnh vực cần nghiên cứu. Câu hỏi điều tra mang tính phân loại: là loại câu hỏi nhằm mục đích phân loại các đối tượng cần nghiên cứu để thống kê trên từng đối tượng này. Ta sẽ xem xét một số ví dụ để hiểu rõ hơn về hai loại câu hỏi này: Ví dụ 1: Một trong những mục tiêu của một cuộc điều tra dân số là tính tỉ lệ giữa già và trẻ. Ta có thể quy định người già có tuổi trên 50, còn trẻ dưới 50 tuổi. Khi đó ta có thể đưa ra một câu hỏi điều tra: Tuổi của bạn trong khoảng nào dưới đây ? A. < 50 B. 50 Đây là một câu hỏi điều tra mang tính thống kê, vì kết quả của nó nhằm thống kê tỉ lệ giữa già và trẻ. Tuy nhiên kết quả của câu hỏi này chỉ nói chung cho toàn bộ dân số, không phân biệt giới tính, nếu muốn thống kê tỉ lệ già trẻ nhưng chỉ đối với nam hoặc nữ thì ta phải làm thế nào? Khi đó, chúng ta cần một câu hỏi điều tra nữa để xác định giới tính: Bạn cho biết giới tính của mình? A. Nam B. Nữ Đây chính là câu hỏi điều tra thuộc dạng phân loại, kết quả của nó cho phép ta thống kê trên từng loại đối tượng, cụ thể ở đây, đối tượng là nam hoặc nữ. Thông thường, các câu hỏi điều tra mang tính phân loại thì cũng có tính chất thống kê. Ví dụ với câu hỏi trên, ta có thể thống kê được tỉ lệ giữa nam và nữ. Ví dụ 2: Trong một cuộc điều tra sinh viên về hiểu biết tin học. Có 4 câu hỏi được đưa ra như sau: Bạn có máy vi tính riêng không? A. Có B. Không Bạn có hiểu biết về máy tính không? A. Có B. Không Bạn cho biết giới tính? A. Nam B. Nữ Bạn là sinh viên năm thứ mấy? A. 1 B. 2 C. 3 D. 4 trở lên Ở đây, tổ chức điều tra muốn phân loại sinh viên theo giới tính và theo khóa. Khi đó sẽ có các báo cáo thống kê sau: - Thống kê số sinh viên nam học năm thứ nhất có máy tính - Thống kê số sinh viên nam học năm thứ hai có máy tính … - Thống kê số sinh viên nữ học năm thứ nhất có máy tính - Thống kê số sinh viên nữ học năm thứ hai có máy tính …… - Thống kê số sinh viên nam học năm thứ nhất biết máy tính - Thống kê số sinh viên nam học năm thứ hai biết máy tính … - Thống kê số sinh viên nữ học năm thứ nhất biết máy tính - Thống kê số sinh viên nữ học năm thứ hai biết máy tính Tức là sẽ có 16 báo cáo được sinh ra. Nói một cách tổng quát, nếu có m câu hỏi phân loại và n câu hỏi thống kê, câu hỏi phân loại thứ i có p tùy chọn thì số báo cáo thống kê sẽ là: 3.2. Xây dựng các chức năng của hệ thống tổ chức điều tra 3.2.1. Mục tiêu của hệ thống tổ chức điều tra - Hỗ trợ người tổ chức điều tra tạo, cập nhật và in phiếu điều tra - Đọc tự động kết quả điều tra dùng phương pháp quét phiếu điều tra bằng scanner - Cho phép tùy chọn lập báo cáo thống kê - Tự động sinh các báo cáo thống kê 3.2.2. Yêu cầu kỹ thuật Phần cứng - Một máy tính tốc độ tối thiểu 500 MHz, dung lượng RAM 128 Mb - Một máy in laze - Một máy scanner Phần mềm sử dụng cho hệ thống - Sử dụng hệ điều hành Windows 98, Windows 2000 hoặc Windows XP - Sử dụng Office 2000 trở lên - Hệ quản trị cơ sở dữ liệu Access 3.2.3. Các yêu cầu chức năng đối với hệ thống Để tổ chức một cuộc điều tra, đầu tiên điều tra viên phải tạo ra phiếu điều tra bao gồm các công đoạn sinh các câu hỏi điều tra, các tùy chọn của mỗi câu hỏi, tiếp đó phân loại câu hỏi để chuẩn bị lập các báo cáo thống kê sau khi đã có kết quả điều tra. Do vậy, hệ thống phải có các chức năng tạo, in phiếu điều tra và phiếu trả lời, cập nhật báo cáo. Các chức năng này tương tác với người tổ chức điều tra. Sau khi đã có kết quả điều tra, hệ thống phải có chức năng quét phiếu trả lời để lấy thông tin trả lời, sau đó sinh ra các báo cáo dựa trên chức năng lập và sinh báo cáo. Trong giai đoạn này, người sử dụng hệ thống vẫn có thể dùng chức năng lập báo cáo để sinh ra các báo cáo mong muốn. Dưới đây là biểu đồ ngữ cảnh của hệ thống giúp chúng ta dễ hình dung về sự tương tác của hệ thống với các tác nhân bên ngoài. Hình 3.1. Biểu đồ ngữ cảnh của hệ thống tổ chức điều tra 0 Hệ thống tổ chức điều tra Người tổ chức điều tra Đối tượng điều tra phiếu điều tra, phiếu trả lời kết quả điều tra được quét bằng scanner nội dung phiếu điều tra, thông tin cập nhật báo cáo kết quả thống kê Qua những phân tích ở trên, hệ thống tổ chức điều tra phải có 3 chức năng chính sau: Tạo phiếu điều tra Đọc phiếu trả lời Phân tích kết quả điều tra Trình tự của các chức năng này được mô tả trong hình vẽ dưới đây: 1 Tạo phiếu điều tra 2 Đọc phiếu trả lời 3 Phân tích kết quả điều tra Thực hiện điều tra Hình 3.2. Trình tự thực hiện của các chức năng chính Tiến trình được biểu diễn bằng nét đứt là quá trình thực hiện điều tra nằm ngoài phạm vi của hệ thống. 3.2.4. Biểu đồ phân rã chức năng 3.2.4.1. Nhóm các chức năng theo phương pháp từ dưới lên Các chức năng chi tiết (lá) Nhóm lần 1 Nhóm lần 2 Nhóm lần 3 1. Cập nhật phiếu điều tra Tạo phiếu điều tra Hệ thống tổ chức điều tra 2. Cập nhật danh mục câu hỏi 3. Cập nhật các tùy chọn 4. Sinh phiếu điều tra dạng Word In phiếu điều tra, phiếu trả lời 5. Đặt các tham số phiếu trả lời 6. Sinh phiếu trả lời dạng Word 7. Chỉnh sửa 8. In 9. Quét phiếu trả lời Đọc phiếu trả lời 10. Nhận dạng phiếu trả lời 11. Hiển thị kết quả điều tra Phân tích kết quả điều tra 12. Lập báo cáo thống kê 13. Xem báo cáo thống kê Bảng 3.3. Nhóm các chức năng theo phương pháp từ dưới lên 3.2.4.2. Biểu đồ phân rã chức năng Hệ thống tổ chức điều tra 1. Tạo phiếu điều tra 2. Đọc phiếu trả lời 3. Phân tích kết quả điều tra 1.1. Cập nhật phiếu điều tra 1.2. Cập nhật danh mục câu hỏi 1.3. Cập nhật các tùy chọn 1.4. In phiếu điều tra, phiếu trả lời 1.4.1. Sinh phiếu điều tra dạng Word 1.4.2. Đặt các tham số phiếu trả lời 1.4.3. Sinh phiếu trả lời dạng Word 1.4.5. In 1.4.4. Chỉnh sửa 2.1. Quét phiếu trả lời 2.2. Nhận dạng phiếu trả lời 3.2. Lập báo cáo thống kê 3.3. Xem báo cáo thống kê 3.1. Hiển thị kết quả điều tra Hình 4.1. Biểu đồ phân rã chức năng 3.2.5. Đặc tả chi tiết các chức năng 3.2.5.1. Chức năng “1.1. Cập nhật phiếu điều tra” Khi muốn tổ chức một cuộc điều tra, người dùng vào chức năng này để tạo hoặc cập nhật phiếu điều tra mới, bao gồm: - Ghi tên phiếu điều tra - Ghi lý do, mục tiêu của phiếu điều tra 3.2.5.2. Chức năng “1.2. Cập nhật danh mục câu hỏi” Chức năng này cho phép người tổ chức điều tra - Cập nhật nội dung của các câu hỏi điều tra - Cập nhật loại câu hỏi, loại mặc định là thống kê Hoặc có thể bỏ qua một câu hỏi nào đó. Các câu hỏi đều phải khai báo bí danh. Mặc định câu hỏi thứ i sẽ được đặt bí danh là “qi”. Ta có thể sửa lại bí danh này. 3.2.5.3. Chức năng “1.3. Cập nhật các tùy chọn” Chức năng này cho phép cập nhật nội dung các tùy chọn của mỗi câu hỏi. Các câu hỏi có thể có số lượng các tùy chọn khác nhau. 3.2.5.4. Chức năng “1.4.1. Sinh phiếu điều tra” Sau khi đã cập nhật đủ các thông tin về phiếu điều tra, phiếu điều tra được sinh dưới dạng tài liệu Word. 3.2.5.5. Chức năng “1.4.2. Đặt các tham số phiếu trả lời” Cho phép người sử dụng hệ thống tùy chọn đặt các tham số liên quan đến phiếu trả lời. 3.2.5.6. Chức năng “1.4.3. Sinh phiếu trả lời” Sinh phiếu trả lời dưới dạng Word. 3.2.5.7. Chức năng “1.4.4. Chỉnh sửa” Trước khi in phiếu điều tra và phiếu trả lời, điều tra viên có thể sử dụng chức năng này để chỉnh sửa cách trình bày của các phiếu sao cho phù hợp với mong muốn. 3.2.5.8. Chức năng “1.4.5. In” In phiếu điều tra và phiếu trả lời. 3.2.5.9. Chức năng “2.1. Quét phiếu trả lời” Sau khi đã thực hiện điều tra, các phiếu trả lời được đọc vào máy qua scanner. Ảnh của phiếu trả lời được lưu lại vào một thư mục. 3.2.5.10. Chức năng “2.2. Nhận dạng phiếu trả lời” Thu nhận kết quả điều tra từ các ảnh của phiếu trả lời. Thông tin trả lời sẽ được lưu vào cơ sở dữ liệu. 3.2.5.11. Chức năng “3.1. Hiển thị kết quả điều tra” Chức năng hiển thị kết quả điều tra cho phép điều tra viên xem kết quả điều tra từ cơ sở dữ liệu. 3.2.5.12. Chức năng “3.2. Lập báo cáo thống kê” Chức năng lập báo cáo cho phép điều tra viên tạo các báo cáo thống kê. Các báo cáo được tạo dựa trên sự chọn lựa và phân loại các câu hỏi điều tra. Nếu không sử dụng chức năng này, các báo cáo sẽ được sinh mặc định dựa trên loại câu hỏi điều tra đã được cập nhật ở chức năng “Cập nhật danh mục câu hỏi”. 3.2.5.13. Chức năng “3.3. Xem báo cáo thống kê” Đây là chức năng sinh ra các báo cáo thông kê, chức năng này dựa trên sự lựa chọn, phân loại câu hỏi điều tra và kết quả điều tra. 3.2.6. Các hồ sơ tài liệu được sử dụng trong hệ thống Có hai hồ sơ tài liệu chính được sử dụng: Phiếu điều tra Phiếu trả lời Báo cáo thống kê 3.2.7. Bảng phân tích thực thể chức năng Chức năng Cách sử dụng Thực thể 1. Cập nhật phiếu điều tra CRUD Phiếu điều tra 2. Cập nhật danh mục câu hỏi CRUD Phiếu điều tra 3. Cập nhật các tùy chọn CRUD Phiếu điều tra 4. Sinh phiếu điều tra R Phiếu điều tra 5. Đặt các tham số phiếu trả lời R Phiếu điều tra C Các tham số phiếu trả lời 6. Sinh phiếu trả lời R Các tham số phiếu trả lời 7. Chỉnh sửa U Phiếu điều tra U Các tham số phiếu trả lời 8. In R Phiếu điều tra R Các tham số phiếu trả lời 9. Quét phiếu trả lời C Ảnh phiếu trả lời 10. Nhận dạng phiếu trả lời R Các tham số phiếu trả lời C Phiếu trả lời 11. Hiển thị kết quả điều tra R Phiếu trả lời 12. Lập báo cáo thống kê R Phiếu điều tra R Phiếu trả lời C Báo cáo 13. Xem báo cáo thống kê R Phiếu điều tra R Phiếu trả lời R Báo cáo Bảng 4.2. Bảng phân tích thực thể chức năng Cách sử dụng có thể là C, R, U hoặc D. C nếu chức năng tạo thực thể R nếu chức năng đọc dữ liệu từ thực thể U nếu chức năng thêm hoặc sửa dữ liệu từ thực thể D nếu chức năng xóa dữ liệu từ thực thể Từ bảng phân tích thực thể chức năng, ta thấy các chức năng đều cần thiết cho hệ thống. Các hồ sơ dữ liệu (thực thể) đều được sử dụng trong các hoạt động của chức năng. Không có thực thể thừa hay chức năng cô lập. 3.2.8. Biểu đồ luồng dữ liệu mức 0 1 Tạo phiếu điều tra 2 Đọc phiếu trả lời 3 Phân tích kết quả điều tra Người tổ chức điều tra nội dung phiếu điều tra Phiếu điều tra Phiếu trả lời Đối tượng điều tra Ảnh phiếu trả lời Các tham số của phiếu trả lời yêu cầu phân tích kết quả phân tích Hình 4.3. Biểu đồ luồng dữ liệu mức 0 3.2.9. Biểu đồ luồng dữ liệu mức 1 của tiến trình “1. Tạo phiếu điều tra” 1.1 Cập nhật phiếu điều tra 1.2 Cập nhật danh mục câu hỏi 1.3 Cập nhật các tùy chọn 1.4 In phiếu điều tra, phiếu trả lời Người tổ chức điều tra tên, mục tiêu phiếu điều tra danh mục câu hỏi các tùy chọn yêu cầu in, các tùy chọn hiệu chỉnh Phiếu điều tra Các tham số của phiếu trả lời Hình 4.4. Biểu đồ luồng dữ liệu mức 1 của tiến trình “1. Tạo phiếu điều tra” 3.2.10. Biểu đồ luồng dữ liệu mức 2 của tiến trình “1.4. In phiếu điều tra, phiếu trả lời” 1.4.1 Sinh phiếu điều tra dạng Word Người tổ chức điều tra Phiếu điều tra 1.4.3 Sinh phiếu trả lời dạng Word 1.4.4 Chỉnh sửa 1.4.5 In 1.4.2 Đặt các tham số phiếu trả lời Các tham số của phiếu trả lời yêu cầu in yêu cầu in, các tham số các tham số các tham số phiếu trả lời dạng Word phiếu điều tra dạng Word phiếu điều tra, phiếu trả lời phiếu Hình 4.5. Biểu đồ luồng dữ liệu mức 2 của tiến trình “1.4. In phiếu điều tra, phiếu trả lời” 3.2.11. Biểu đồ luồng dữ liệu mức 1 của tiến trình “2. Đọc phiếu trả lời” 5.1 Quét phiếu trả lời 5.2 Nhận dạng ảnh Các tham số của phiếu trả lời Phiếu trả lời Ảnh phiếu trả lời Đối tượng điều tra phiếu trả lời ảnh ảnh các tham số kết quả Hình 4.6. Biểu đồ luồng dữ liệu mức 1 của tiến trình “2. Đọc phiếu trả lời” 3.2.12. Biểu đồ luồng dữ liệu mức 1 của tiến trình “3. Phân tích kết quả điều tra” 3.1 Hiển thị kết quả điều tra 3.2 Lập báo cáo thống kê 3.3 Xem báo cáo thống kê Phiếu điều tra Phiếu trả lời Người tổ chức điều tra yêu cầu hiển thị kết quả hiển thị yêu cầu báo cáo kết quả báo cáo Báo cáo Phiếu điều tra Hình 4.7. Biểu đồ luồng dữ liệu mức 1 của tiến trình “3. Phân tích kết quả điều tra” Chương 4: Thực nghiệm tạo mẫu Ở những chương trước, chúng ta đã mô tả về các mẫu phiếu trả lời cùng các kỹ thuật nhận dạng phiếu trả lời. Chương 4 này, chúng ta sẽ đưa ra các kết quả thực nghiệm để tạo ra hai mẫu phiếu trả lời và quá trình thực nghiệm để nhận dạng phiếu trả lời thông qua các tham số. 4.1. Thực nghiệm tạo mẫu phiếu trả lời 4.1.1. Các yêu cầu của mẫu phiếu trả lời Mẫu phiếu trả lời được tạo ra phải thoả mãn một số yêu cầu sau: - Phù hợp với các cuộc điều tra xã hội. - Thuận lợi cho việc nhận dạng: thuận lợi cho việc nhận dạng ở đây được xét trên hai khía cạnh: + Độ chính xác của kết quả nhận dạng phiếu trả lời. + Thời gian để nhận dạng phiếu trả lời. - Thuận lợi cho các đáp án viên trong việc điền những câu trả lời vào phiếu trả lời. - Thẩm mĩ: Mẫu phiếu trả lời phải đơn giản, thoáng, dễ nhìn, không gây khó chịu cho các đáp án viên. Quá trình thực nghiệm tạo mẫu phiếu trả lời dưới đây sẽ giúp chúng ta tạo ra được những mẫu phiếu trả lời phù hợp với các yêu cầu nêu trên. 4.1.2. Thực nghiệm tạo mẫu Mẫu phiếu trả lời được xây dựng trên cỡ giấy A4. 4.1.2.1. Tạo đường thẳng dày Đây là đường thẳng đậm, dài, nằm ngang, được đặt ở đầu phiếu trả lời. Đường thẳng dày có vai trò quan trọng xây dựng mẫu: Định dạng của phiếu trả lời sẽ được xác định thông qua việc xác định đường thẳng dày. Khi tạo đường thẳng dày, chúng ta cần chú ý đến hai yếu tố: + Độ dài của đường thẳng + Độ dày của đường thẳng Về yếu tố độ dài, đường thẳng dày càng dài càng thuận lợi cho việc nhận dạng. Tuy vậy, nếu đường thẳng này dài quá hay ngắn quá sẽ ảnh hưởng đến tính thẩm mĩ của phiếu trả lời. Do vậy, chúng tôi đã thử và chọn chiều dài của đường thẳng dày là 15 cm. Về yếu tố độ dày: từ thuật toán nhận định dạng phiếu trả lời đã được trình bày ở chương 2, chúng ta biết rằng độ dày của đường thẳng dày có vai trò quan trọng trong việc nhận dạng đường thẳng dày. Bởi vì nếu độ dày này nhỏ thì sau khi qua một số bước như in ấn, phôtô, quét ảnh, đường thẳng này có thể bị mờ, ảnh hưởng lớn đến kết quả nhận dạng. Nhưng nếu đường thẳng này quá đậm thì cũng sẽ làm xấu phiếu trả lời. Chúng tôi đã tiến hành thực nghiệm và có kết quả như sau: Độ dày (pt) 2 2.5 3 3.5 4 4.5 Độ chính xác (%) 45 53 75 82 91 99 Với kết quả thực nghiệm như trên, chúng tôi chọn độ dày phù hợp của đường thẳng dày là 4.5 pt. 4.1.2.2. Tạo khung, các chữ cái và chữ số trong khung - Tạo khung: Việc tạo khung cần chú ý đến độ dày các cạnh của khung. Độ dày này ảnh hưởng đến độ chính xác khi nhận dạng khung. Quá trình thực nghiệm chạy thử cho thấy, nếu để độ dày các cạnh của khung ở mức nhỏ sẽ dẫn đến sau này khi phiếu được quét lên dưới dạng ảnh thì các cạnh này rất dễ bị mờ mất nét do một số nguyên nhân như: in ấn, phôtô, chất lượng scan…Chất lượng nhận dạng khung theo đó cũng giảm đi. Do đó độ dày này cũng phải đạt được chọn sao cho đảm bảo chất lượng nhận dạng. Độ dày (pt) 0.75 1.0 1.25 1.5 Độ chính xác (%) 60 69 87 99 Từ bảng thực nghiệm trên, ta có thể chọn độ dày các cạnh của khung là 1 pt. Để thuận tiện hơn cho việc thưc nghiệm, chúng ta sẽ thiết kế mẫu phiếu trả lời cho 45 câu hỏi, mỗi câu hỏi có 4 phương án trả lời. Như vậy thì số khung tối đa có thể trong phiếu trả lời là 3 khung. - Lựa chọn kiểu chữ, cỡ chữ, khoảng cách giữa các chữ. Việc lựa chọn cỡ chữ ở trong các khung trả lời phải tuân theo các tiêu chuẩn sau: + Dễ dàng sừ dụng cho đáp án viên. + Nét chữ phải đủ đậm, và đều để không bị mất nét nhiều do các tác động bên ngoài (chất lượng phôtô…). Trong trường hợp mẫu phiếu trả lời loại l, mỗi chữ cái được bao trong một vòng tròn nhỏ nên cỡ chữ phải nhỏ. Do đó ở đây chúng tôi chọn chữ là chữ ở định dạng font Time New Roman, cỡ 8, chữ hoa. Trong trường hợp mẫu phiếu trả lời loại 2, do các chữ cái đứng độc lập và do yêu cầu của thuật toán nhận dạng ô được tích mà các chữ cái này phải đủ đậm, đều nét. Sau khi lựa chọn nhiều font chữ khác nhau và chạy thủ nghiệm, chúng tôi chọn chữ ở định dạng font VnBlackH, cỡ 8. Đặc biệt đối với mẫu phiếu trả lời loại 2, do yêu cầu kỹ thuật của thuật toán nhận dạng từng dòng trong khung dựa vào vị trí của số thứ tự đầu dòng, nên các số thứ tự của từng câu trả lời cũng phải đậm, các số thứ tự từ 1 đến 9 phải được sửa thành 01 đến 09. Điều này không đòi hỏi đối với mẫu phiếu điều tra loại 1. - Khoảng cách giữa các dòng và các ô: Các khoảng cách này cũng phải được thiết kế phù hợp, hài hoà, vừa đảm bảo tính thẩm mĩ, vừa đảm bảo cho chất lượng nhận dạng. Sau nhiều lựa chọn, chúng tôi lựa chọn khoảng cách giữa các dòng là 1 cm, khoảng cách giữa các ô kề nhau cũng là 1 cm. Như vậy từ những lựa chọn trên, chúng ta có hai loại mẫu phiếu trả lời được thiết kế như sau: Hình 5.1. Mẫu phiếu trả lời loại 1 Hình 5.2. Mẫu phiếu điều tra loại 2 4.2. Thực nghiệm xác định ngưỡng trắng Ngưỡng trắng là ngưỡng để xác định xem một điểm ảnh là điểm đen hay điểm trắng. Nếu mức xám của điểm ảnh nhỏ hơn ngưỡng trắng thì điểm ảnh đó là điểm đen và ngược lại. Việc xác định giá trị của ngưỡng trắng có vai trò quan trọng trong việc loại bỏ các nhiễu do lỗi của máy quét gây ra. Nếu để ngưỡng này nhỏ thì chúng ta có thể bị mất một số điểm ảnh cần thiết. Còn nếu để ngưỡng trắng lớn thì sẽ có nhiều nhiễu, dẫn đến nhận dạng không chính xác kết quả phiếu điều tra. Từ thực nghiệm chạy thử, chúng tôi chọn ngưỡng trắng là 180. 4.3. Thực nghiệm xác định các ngưỡng nhận dạng đường thẳng dày Khi nhận dạng đường thẳng dày, chúng ta cần quan tâm đến hai ngưỡng là ngưỡng dài và ngưỡng nghiêng. 5.3.1. Ngưỡng dài Khi xác định một tập hợp điểm đen có phải là một đường thẳng hay không, ngưỡng dài sẽ là số điểm đen nhỏ nhất để có thể coi tập hợp điểm đen đó là một đường thẳng. Tỉ lệ độ dài (pt) 0.4 0.6 0.7 0.8 0.9 1 Độ chính xác (%) 0 22 43 85 99 0 Từ bảng thực nghiệm ta thấy: - Nếu để ngưỡng dài nhỏ kết quả nhận dạng sẽ sai bởi thuật toán nhận dạng khi đó sẽ nhận nhầm 1 tập hợp các chữ là một đường thẳng. - Nếu để ngưỡng dài này lớn, thì trong các ảnh mà đường thẳng dày bị mờ hay mất nét, thuật toán sẽ không tìm được đường thẳng dày nào. Do đó ở đây, chúng ta chọn ngưỡng dài là bằng 9/10 độ dài thực sự của đường thẳng dày. 4.3.2. Ngưỡng nghiêng Ta có nhận xét, khi scan các phiếu trả lời thành các file ảnh, độ nghiêng của các ảnh thường không vượt quá 20. Trong thuật toán, nếu chúng ta để ngưỡng này lớn thì thời gian chạy sẽ lâu, nhỏ thì sẽ nhận dạng sai đối với những phiếu bị nghiêng nhiều khi scan. Ngưỡng nghiêng 10 15 20 25 Thời gian tìm đường thẳng dày (s) 0.01 0.07 0.26 0.48 Từ bảng thực nghiệm trên, ta có thể chọn ngưỡng nghiêng phù hợp là 20. 4.4. Thực nghiệm xác định các ngưỡng nhận dạng khung Có hai ngưỡng cần quan tâm khi tiến hành nhận dạng khung: Ngưỡng xác định cạnh ngang trên, ngưỡng xác định các cạnh dọc. 4.4.1. Ngưỡng xác định cạnh ngang trên Ngưỡng xác định cạnh ngang trên là tỉ lệ độ dài nhỏ nhất cho phép xác định một tập hợp điểm đen có là cạnh ngang trê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 (%) 65 78 89 99 0 Từ bảng ta thấy: - Nếu để ngưỡng này nhỏ, khung sẽ bị xác định sai do nhận dạng nhầm các tập hợp chữ thành đường thẳng. - Nếu để ngưỡng này lớn, thì khi ảnh bị mờ, sẽ không nhận dạng được đường thẳng nằm ngang trên của khung. - Ta có thể chọn giá trị của ngưỡng xác định đường thẳng ngang là = số lượng khung * độ rộng khung * 0.9. 4.4.2. Ngưỡng xác định các cạnh bên 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 (%) 50 80 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. + Từ bảng trên, ta có thể chọn giá trị của ngưỡng này là 8 pixel. - 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 408 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 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 50 60 Độ chính xác (%) 72 86 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 - Ngưỡng xác định bắt đầu một 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 (%) 50 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 82 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 ô. - 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 20 25 Độ chính xác 50 70 99 70 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 - Xác định ngưỡng số điểm đen tối thiểu trên 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 mô tả ví dụ về nhận dạng đường thẳng dày. 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% 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% Hình 5.7. Tách ô 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 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át triển và hoàn thiện các chức năng khác của hệ thống tổ chức điều tra xã hội. 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 { int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; int alphaChannel; int depth; /* pixel depth in bits */ char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; /* Alignment of image rows (4 or 8) */ int width; /* image width in pixels */ int height; /* image height in pixels */ struct _IplROI *roi;/* poniter to ROI if any */ struct _IplImage *maskROI; /* must be NULL in OpenCV */ void *imageId; /* ditto */ struct _IplTileInfo *tileInfo; /* ditto */ int imageSize; /* useful size in bytes */ char *imageData; /* pointer to aligned image data */ int widthStep; /* size of aligned image row in bytes */ int BorderMode[4]; /* border completion mode, ignored by OpenCV */ int BorderConst[4]; /* ditto */ char *imageDataOrigin; /* pointer to full, nonaligned image */ }IplImage; Cấu trúc IplImage có nguồn gốc từ thư viện IPL (Image Processing Library). Ở đây chỉ mô tả một số trường hay dùng trong ứng dụng: width và height là độ rộng và cao của ảnh tính theo pixel. depth lưu thông tin về số bit dùng để lưu 1 pixel. Giá trị của depth có thể là IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, IPL_DEPTH_32S hoặc IPL_DEPTH_32F. widthStep là số byte nằm giữa các điểm có cùng cột và ở hai hàng kề nhau. Trường width không phải là khoảng cách giữa hai hàng kề nhau, bởi vì các dòng có thể được sắp cho thẳng hàng bằng cách thêm các khoảng trống giữa điểm cuối của dòng thứ i và điểm đầu của dòng (i + 1). Điều này cốt để tốc độ xử lý ảnh nhanh hơn. imageSize là số kích cỡ của ảnh tính theo byte khi các dòng đã được căn. Thực chất imageSize = widthStep x height. imageData là con trỏ tới dữ liệu đã được căn của ảnh. imageDataOrigin là con trỏ tới dữ liệu chưa được căn. 2. Cấu trúc CvPoint typedef struct CvPoint { int x; /* x-coordinate, usually zero-based */ int y; /* y-coordinate, usually zero-based */ } CvPoint; Cấu trúc CvPoint mô tả tọa độ trong không gian 2 chiều. 3. Hàm cvLoadImage Đọc ảnh từ file IplImage* cvLoadImage( const char* filename, int iscolor CV_DEFAULT(1)); filename tên file ảnh cần nạp. iscolor Nếu > 0, ảnh được nạp sẽ luôn luôn có 3 kênh (channel).; Nếu 0, ảnh được nạp sẽ luôn có 1 kênh; Nếu < 0, ảnh được nạp với số kênh phụ thuộc vào file ảnh. Hàm cvLoadImage đọc một ảnh từ một file và trả về con trỏ tới ảnh được. Hiện tại, OpenCV hỗ trợ những loại ảnh sau: Windows bitmaps - BMP, DIB; JPEG files - JPEG, JPG, JPE; Portable Network Graphics - PNG; Portable image format - PBM, PGM, PPM; Sun rasters - SR, RAS; TIFF files - TIFF, TIF. 3. Hàm cvSaveImage Ghi ảnh ra file int cvSaveImage(const char* filename, const CvArr* image ); filename Tên của file image Ảnh cần ghi 4. Hàm cvNamedWindow Tạo một cửa sổ hiển thị ảnh int cvNamedWindow( const char* name, unsigned long flags ); name Tên cửa sổ, được dùng như định danh của cửa sổ và xuất hiện trên tiêu đề cửa sổ. flags Định nghĩa các thuộc tính của cửa sổ. Đặt là CV_WINDOW_AUTOSIZE cho phép tự động thay đổi kích thước cửa sổ (resize), ngược lại đặt là 0. 5. Hàm cvDestroyWindow Giải phóng cửa sổ void cvDestroyWindow( const char* name ); name Tên cửa sổ cần giải phóng. 6. Hàm cvShowImage Hiển thị ảnh trong một cửa sổ xác định. void cvShowImage( const char* name, const CvArr* image ); name Tên cửa sổ image Ảnh cần hiển thị Tài liệu tham khảo [1] Lương Mạnh Bá, Nguyễn Thanh Thủy. Nhập môn xử lý ảnh số. Nhà xuất bản khoa học và kỹ thuật [2] Ian T. Young, Jan J.Gerbrands, Lucas J. van Vliet. Image Processing Fundamentals. [3] John C. Russ. The image processing handbook, third edition. CRC Press. [4] William K. Pratt. Digital Image Processing: PIKS Inside, Third Edition. [5] Jaroslav Borovieka. Circle detection using Hough transforms documentation. [6] Ali Ajdari Rad, Karim Faez, Navid Qaragozlou. Fast circle detection using Gradient pair vectors. [7] Philippe Crochat, Daniel Franklin. Back-Progagation Neural Network Tutorial. Mục lục Lời nói đầu……… ……………..……………………... 1 CHƯƠNG 1. Các vấn đề cơ bản trong xử lý ảnh…………………….. 4 1.1. Tổng quan về một hệ thống xử lý ảnh……………………….. 4 1.2. Các vấn đề cơ bản trong xử lý ảnh…………………………… 5 1.2.1. Một số khái niệm ………………………………………….. 5 1.2.2. Biểu diễn ảnh………………………………………………… 6 1.2.3. Tăng cường ảnh – khôi phục ảnh…….……………………… 7 1.2.4. Nhận dạng ảnh……………………………………………….. 7 1.3. Thu nhận ảnh……………………………………………………. 8 1.3.1. Thiết bị thu nhận ảnh………………………………………… 8 1.3.2. Biểu diễn màu………………………………………………... 9 1.3.3. Hệ tọa độ màu……………………………………………….. 9 1.4. Các kỹ thuật xử lý ảnh cơ bản…………………………………. 10 1.4.1. Nhị phân hóa………………………………………………... 10 1.4.2. Khử nhiễu…………………………………………………... 11 1.4.3. Làm trơn biên, lấp đầy chỗ trống…………………………… 11 1.4.4. Đường thẳng Hough………………………………………… 12 1.4.5. Chỉnh độ nghiêng của ảnh…………………………………… 14 CHƯƠNG 2: Nhận dạng phiếu điều tra………………………………. 15 2.1. Mô tả bài toán………………………………………………….. 15 2.2. Thiết kế mẫu phiếu điều tra…………………………………… 15 2.3. Kỹ thuật nhận dạng chung phiếu điều tra……………………. 19 2.3.1. Các tham số cần thiết……………………………………….. 19 2.3.2. Nhận dạng đường thẳng dày……………………………….. 20 2.3.3. Chỉnh độ nghiêng…………………………………………… 21 2.3.4. Nhận dạng khung…………………………………………… 23 2.4. Kĩ thuật nhận dạng mẫu phiếu trả lời loại 1…………………… 24 2.4.1. Tách dòng…………………………………………………… 24 2.4.2. Tách ô………………………………………………………. 25 2.4.3. Nhận dạng ô được chọn……………………………………. 26 2.5. Kĩ thuật nhận dạng mẫu phiếu trả lời loại 2………………….. 27 2.5.1. Tách dòng………………………………………………….. 27 2.5.2. Tách ô……………………………………………………… 28 2.5.3. Nhận dạng các ô được chọn……………………………….. 29 CHƯƠNG 3:Thử nghiệm xây dựng phần mềm tổ chức điều tra…… 31 3.1. Mô tả một cuộc điều tra………………………………………. 31 3.1.1. Xác định mục tiêu điều tra…………………………………. 31 3.1.2. Phân loại câu hỏi điều tra…………………………………… 32 3.2. Xây dựng các chức năng của hệ thống tổ chức điều tra…….. 34 3.2.1. Mục tiêu của hệ thống tổ chức điều tra…………………….. 34 3.2.2. Yêu cầu kỹ thuật…………………………………………… 34 3.2.3. Các yêu cầu chức năng đối với hệ thống………………….. 35 3.2.4. Biểu đồ phân rã chức năng………………………………… 37 3.2.5. Đặc tả chi tiết các chức năng ……………………………. 39 3.2.6. Các hồ sơ tài liệu được sử dụng trong hệ thống…………… 40 3.2 .7. Bảng phân tích thực thể chức năng……………………….. 41 3.2.8. Biểu đồ luồng dữ liệu mức 0………………………………. 43 3.2.9. Biểu đồ luồng dữ liệu mức 1 của tiến trình “1. Tạo phiếu điều tra”………………………………………………… 44 3.2.10. Biểu đồ luồng dữ liệu mức 2 của tiến trình “1.4. In phiếu điều tra, phiếu .trả lời”…………………………………… 45 3.2.11. Biểu đồ luồng dữ liệu mức 1 của tiến trình “2. Đọc phiếu trả lời 46 3.2.12. Biểu đồ luồng dữ liệu mức 1 của tiến trình “3. Phân tích kết quả điều ra”............................................................................................ 46 CHƯƠNG 4: Thực nghiệm tạo mẫu .……………………………….. 47 4.1. Thực nghiệm tạo mẫu phiếu trả lời…………………………. 47 4.1.1. Các yêu cầu của mẫu phiếu trả lời……………………….. 47 4.1.2. Thực nghiệm tạo mẫu…………………………………….. 48 4.2. Thực nghiệm xác định ngưỡng trắng………………………. 52 4.3. Thực nghiệm xác định các ngưỡng nhận dạng đường thẳng dày 53 4.3.1. Ngưỡng dài………………………………………………… 53 4.3.2. Ngưỡng nghiêng…………………………………………… 54 4.4. Thực nghiệm xác định các ngưỡng nhận dạng các khung…. 54 4.4.1. Ngưỡng xác định cạnh ngang trên………………………… 54 4.4.2. Ngưỡng xác định các cạnh bên…………………………… 55 4.5. Thực nghiệm nhận dạng trên mẫu phiếu trả lời loại 1……… 55 4.5.1. Nhận dạng dòng……………………………………………. 55 4.5.2. Nhận dạng ô……………………………………………….. 56 4.5.3. Nhận dạng ô được tích……………………………………… 57 4.6. Thực nghiệm nhận dạng trên phiếu trả lời loại 2…………… 57 4.6.1. Nhận dạng dòng…………………………………………… 57 4.6.2. Thực nghiệm xác định ô…………………………………… 59 4.6.3. Nhận dạng ô được tích…………………………………….. 59 4.7 Thực nghiệm nhận dạng hai loại mẫu phiếu trả lời………… 61 4.7.1. Thực nghiệm nhận dạng đường thẳng dày………………… 61 4.7.2. Thực nghiệm xoay ảnh……………………………………. 62 4.7.3. Thực nghiệm nhận dạng các khung………………………. 62 4.7.4. Thực nghiệm nhận dạng trên mẫu phiếu trả lời loại 1…… 63 4.7.5 Thực nghiệm nhận dạng trên mẫu phiếu trả lời loại 2…… 66 4.8. So sánh kết quả thực nghiệm giữa hai loại mẫu phiếu trả lời 68 CHƯƠNG 5: Kết luận………………………………………..……… 70 Phụ lục……………………………………………………….………. 71 Tài liêụ tham khảo…………………………………………………… 75

Các file đính kèm theo tài liệu này:

  • docXử lý tự động phiếu điều tra.doc