Hiện nay, công nghệ thông tin ngày càng gắn liền và từng bước đi sâu vào thói quen của con người. Ứng dụng công nghệ thông tin vào các lĩnh vực đời sống – xã hội không phải là điều quá xa lạ đối với các tổ chức, doanh nghiệp ở Việt Nam. Đi tiên phong trong số đó phải kể đến lĩnh vực giáo dục.Giáo dục đang từng bước đổi mới về mặt quản lý thông tin. Bằng chứng là hàng loạt hệ thống quản lý thông tin như: Điểm, học phần, môn học, thời khóa biểu, lịch giảng dạy, văn thư… Đã và đang được sử dụng. Tuy nhiên, vẫn còn thiếu một số chương trình chấm điểm, tổng hợp điểm từ bài thi trắc nghiệm. Giáo viên giảng viên phải thường xuyên thực hiện bằng phương pháp chấm tay thủ công tốn nhiều thời gian, công sức và có thể sai sót.Nhằm giải quyết các vấn đề trên, tôi đề xuất đề tài nghiên cứu và phát triển ứng dụng “Quản lý điểm kết hợp với máy chấm thi trắc nghiệm tự động AutoMark”. Chương trình này sẽ thay thế người giáo viên – giảng viên thực hiện công việc chấm thi trắc nghiệm đơn giản và hiệu quả.
Trang 1LỜI CẢM ƠN
Hoàn thành Luận văn Tốt nghiệp Đại học đối với em là niềm tự hào lớn lao mang nhiều ý nghĩa Đó không đơn giản là cố gắng của bản thân, mà còn có sự chỉ dẫn nhiệt tình của quý thầy cô, sự giúp đỡ từ bạn bè và động lực từ gia đình
Đầu tiên, em xin gửi lời cảm ơn chân thành đến PGS-TS Trần Cao Đệ Thầy không chỉ hướng dẫn tận tâm mà còn rất nhiệt tình Chính điều đó đã tạo niềm tin, động lực cho em có thể hoàn thành tốt đề tài luận văn của mình
Cảm ơn cha mẹ là nguồn động lực luôn động viên, khích lệ mỗi khi con gặp khó khăn Cảm ơn những người bạn luôn giúp đỡ và ủng hộ mình trong thời gian qua
Cuối cùng, xin chân thành cảm ơn các thầy cô, những người đã truyền đạt cho em bao kiến thức quý báu trong suốt bốn năm học tập dưới mái trường Đại học Cần Thơ Kính chúc quý thầy cô dồi dào sức khỏe và thành công trong công việc, cuộc sống
Dù đã rất cố gắng hoàn thành đề tài một cách tốt nhất Nhưng sai sót là điều không thể tránh khỏi Rất mong nhận được những ý kiến đóng góp của thầy
cô và các bạn để em có thể thực hiện các đồ án khác tốt hơn
Cần Thơ, ngày 20 tháng 04 năm 2014
Sinh viên thực hiện
Ngô Giang Thanh
Trang 2NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
Cần Thơ, ngày 07 tháng 05 năm 2014
Cán bộ hướng dẫn
PGS-TS Trần Cao Đệ
Trang 3NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN
Cần Thơ, ngày 07 tháng 05 năm 2014
Cán bộ phản biện
Ths Nguyễn Công Danh
Trang 4NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN
Cần Thơ, ngày 07 tháng 05 năm 2014
Cán bộ phản biện
Ks Trần Văn Hoàng
Trang 5MỤC LỤC
LỜI CẢM ƠN 1
NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN 2
NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN 3
NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN 4
MỤC LỤC 5
DANH MỤC HÌNH 9
BẢNG CHÚ GIẢI THUẬT NGỮ 11
TÓM TẮT 13
ABSTRACT 14
TỪ KHÓA 15
CHƯƠNG 1: TỔNG QUAN 16
1.1 ĐẶT VẤN ĐỀ NGHIÊN CỨU 16
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 17
1.3 PHẠM VI VẤN ĐỀ 17
1.4 PHƯƠNG PHÁP NGHIÊN CỨU / HƯỚNG GIẢI QUYẾT VẤN ĐỀ 17 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 19
2.1 XỬ LÝ ẢNH 19
2.1.1 Ảnh số là gì[1]? 19
2.1.2 Xử lý ảnh là gì? 19
2.1.3 Điểm ảnh và điểm ảnh lân cận[4] 20
2.1.4 Xử lý lân cận[5] 21
2.2 NGÔN NGỮ LẬP TRÌNH C# 21
2.2.1 C# là gì[6]? 21
2.2.2 Microsoft Visual Studio[7] 21
2.2.3 Mô hình lập trình ba lớp 22
2.3 MÔ HÌNH CLIENT – SERVER 23
2.3.1 Mô hình Client – Server là gì[8]? 23
2.3.2 Máy ảo[9]? 24
2.3.3 Microsoft SQL Server 25
Trang 62.3.4 Stored Procedure[10] 26
2.4 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG THÔNG TIN 27
2.4.1 Phân tích và thiết kế hệ thống thông tin 27
2.4.2 Data Flow Diagram[12] 27
2.4.3 Conceptual Data Model[13] 28
2.4.4 Physical Data Model[14] 29
2.4.5 Công cụ Sysbase PowerDesigner[15] 29
CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 30
3.1 KẾ HOẠCH THỰC HIỆN ĐỀ TÀI 30
3.1.1 Xác định các công việc thực hiện 30
3.1.2 Đồ thị phân chia thời gian thực hiện 31
3.2 TÌM HIỂU GIẢI THUẬT XỬ LÝ ẢNH[16] 31
3.2.1 Giới thiệu chung 31
3.2.2 Các thành phần trong bài thi trắc nghiệm 32
3.2.3 Giải thuật chung 33
3.2.4 Lưu đồ các giải thuật 34
3.3 ĐẶC TẢ HỆ THỐNG 45
3.3.1 Giới thiệu chung 45
3.3.2 Mô tả tổng quan 45
3.3.3 Sơ đồ chức năng hệ thống 48
3.3.4 Nhóm người sử dụng 48
3.3.5 Môi trường vận hành 48
3.3.6 Yêu cầu về an toàn – bảo mật – tin cậy 49
3.3.7 Yêu cầu về giao diện 49
3.3.8 Giao tiếp phần cứng 49
3.3.9 Giao tiếp truyền thông tin 49
3.3.10 Chức năng đăng nhập 49
3.3.11 Chức năng cập nhật đơn vị 50
3.3.12 Chức năng cập nhật thí sinh 51
3.3.13 Chức năng cập nhật môn thi 51
Trang 73.3.14 Chức năng cập nhật đề thi 52
3.3.15 Chức năng xếp phòng thi 53
3.3.16 Chức năng xem điểm thi 53
3.3.17 Chức năng xem danh sách vắng thi 54
3.3.18 Chức năng xem đáp án 55
3.3.19 Chức năng phổ điểm 55
3.3.20 Chức năng thống kê số thí sinh 56
3.3.21 Chức năng in ấn danh sách thí sinh 57
3.3.22 Chức năng in ấn kết quả thi 57
3.3.23 Chức năng in ấn bài chưa chấm 58
3.3.24 Chức năng in ấn kết quả ra tệp excel 58
3.3.25 Chức năng chấm bài tự động 59
3.3.26 Chức năng duyệt lại bài đã chấm 59
3.3.27 Chức năng duyệt lại bài chưa chấm 60
3.3.28 Chức năng kiểm tra đáp án 61
3.3.29 Chức năng xóa bài làm không đáp án 61
3.3.30 Chức năng nhập dữ liệu từ tệp excel 62
3.3.31 Chức năng sao lưu và phục hồi dữ liệu 62
3.3.32 Chức năng đổi mật khẩu 63
3.3.33 Bổ sung chức năng 63
3.3.34 Bảng sắp xếp thứ tự các chức năng 65
3.4 THIẾT KẾ HỆ THỐNG 67
3.4.1 Giới thiệu chung 67
3.4.2 Kiến trúc hệ thống 68
3.4.3 Lưu đồ dòng dữ liệu 68
3.4.4 Mô hình dữ liệu mức quan niệm 75
3.4.5 Mô hình dữ liệu mức vật lý 76
3.4.6 Từ điển dữ liệu 76
3.4.7 Thiết kế giao diện chức năng 82
KẾT LUẬN VÀ ĐỀ NGHỊ 165
Trang 81 KẾT QUẢ ĐẠT ĐƯỢC 165
a Lý thuyết 165
b Chương trình 165
2 NHỮNG HẠN CHẾ VÀ ĐỀ XUẤT HƯỚNG PHÁT TRIỂN 166
a Những hạn chế 166
b Đề xuất hướng giải quyết và phát triển 166
PHỤ LỤC 168
TÀI LIỆU THAM KHẢO 169
Trang 9DANH MỤC HÌNH
Hình 1: Ảnh số 19
Hình 2: Quá trình xử lý ảnh[3] 19
Hình 3: Điểm ảnh và điểm lân cận 20
Hình 4: Phép xử lý điểm ảnh 20
Hình 5: Phân ngưỡng ảnh 20
Hình 6: Xử lý lân cận 21
Hình 7: Trượt/di chuyển bộ lọc trên ảnh số 21
Hình 8: Các thành phần mô hình ba lớp 22
Hình 9: Mô hình vận hành ba lớp 23
Hình 10: Minh họa về mô hình Client – Server 24
Hình 11: Mô hình phân cấp DFD 28
Hình 12: Đồ thị phân chia công việc theo thời gian 31
Hình 13: Các thành phần trong bài thi trắc nghiệm 32
Hình 14: Các thành phần trong giải thuật 34
Hình 15: Lưu đô già̀ ̀ ̉i thuật phân ngưỡng ảnh 35
Hình 16: Lưu đồ giải thuật phát hiện điểm TT hoặc PD 37
Hình 17: Lưu đồ giải thuật quét tìm vị trí câu trả lời 39
Hình 18: Lưu đồ giải thuật tìm vị trí SBD 41
Hình 19: Lưu đồ giải thuật tìm vị trí mã đề 42
Hình 20: Lưu đồ giải thuật nhận diện điểm đen tại vị trí (x,y) 44
Hình 21: Sơ đồ chức năng hệ thống 48
Hình 22: Mô hình Client – Server 68
Hình 23: DFD cấp 0 69
Hình 24: DFD cấp 1 70
Hình 25: DFD cấp 2 ô xử lý cập nhật thông tin 71
Hình 26: DFD cấp 2 ô xử lý xem kết quả thi 72
Hình 27: DFD cấp 2 ô xử lý in ấn – thống kê 73
Hình 28: DFD cấp 2 ô xử lý chấm thi 73
Hình 29: DFD cấp 2 ô xử lý tiện ích 74
Hình 30: Mô hình dữ liệu mức quan niệm của AutoMark 75
Hình 31: Mô hình dữ liệu mức vật lý của AutoMark 76
Hình 32: Giao diện đăng nhập 82
Hình 33: Giao diện đổi ngôn ngữ Anh - Việt 84
Hình 34: Giao diện cập nhật môn thi 86
Hình 35: Giao diện cập nhật đơn vị 89
Hình 36: Giao diện xếp phòng thi 91
Hình 37: Giao diện xem đáp án 94
Hình 38: Giao diện cập nhật hệ số điểm cho câu đáp án 94
Hình 39: Giao diện cập nhật thí sinh 98
Hình 40: Giao diện cập nhật đề thi 102
Hình 41: Giao diện xem danh sách vắng thi 106
Hình 42: Giao diện in danh sách vắng thi 106
Hình 43: Mẫu in danh sách vắng thi 107
Hình 44: Giao diện in danh sách thí sinh 110
Trang 10Hình 45: Mẫu in danh sách dự thi 111
Hình 46: Mẫu in danh sách ký nộp 111
Hình 47: Giao diện in kết quả thi 114
Hình 48: Mẫu phiếu in kết quả theo lớp 115
Hình 49: Mẫu phiếu in kết quả thi theo SBD 116
Hình 50: Mẫu phiếu in kết quả thi theo phòng – môn 116
Hình 51: Giao diện in ấn bài chưa chấm 119
Hình 52: Mẫu in bài chưa chấm 119
Hình 53: Giao diện duyệt bài đã chấm 121
Hình 54: Giao diện duyệt lại chi tiết bài thi 122
Hình 55: Giao diện xem kết quả các bài thi 126
Hình 56: Giao diện xem chi tiết kết quả thi thí sinh 126
Hình 57: Giao diện chấm bài tự động 130
Hình 58: Giao diện phổ điểm 133
Hình 59: Mẫu phổ điểm 134
Hình 60: Mẫu thống kê kết quả thi 134
Hình 61: Giao diện thống kê số thí sinh 137
Hình 62: Mẫu thống kê số thí sinh theo mã đề 137
Hình 63: Mẫu thống kê số thí sinh theo môn 138
Hình 64: Giao diện in ấn kết quả ra tệp excel 140
Hình 65: Giao diện duyệt bài chưa chấm 142
Hình 66: Giao diện xóa bài làm không đáp án 145
Hình 67: Giao diện đổi mật khẩu 147
Hình 68: Giao diện các đề thi không đáp án 149
Hình 69: Giao diện nhập dữ liệu từ tệp excel 151
Hình 70: Giao diện sao lưu dữ liệu 155
Hình 71: Giao diện phục hồi dữ liệu 155
Hình 72: Giao diện chọn thư mục chứa hình ảnh bài thi 157
Hình 73: Giao diện chọn thư mục chứa hình ảnh đáp án 160
Hình 74: Giao diện cấu hình kết nối 162
Trang 11BẢNG CHÚ GIẢI THUẬT NGỮ
1 *.DLL
DLL là viết tắt của Dynamic Link
Library. Tệp *.dll là tệp chứa thư viện liên kết động, có tính chất khả chuyển
Sử dụng trên hệ điều hành Windows
2 *.ISO
ISO là viết tắt của The International
Organization for Standardization Tệp
*.ISO theo chuẩn ISO 9660 về ghi thu
dữ liệu trên đĩa CD-ROM
3 *.XML XML là viết tắt của eXtensible Markup Language. Tệp *.xml là tệp chứa nội
dung ngôn ngữ đánh dấu mở rộng
7 C++, Visual Basic, Delphi,
Pascal, Java Là những ngôn ngữ lập trình khác nhau
9 Client – Server
(Khách - Chủ)
Kiến trúc phần mềm theo hướng một bên chịu trách nhiệm đáp ứng (server) cho bên sử dụng (client)
10 CNTT & TT Khoa Công nghệ Thông tin và Truyền thông, trường Đại học Cần Thơ
11 CPU
Central Processing Unit Bộ xử lý trung tâm, thành phần quan trọng nhất của máy
vi tính
14 DFD Data Flow Diagramdòng chảy dữ liệu trong chương trình Lưu đồ thể hiện
Trang 1216 GV Giáo viên – giảng viên
18 HQTCSDL Hệ quản trị cơ sở dữ liệu quan hệ
21 MSSQLS2K8R2 Microsoft SQL Sever 2008 R2.
27 PTTKHTTT Phân tích và thiết kế hệ thống thông tin
30 RGB Mô hình màu phát xạ, được định dạng bởi ba đơn vị màu: Red – Green - Blue
trình hướng sự kiện
Trang 13TÓM TẮT
Hiện nay, công nghệ thông tin ngày càng gắn liền và từng bước đi sâu vào thói quen của con người Ứng dụng công nghệ thông tin vào các lĩnh vực đời sống – xã hội không phải là điều quá xa lạ đối với các tổ chức, doanh nghiệp ở Việt Nam Đi tiên phong trong số đó phải kể đến lĩnh vực giáo dục
Giáo dục đang từng bước đổi mới về mặt quản lý thông tin Bằng chứng là hàng loạt hệ thống quản lý thông tin như: Điểm, học phần, môn học, thời khóa biểu, lịch giảng dạy, văn thư… Đã và đang được sử dụng Tuy nhiên, vẫn còn thiếu một số chương trình chấm điểm, tổng hợp điểm từ bài thi trắc nghiệm Giáo viên - giảng viên phải thường xuyên thực hiện bằng phương pháp chấm tay thủ công tốn nhiều thời gian, công sức và có thể sai sót
Nhằm giải quyết các vấn đề trên, tôi đề xuất đề tài nghiên cứu và phát triển ứng dụng “Quản lý điểm kết hợp với máy chấm thi trắc nghiệm tự động
AutoMark” Chương trình này sẽ thay thế người giáo viên – giảng viên thực hiện
công việc chấm thi trắc nghiệm đơn giản và hiệu quả
Trang 14ABSTRACT
Currently, technology is increasingly associated with information and goes into people's habits step by step The applications of information technology in the fields of social life are not exactly abnormal for organizations and enterprises in Vietnam Its applications pioneering in the field of education must be included
Education has been gradually changing in terms of information management The proof is a series of systems of information management, consisting of management of scores, modules, courses, timetables, teaching schedules, documents and so on, has been being used However, there are still some programs for grading and summarizing scores from multiple-choice tests staying in lack Lectures and teachers get those tasks done by manual effort and time-consuming manners in relation to potentially arisen mistakes
To address these issues, I propose a research paper on the development of
applications “Software for score management in combination with automated
marking machine – AutoMark” This program prospectively replaces teachers
as well as lecturers’ manual marking method simply and effectively
Trang 16CHƯƠNG 1: TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ NGHIÊN CỨU
Hiện nay, nước ta đang từng bước đổi mới phương pháp giáo dục cũng như cách thức trong giảng dạy, kiểm tra ở tất cả các cấp học Gắn liền với quá trình đổi mới luôn nảy sinh các khó khăn chủ quan, khách quan về nhiều mặt Một trong những mặt đó là quản lý bài thi, chấm thi với hình thức trắc nghiệm
Khó khăn thứ nhất, GV tốn rất nhiều công sức và thời gian để thực hiện công việc lớn nhưng mang tính chất rập khuôn, tuần tự Không kể đến quá trình cho đề và tổ chức kiểm tra - thi thì các công việc còn lại như: Chấm bài thi, tổng hợp điểm đều mang tính chất lặp đi lặp lại theo khuôn mẫu nhất định Điều đó gây nhàm chán; quan trọng hơn làm mất thời gian, công sức Một ví dụ điển hình, việc chấm thi hàng nghìn, chục nghìn bài thi trắc nghiệm của kỳ thi tuyển sinh Đại học các năm
Khó khăn thứ hai, chấm thi trắc nghiệm yêu cầu độ chính xác tuyệt đối So với với tự luận, trắc nghiệm mang tính khách quan cao hơn trong chấm thi Và cũng vì thế vai trò của người chấm thi sẽ giảm đi Công việc của họ chỉ là sự lặp
đi lặp lại đến mức nhàm chán; đến thời điểm nào đó sai sót là điều không thể tránh khỏi
Cuối cùng, lưu giữ số lượng hàng nghìn đến trăm nghìn bài thi trong không gian một tủ, một phòng, một tòa nhà là điều hoàn toàn có thể Nhưng đảm bảo về thời gian lâu dài, phòng tránh các rủi ro tiềm ẩn hay tìm kiếm ngay lập tức lại là nghi vấn Thay vào đó, ta có thể số hóa và lưu giữ bài thi trong ổ cứng nhỏ gọn với nhiều bản sao lưu dự phòng; chỉ mất vài giây để tìm kiếm một bài thi
Với những khó khăn đã trình bày, ta đi đến được một phương pháp giải quyết; số hóa bài thi, chấm thi và tổng hợp điểm trên máy tính Cụ thể hơn, nghiên
cứu và phát triển ứng dụng “Quản lý điểm kết hợp với máy chấm thi trắc
nghiệm tự động AutoMark”.
Trang 171.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Trên thực tế, đã có sản phẩm AutoMark do PGS-TS Trần Cao Đệ - khoa CNTT & TT – trường Đại học Cần Thơ, nghiên cứu và xây dựng năm 2007 Phần mềm được viết bằng ngôn ngữ VB Sử dụng CSDL Microsoft Access
2003 Phần mềm tương thích trên các hệ điều hành Windows XP/7/8
Phần mềm có nhiều ưu điểm như: Chấm trên các loại giấy thông dụng, độ chính xác cao, dễ thao tác, dễ dàng cài đặt Ngoài ra, tốc độ quét và chấm ảnh bài thi nhanh; truy xuất, lưu trữ dữ liệu nhanh
Hiện nay, phần mềm đã được sử dụng để chấm thi trắc nghiệm trong một số môn học của khoa CNTT & TT Phần mềm hiện có hai phiên bản, bản dùng thử với số lượng ảnh quét giới hạn; bản thương mại với đầy đủ các chức năng
1.3 PHẠM VI VẤN ĐỀ
Thứ nhất, phải nghiên cứu và cài đặt được giải thuật quét nhận diện trên ảnh bài thi trắc nghiệm Sau đó, lưu dữ liệu đã quét được vào CSDL
Thứ hai, quản lý được thông tin thí sinh, đề thi, bài thi, đáp án Thực hiện
in ấn thống kê, báo cáo đầy đủ Phải đảm bảo tính chính xác đối với điểm thi của thí sinh
Thứ ba, sử dụng ngôn ngữ lập trình C# để cài đặt chương trình; sử dụng HQTCSDL Microsoft SQL Server 2008 R2 (MSSQLS2K8R2) để lưu trữ
Thứ tư, giao diện thân thiện, dễ sử dụng Tối ưu hóa các thao tác trên bàn phím, chuột
1.4 PHƯƠNG PHÁP NGHIÊN CỨU / HƯỚNG GIẢI QUYẾT VẤN ĐỀ
Sau khi tìm hiểu ta thấy vấn đề tập trung chủ yếu vào các nội dung sau:
- Nghiên cứu và cài đặt giải thuật nhận diện điểm ảnh
- Xây dựng mô hình CSDL để quản lý thông tin thí sinh, bài thi,
- Xây dựng kiến trúc phần mềm
Trang 18- Cài đặt chương trình
- Kiểm thử chương trình với số lượng lớn các ảnh bài thi trắc nghiệm
Để thực hiện được các nội dung nêu trên ta cần:
- Có kiến thức cơ bản về phân tích và xử lý ảnh
- Kiến thức về quy trình phát triển trong Công nghệ Phần mềm
- Nắm vững kỹ năng PTTKHTTT
- Có kiến thức về mô hình 3 lớp, kiến trúc Client – Server
- Có khả năng sử dụng ngôn ngữ lập trình C# với VS 2010
- Có khả năng sử dụng câu lệnh truy vấn SQL trên MSSQLS2K8R2 Tìm hiểu về quá trình kiểm tra - thi, đánh giá điểm dưới hình thức trắc nghiệm tại trường Đại học Cần Thơ (cụ thể khoa CNTT & TT)
Trang 19CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Hình 2: Quá trình xử lý ảnh [3]
Trang 202.1.3 Điểm ảnh và điểm ảnh lân cận [4]
Hình 3: Điểm ảnh và điểm lân cận
Xử lý điểm ảnh (point hoặc pixel) là biến đổi giá trị của một điểm ảnh thành một giá trị mới cũng tại vị trí đó bởi 1 hàm toán học Không phụ thuộc vào các giá trị của các điểm ảnh lân cận – láng giềng
Hình 4: Phép xử lý điểm ảnh.
Phân ngưỡng (thresholding) là chuyển ảnh từ ảnh mức xám hoặc màu về ảnh nhị phân (trắng - đen) Phép biến đổi phân ngưỡng hữu ích cho việc phân vùng ảnh mà ta muốn cô lập một vùng đối tượng từ ảnh nền
Hình 5: Phân ngưỡng ảnh.
Trang 212.1.4 Xử lý lân cận [5]
Hình 6: Xử lý lân cận
Lọc ảnh trong miền không gian là việc loại bỏ hoặc giữ lại một số đặc điểm của ảnh dựa vào bộ lọc/mặt nạ được sử dụng Bộ lọc có kích thước n*n với n = 3,
5, 7, 11, 13… Tùy thuộc vào mục đích của người sử dụng
Trượt/di chuyển bộ lọc/mặt nạ qua từng điểm một trong ảnh Tâm của mặt
nạ chính là điểm (x,y) cần xử lý trên ảnh Tính toán điểm ảnh mới dựa trên bộ lọc/mặt nạ và thông tin của ảnh
Hình 7: Trượt/di chuyển bộ lọc trên ảnh số
2.2 NGÔN NGỮ LẬP TRÌNH C#
2.2.1 C# là gì [6] ?
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft dựa trên C++ và Java C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi, Pascal, Java C# là thành phần quan trọng không thể thiếu của NET Framework
2.2.2 Microsoft Visual Studio [7]
Microsoft Visual Studio (VS) là một môi trường phát triển tích hợp (IDE) của Microsoft Nó được sử dụng để xây dựng các chương trình máy tính chạy trên
họ hệ điều hành Windows Các loại ứng dụng thường được xây dựng như: Windows API, Windows Store, Windows Silverlight…
Trang 22VS hỗ trợ nhiều ngôn ngữ lập trình như C, C++, C#, F#, Python, M, Ruby… VS gồm nhiều phiên bản như VS97, VS98 (6.0), VS.NET(2002), VS.NET (2003), VS 2005, VS2008, VS2010, VS2012, VS2013
VS 2010 là phiên bản được sử dụng trong việc cài đặt chương trình trong
đề tài này
2.2.3 Mô hình lập trình ba lớp
Các thành phần của mô hình 3 lớp:
Mô hình lập trình ba lớp có ba thành phần chính: Lớp trình bày (Presentation layer - GUI), lớp nghiệp vụ (Business layer - BLL), lớp dữ liệu (Data Access layer - DAL)
- Lớp trình bày: Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả thông qua các thành phần trong giao diện người sử dụng
- Lớp nghiệp vụ: Đây là lớp xử lý các dữ liệu trước khi được đưa lên hiển thị trên màn hình; xử lý các dữ liệu trước khi chuyển xuống lớp
dữ liệu để lưu hoặc truy vấn vào CSDL Đây là nơi để kiểm tra ràng buộc, các yêu cầu nghiệp vụ, tính toán, xử lý yêu cầu và lựa chọn kết quả trả về cho lớp trình bày
- Lớp dữ liệu thực hiện các công việc liên qua đến lưu trữ và truy xuất
dữ liệu của ứng dụng như đọc, lưu, cập nhật CSDL
Hình 8: Các thành phần mô hình ba lớp.
Tính chất của mô hình lập trình 3 lớp:
Trang 23- Giảm sự gắn kết giữa các thực thể phần mềm (decoupling)
- Tại BLL, các thông tin sẽ được nhào nặn, tính toán theo đúng yêu cầu
đã gửi, nếu không cần đến CSDL thì BLL sẽ gửi trả về GUI, ngược lại
sẽ đẩy dữ liệu đã xử lý xuống DAL
- DAL sẽ thao tác với CSDL và trả về kết quả cho BLL, BLL kiểm tra
và gửi nó lên GUI để thông báo cho người dùng
Hình 9: Mô hình vận hành ba lớp.
2.3 MÔ HÌNH CLIENT – SERVER
2.3.1 Mô hình Client – Server là gì [8] ?
Kiến trúc Client - Server được sử dụng trong các hệ thống phân tán Nó bao gồm hai thành phần riêng biệt: Server đóng vai trò người phục vụ, cung cấp chức năng; Client đóng vai trò người sử dụng các chức năng đó Thông thường
Trang 24hai thành phần này kết nối với nhau qua mạng (Internet, WAN, LAN…) Client là bên chủ động tạo kết nối và gửi yêu cầu đến Server Trong khi đó, Server thụ động lắng nghe và hồi đáp các yêu cầu Mô hình Client - Server đơn giản nhất gồm một Server phục vụ cho một hoặc nhiều Client đồng thời gọi là kiến trúc hai lớp (2-Tier) Một ví dụ phổ biến cho các ứng dụng Client - Server là các chương trình chat và email
Các ưu điểm nổi bật của kiến trúc Client - Server gồm:
- Quản lý tập trung: Dữ liệu được lưu trữ tập trung trên Server thay vì nằm rải rác trên nhiều máy, giúp đơn giản hóa việc truy xuất và cập nhật dữ liệu
- Dễ bảo trì: Nhờ khả năng quản lý tập trung mà công việc bảo trì cũng trở nên nhẹ nhàng hơn vì phần lớn việc bảo trì chỉ cần thực hiện trên Server Trong trường hợp hệ thống có nhiều Server với thiết bị dự phòng, quá trình bảo trì có thể diễn ra hoàn toàn trong suốt với phía Client
- Bảo mật: Dữ liệu tập trung trên Server đồng nghĩa với việc kiểm soát hoạt động dễ dàng hơn
Hình 10: Minh họa về mô hình Client – Server.
2.3.2 Máy ảo [9] ?
Máy ảo (Virtual Machine) là một chương trình đóng vai trò như một máy
vi tính ảo Nó chạy trên hệ điều hành hệ chủ, đóng vai trò cung cấp phần cứng ảo tới hệ điều hành khách Các hệ điều hành khách chạy trên các cửa sổ của hệ điều
Trang 25hành chủ, giống như bất kỳ ứng dụng khác Ngược lại, đối với những hệ điều hành khách, máy ảo lại hiện diện như một cỗ máy vật lý thực sự
Các máy ảo được cung cấp phần cứng ảo, bao gồm CPU ảo, RAM ảo, ổ đĩa cứng, giao diện mạng và những thiết bị khác Các thiết bị phần cứng ảo được cung cấp bởi máy ảo và được ánh xạ tới phần cứng thực trên máy thật
Các công dụng của máy ảo:
- Kiểm thử và trải nghiệm hệ điều hành khác
- Chạy các ứng dụng không tương thích trên hệ điều hành thật
- Kiểm thử phần mềm trên nhiều nền tảng
- Giả lập máy tính để sử dụng các ứng dụng mạng
WMware Player & Workstation là một chương trình máy ảo chất lượng cao cho Windows và Linux WMware Player là bản dùng miễn phí vì vậy người dùng sẽ không nhận được đầy đủ tính năng nâng cao như bản dùng thương mại Workstation
Để cài đặt một hệ điều hành lên máy ảo WMware, yêu cầu đĩa cài đặt hệ điều hành hoặc có thể sử dụng tệp *.ISO WMware cung cấp giao diện thân thiện
dễ dàng để tạo máy ảo và cài đặt hệ điều hành nhanh gọn
2.3.3 Microsoft SQL Server
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relation Database Management System - RDBMS) do Microsoft phát triển SQL Server hoạt động theo mô hình Client - Sever cho phép đồng thời cùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việc truy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng SQL Server sử dụng ngôn ngữ Transact - SQL Đây là ngôn ngữ kế thừa và mở rộng từ SQL chuẩn của ISO và ANSI Microsoft SQL Server được phát triển trên ngôn ngữ C++, chạy các nền hệ điều hành Windows NT x84/x64
Trang 26Microsoft SQL Server 2008 R2 (MSSQLS2K8R2) cung cấp công nghệ
và khả năng kiểm soát được các khó khăn thách thức đang ngày càng tăng đối với việc quản lý dữ liệu và cung cấp thông tin có giá trị kịp thời đến người dùng
Lợi ích của SP:
- Giảm lưu lượng dữ liệu được truyền qua mạng và tăng hiệu năng Client chỉ việc truyền tên SP và tham số (nếu có) thay vì gửi những câu SQL nhiều dòng
- Có thể được sử dụng để đảm bảo tính toàn vẹn dữ liệu CSDL
- Dễ bảo trì Việc thay đổi SP hoàn toàn không ảnh hưởng đến người dùng cuối
- Chuyên biệt công việc, những lập trình viên giỏi lập trình thì chuyên tâm lập trình, còn những lập trình viên giỏi lập trình T-SQL thì chuyên viết SQL
- Tăng khả năng bảo mật Đối với những ứng dụng mà ta không muốn cho lập trình viên biết thông tin về nghiệp vụ bên trong thì ta viết SP, người lập trình chỉ gọi SP sử dụng mà không biết ta xử lý gì bên trong
- Tái sử dụng Đối với những đoạn SQL thường xuyên được sử dụng thì
SP rất hữu dụng
Trang 272.4 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG THÔNG TIN
2.4.1 Phân tích và thiết kế hệ thống thông tin
Phân tích và thiết kế hệ thống thông tin (PTTKHTTT) là giai đoạn đầu tiên trong quy trình xây dựng và phát triển một hệ thống thông tin Đây là giai đoạn quan trọng nhất mang tính chất quyết định sự thành công đối với dự án
PTTKHTTT có nhiều phương pháp[11] phân tích khác nhau: MERSISE, SADT, MCX, hướng đối tượng… Mỗi phương pháp phân tích phân chia làm nhiều giai đoạn nhỏ khác nhau
Trong quá trình, PTTKHTT có ba thành phần quan trọng cần được lưu ý:
- Lưu đồ dòng dữ liệu (Data Flow Diagram - DFD) trường phái Bắc
Mỹ
- Cơ sơ dữ liệu mức luận lý (Conceptual Data Model – CDM)
- Cơ sở dữ liệu mức vật lý (Physical Data Model - PDM)
2.4.2 Data Flow Diagram [12]
Lưu đồ dòng dữ liệu biểu diễn sự kết nối giữa các hoạt động của hệ thống, thông qua việc trao đổi dữ liệu khi hệ thống hoạt động Trong lưu đồ dòng dữ liệu phải thể hiện những xử lý nào khởi đầu, xử lý nào phụ thuộc vào những xử lý khác và mỗi xử lý cần những dữ liệu gì và tạo ra những dữ liệu nào Tùy từng mức độ mà lưu đồ dòng dữ liệu được phân rã chi tiết dần, quá trình chi tiết hoá dừng lại ở mức mà có thể chuyển cho người lập trình để triển khai Có thể nói lưu
đồ dòng dữ liệu chỉ có hai mức: mức quan niệm và mức vật lý
Trang 28Hình 11: Mô hình phân cấp DFD.
Các bước xây dựng DFD:
- Bước 1: Phân chia toàn bộ hệ thống thành các lĩnh vực nhỏ hơn
- Bước 2: Đối với mỗi lĩnh vực xây dựng lưu đồ dòng dữ liệu cho lĩnh
vực đó
- Bước 3: Kết hợp tất cả các lưu đồ dòng dữ liệu từ tất cả các lĩnh vực
2.4.3 Conceptual Data Model [13]
Mô hình dữ liệu mức quan niệm (CDM) hay còn gọi là mô hình thực thể kết hợp là sự thể hiện mối quan hệ giữa các thực thể với nhau, không phải phụ thuộc vào bất cứ một HQTCSDL nào
Các thành phần trong CDM:
- Các thực thể bao gồm thuộc tính và khóa
- Các quan hệ bao gồm các kiểu quan hệ và bản số
Các bước xây dưng mô hình CDM:
- Bước 1: Xác định và tạo các thực thể, các thuộc tính của nó
- Bước 2: Xác định và tạo các quan hệ giữa các thực thể
- Bước 3: Thiết lập bản số của các quan hệ
Trang 29- Bước 4: Duyệt lại mô hình
- Bước 5: Chuyển sang LDM, PDM
2.4.4 Physical Data Model [14]
Mô hình dữ liệu mức vật lý là sự thể hiện gần gũi của dữ liệu trong hệ thống gắn với một HQTCSDL nào đó Trong PDM, khái niệm thực thể và thuộc tính được chuyển thành khái niệm bảng và cột
Từ CDM chuyển sang PDM có những quy tắc sau:
- Quy tắc 1: Thực thể chuyển thành bảng, thuộc tính chuyển thành cột
- Quy tắc 2: Quan hệ nhiều – nhiều chuyển thành bảng mới
- Quy tắc 3: Quan hệ một – nhiều sẽ trở thành một tham chiếu
- Quy tắc 4: Quan hệ một – một đưa về dạng một – nhiều và áp dụng
quy tắc 3
- Quy tắc 5: Chuyển các quan hệ chuyên biệt/tổng quát hóa
2.4.5 Công cụ Sysbase PowerDesigner [15]
Sybase PowerDesigner là một phần mềm hỗ trợ đắc lực trong việc thiết kế
mô hình quan hệ, mô hình CDM, PDM, DFD, Trong PTTKHTTT
Sử dụng Power Designer để:
- Thiết kế DFD
- Thiết kế CDM
- Phát sinh PDM tương ứng trên một RDBMS được chọn
- Phát sinh kịch bản tạo CSDL trên một RDBMS đích
- Phát sinh ràng buộc toàn vẹn tham nếu chúng được hỗ trợ bởi CSDL đích
- …
Sysbase PowerDesigner 15.2 là phiên bản phần mềm được sử dụng để phân tích và thiết kế CSDL và DFD của đề tài
Trang 30CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
3.1 KẾ HOẠCH THỰC HIỆN ĐỀ TÀI
3.1.1 Xác định các công việc thực hiện
STT Mô tả công việc thực hiện Kích thước Độ phức tạp Độ ưu tiên Công việc
tiên quyết
2 Tìm hiểu giải thuật
3 Tìm hiểu sơ lược hệ
4 Đặc tả chức năng chương trình Lớn Trung bình Trung bình 3
5 Thiết kế các lưu đồ, CDM, PDM Nhỏ Trung bình Trung bình 4
6 Thiết kế giao diện chương trình Lớn Trung bình Trung bình 5
Trang 313.1.2 Đồ thị phân chia thời gian thực hiện
Hình 12: Đồ thị phân chia công việc theo thời gian
3.2 TÌM HIỂU GIẢI THUẬT XỬ LÝ ẢNH [16]
3.2.1 Giới thiệu chung
Phần này trình bày nội dung đã tìm hiểu về giải thuật xử lý ảnh bài thi trắc nghiệm Giúp cho người đọc hiểu được về các giải thuật nhận diện được sử dụng trong chương trình
Nội dung tìm hiểu gồm:
- Các thành phần trong bài thi trắc nghiệm
- Giải thuật chung
- Lưu đồ giải thuật
Trang 323.2.2 Các thành phần trong bài thi trắc nghiệm
Hình 13: Các thành phần trong bài thi trắc nghiệm
Các thành phần cần quan tâm trong một bài thi trắc nghiệm gồm:
- Điểm trái trên (TT) và phải dưới (PD) Đây là hai điểm nằm ở phía góc trái trên và phải dưới của phiếu trắc nghiệm Điểm này là thành phần quan trọng nhất khi ta cần xử lý bài thi Bình thường hai điểm này được thiết kế có màu đen chuẩn RGB (0, 0, 0) với hình dạng tròn hoặc vuông
- Vùng nhận diện TT Đây là vùng quét để nhận diện điểm TT đối với mỗi bài thi
Trái trên
Phải dưới
Câu trả lời
Trang 33- Vùng nhận diện PD Đây là vùng quét để nhận diện điểm PD đối với mỗi bài thi
- Vùng tô số báo danh (SBD) Gồm 6 cột, mỗi cột gồm 10 chữ số [0-9]
- Vùng tô mã đề Gồm 3 cột, mỗi cột gồm 10 chữ số [0-9]
- Vùng tô câu trả lời Với mỗi mẫu phiếu 50, 80, 100 số lượng câu trả lời tương ứng 50, 80 hoặc 100 Mỗi câu trả lời gồm 4 phương án A, B, C,
D
3.2.3 Giải thuật chung
Đối với những hình ảnh của bài chuẩn (y như ảnh gốc về kích thước và tỉ lệ) ta có thể xác định tọa độ của mỗi ô; chạy giải thuật nhận diện Khó khăn nảy sinh, đối với các ảnh scan từ bài trắc nghiệm bên ngoài có kích thước khác nhau với kích thước và tỉ lệ khác nhau Do đó, ta phải định vị được các thành phần trong ảnh dựa trên một phiếu mẫu, gọi là phiếu gốc với tỉ lệ 1
Có thể xem hai điểm TT và PD của ảnh trong tọa độ màn hình sẽ tạo ra
một hình chữ nhật Gọi tọa độ điểm TT (a,b), PD (c,d) Theo đó, ta có:
- Độ dài chiều ngang hình chữ nhật là d1=c-a
- Độ dài chiều dọc hình chữ nhật là d2=d-b
Ta có thể tính tọa độ (x,y) của câu 1A theo công thức sau:
a d d
a x
x= − 1+
b y
y= − 2+2
Từ đó, ta có công thức tính (x’,y’) với tọa độ TT(a’,b’), PD(c’,d’) với tỉ lệ
Chứng minh tính đúng đắng của công thức trên:
d
d c
c b
b a
a x
d
d a c
a c a
a x
' 1 1
' 1 1 ) 1 1 ( ' '
d
a x a a
a d d
d d
a x a d d
a x a
a x a
a
Trang 34Tương tự ta chứng minh được: 2 ' '
2
d
b y
y= − + Nói tóm lại, đây là công thức đúng cho mọi tỉ lệ khác nhau của ảnh Với bất kỳ tờ phiếu trắc nghiệm nào được scan theo bất kỳ tỉ lệ nào thì công thức trên vẫn luôn dùng được
3.2.4 Lưu đồ các giải thuật
Hình 14: Các thành phần trong giải thuật
Lưu đồ giải thuật tiền xử lý
- Đầu vào (Input): Ảnh cần phân tích (imgInput), ngưỡng (thresholding)
thuộc đoạn [180;210]
- Đầu ra (Output): Ảnh đã phân ngưỡng (imgResult)
- Mô tả giải thuật: Nếu điểm ảnh cần phân tích tại vị trí (x, y) có mức
xám nhỏ hơn ngưỡng (thresholding) thì chuyển mức xám tại điểm đó về màu đen RGB(0, 0, 0) ngược lại chuyển về điểm đó về màu trắng
RGB(255, 255, 255) Thực hiện đến lúc hết tất cả các điểm trên ảnh
Nhận diện điểm tô đen tại vị trí vừa tìm
được
Trang 35Hình 15: Lưu đô ̀̀ ̀ giải thuật phân ngưỡng ảnh.
Lưu đồ giải thuật tìm điểm TT và PD
Trang 36- Đầu vào (Input): Ảnh cần phân tích (imgInput), vùng điểm nhận diện
TT hoặc PD: A(x1, y1) và B(x2, y2), kích thước mặt nạ nhận diện
(sizeMask), ngưỡng (thresholding)
- Đầu ra (Output): Tọa độ tâm của ô TT hoặc PD (xResult, yResult)
- Mô tả giải thuật: Giải thuật này sử dụng để xác định lần lượt tọa độ TT
và PD của ảnh cần phân tích Dùng một mặt nạ nhận diện trượt trên vùng điểm nhận diện TT hoặc PD Nếu như mọi điểm trong mặt nạ điều là điểm đen (giá trị mức xám gray < thresholding) sẽ trả về kết quả
(xResult, yResult) bằng tọa độ (x, y) hiện tại và kết thúc chương trình Ngược lại, kiểm tra tất cả điểm ảnh trong vùng nhận diện Nếu không có kết quả phù hợp thì trả về kết quả (0, 0)
Trang 37Hình 16: Lưu đồ giải thuật phát hiện điểm TT hoặc PD.
Trang 38Lưu đồ giải thuật quét tìm vị trí các câu trả lời
- Đầu vào (Input): Tọa độ điểm TT (tt_x, tt_y) và PD (pd_x, pd_y) mẫu,
tọa điểm TT (tt_x0, tt_y0) và PD (pd_x0, pd_y0) đọc vào, số câu
(numAnswers), số cột (numCols), tọa độ câu 1A mẫu (cau1a_x,
cau1a_y), số pixel bị lệch của câu 1B so với câu 1A (lech_phai_cot_1a),
số pixel bị lệch của câu (Math.ceil(numAnswer/numCols)) A với câu 1A (lech_phai_khac_cot_1a), số pixel bị lệch của câu 2A so với câu 1A (lech_duoi_1a)
- Đầu ra (Output): Một mảng chứa vị trí tọa độ (x,y) của các câu và các
phương án (A, B, C, D) positionAnswer[2][numAnswer*4]
- Mô tả thuật toán: Lần lượt quét các cột, các dòng câu trả lời trong
phiếu Áp dụng công thức tính vị trí các tọa độ phương án các câu trả lời
tỉ lệ dựa trên tọa độ mẫu được trình bày ở phần 3.2.3 Giải thuật chung Trả về mảng positionAnswer[2][numAnswer*4]; kết thúc giải thuật khi
đã quét qua tất cả phương án của các câu
Trang 39Hình 17: Lưu đồ giải thuật quét tìm vị trí câu trả lời.
Trang 40Lưu đồ giải thuật quét tìm vị trí SBD
- Đầu vào (Input): Tọa độ điểm TT (tt_x, tt_y) và PD (pd_x, pd_y) mẫu,
tọa điểm TT (tt_x0, tt_y0) và PD (pd_x0, pd_y0) đọc vào, tọa độ SBD mẫu (sbd_x, sbd_y), số pixel bị lệch của số 0 cột 2 so với số 0 cột 1 trong vùng SBD (lech_phai_sbd), số pixel bị lệch của số 1 cột 1 so với
số 0 cột 1 trong vùng SBD (lech_duoi_sbd)
- Đầu ra (Output): Một mảng chứa trị vị trí tọa độ (x, y) các con số [0-9]
trong bảng SBD, positionSBD[2][60] Trong trường hợp này, mảng kết quả vị trí các SBD được gán mặc định gồm 6 cột 10 dòng
- Mô tả thuật toán: Tương tự như giải thuật tìm vị trí các câu trả lời, ta
cho quét lần lượt các cột và hàng của vùng SBD Áp dụng công thức
phần 3.2.3 Giải thuật chung Trả về kết quả positionSBD[2][60]; kết
thúc giải thuật khi đã quét tất cả các phần tử