Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
LỜI TỰA
Ngày nay, với sự phát triển như vũ bão của ngành công nghệ thông tin
đã và đang đưa con người chúng ta dần tiến đến một kỹ nguyên mới, kỹ
nguyên của tin học hoá trong đời sống. Tin học đã len lõi vào mọi ngóc ngách
của cuộc sống, đưa con người đến với một cuộc sống chất lượng hơn. Tin học
giúp con người làm việc một cách hiệu quả hơn, năng suất cao hơn, … và tiết
kiệm được nhiều thời gian hơn để tập trung vào những công việc khác hoặc
các hoạt động khác (như vui chơi, giải trí).
Mục tiêu của nhà nước ta là tin học hoá các công việc văn phòng. Để
làm được điều đó các nhà khoa học đã cố gắng nghiên cứu để tạo ra những
chương trình để phục vụ cho công việc trên. Một trong những công việc văn
phòng ở trường học là việc nhập điểm thi cho học sinh, sinh viên vào cơ sở dữ
liệu của trường. Công việc nhập điểm vào máy đòi hỏi sự tập trung cao độ của
người nhập vì nếu người nhập nhập điểm sai thì sẽ ảnh hưởng đến kết quả học
tập của người học. Để cho công việc trên hiệu quả hơn thì đòi hỏi phải có một
cách nhập điểm tự động hơn.
Để tiếp cận và góp phần đẩy mạnh sự phát triển của ngành giáo dục ở
Việt Nam, chúng em xin trình bày “Hệ thống nhập điểm tự động”. Trong
khuôn khổ thời gian cho phép để làm một đề tài tốt nghiệp có thể chúng em
chưa hoàn tất đầy đủ chức năng, tính linh hoạt và phổ biến của hệ thống. Sau
này nếu điều kiện cho phép, đề tài này có thể phát triển rộng hơn về quy mô
và sâu hơn về chất lượng để chương trình hoạt động sao cho hoàn chỉnh và phù
hợp với thực tế hơn.
Sinh viên thực hiện
Nguyễn Văn Thành
SVTH: Nguyễn Văn Thành Trang 1
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
NHẬN XÉT CỦA GIẢNG VIÊN
SVTH: Nguyễn Văn Thành Trang 2
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
NHẬN XÉT CỦA GIẢNG VIÊN
1.2.2.1. Phép biến đổi Affine bảo toàn đường thẳng
1.2.2.2. Tính song song của các đường thẳng được bảo
toàn
1.2.2.3. Tính tỉ lệ về khoảng cách được bảo toàn
1.2.3. Một số phép biến đổi khác
1.2.3.1. Phép đối xứng
1.2.3.2. Phép biến dạng
Chương 2: Nhận dạng các chấm đen
2.1. Xác đònh hai mốc của file bảng điểm
2.1.1. Giải pháp để xác đònh tâm của một mốc
2.1.2. Xây dựng giải thuật
2.2. Xác đònh các điểm trong file bảng điểm
Chương 3: Phân tích bài toán
3.1. Đặt vấn đề
3.2. Giới hạn vấn đề và phát biểu bài toán
3.2.1. Giới hạn vấn đề
3.2.2. Phát biểu bài toán
3.3. Mô tả dữ liệu đầu vào, dữ liệu đầu ra và xử lý dữ liệu
3.3.1. Dữ liệu đầu vào của chương trình
3.3.2. Dữ liệu đầu ra của chương trình
3.3.3. Phần xử lý dữ liệu
3.4. Giới thiệu sơ lược về tờ bảng điểm và file bảng điểm
3.4.1. Mô tả tờ bảng điểm
3.4.1.1. Phần tựa
3.4.1.2. Phần thân
3.4.1.3. Phần cuối
3.4.2. Mô tả file bảng điểm
SVTH: Nguyễn Văn Thành Trang 4
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
3.5. Những vấn đề cần giải quyết
5.1.2.6. Giới thiệu về hàm Shell trong Visual Basic
5.1.2.7. Giới thiệu điều khiển DataGrid
5.1.2.8. Giới thiệu điều khiển ListView
5.1.2.9. Cách truy xuất file text tuần tự
5.2. Yêu cầu
5.3. Xử lý
5.3.1. Chuẩn bò file ảnh và các vấn đề liên quan
5.3.2. Xử lý file ảnh để cho ra file điểm
5.3.2.1. Sơ đồ xử lý file ảnh ra file điểm
SVTH: Nguyễn Văn Thành Trang 5
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
5.3.2.2. Trình bày việc xử lý file ảnh
5.3.3. Xử lý dữ liệu trên cơ sở dữ liệu để nhập điểm
5.3.3.1. Sơ đồ cho việc xử lý dữ liệu
5.3.3.2. Trình bày cách xử lý dữ liệu
5.3.4. Nhập điểm vào cơ sở dữ liệu
5.3.4.1. Sơ đồ mô tả
5.3.4.2. Trình bày cách nhập điểm
5.3.5. Xem điểm sinh viên trong cơ sở dữ liệu
5.3.5.1. Sơ đồ mô tả
5.3.5.2. Xem điểm
5.4. Giải thuật
5.4.1. Đánh số thứ tự của sinh viên
5.4.2. Cập nhật điểm thi
Chương 6: Ưu điểm, khuyết điểm và hướng phát triển của đề tài
6.1. Ưu điểm
6.2. Khuyết điểm
6.3. Hướng phát triển của đề tài
SVTH: Nguyễn Văn Thành Trang 6
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Cấu trúc file ảnh bitmap:
Mỗi file ảnh bitmap Windows bao gồm 4 phần sau:
- Tiêu đề file ảnh bitmap.
- Thông tin tiêu đề ảnh bitmap.
- Bảng màu.
- Mảng các byte mà nó chỉ rõ các bit của ảnh bitmap.
File có dạng như sau:
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
RGBQUAD aColors[];0
BYTE aBitmapBits[];
SVTH: Nguyễn Văn Thành Trang 7
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Chi tiết của cấu trúc file dạng BMP như sau:
OFFSET Count TYPE Description
0000h 2 char ID='BM' – BitMap OS/2 cũng hỗ trợ các
dạng sau đây:
ID='BA' – mảng bitmap (Bitmap Array)
ID='CI' – biểu tượng màu (Color Icon)
ID='CP' – con trỏ màu (Color Pointer) (mouse cursor)
ID='IC' – biểu tượng (Icon)
ID='PT' – con trỏ (Pointer) (mouse cursor)
0002h 1 dword kích thước của tập tin
0006h 4 byte không sử dụng
000Ah 1 dword khoảng trống trong file bitmap ="BOF"
000Eh 1 dword chiều dài của BitMapInfoHeader bắt đầu
trực tiếp sau phần tiêu đề này:
12 - theo đòng dạng của OS/2 1.x
40 - theo đòng dạng của Windows 3.x
64 - theo đòng dạng của OS/2 2.x
bitmap.
Bảng màu, được đònh nghóa như một mảng các cấu trúc RGBQUAD bao
gồm nhiều phần thử có màu trong ảnh bitmap. Bảng màu không hiện hữu cho
ảnh bitmap với 24bits màu vì mỗi điểm được đại diện bởi các giá trò của 24 bit
màu đỏ-xanh lục-xanh dương(RGB) trong vùng dữ liệu thật sự của ảnh bitmap.
Những màu trong bảng màu xuất hiện theo thứ tự quan trọng. Điều này trả lại
bộ phận điều khiển hiển thò ảnh bitmap trên một thiết bò hiển thò không được
nhiều màu trong một ảnh bitmap.
Cấu trúc BITMAPINFOHEADER có thể được dùng để đại diện cho sự
kết hợp giữa thông tin tiêu đề file bitmap và bảng màu. Những bit ảnh bitmap
trực tiếp theo sau bảng màu, bao gồm mảng các giá trò BYTE đại diện cho các
dòng liên tục nhau, “dòng quét” của ảnh bitmap. Mỗi dòng quét bao gồm các
byte liên tục nhau đại diện cho các điểm ảnh trên dòng quét từ trái qua phải.
Thứ tự các byte đại diện cho một dòng quét phụ thuộc vào khuôn dạng màu và
chiều rộng tính bằng pixel của ảnh bitmap.
Cấu trúc BITMAPINFOHEADER xác đònh số bit được đònh nghóa trong
mỗi pixel và số màu lớn nhất trong ảnh bitmap. Có thể có những giá trò sau
đây:
1 – Là ảnh bitmap chỉ có một màu và bảng màu chứa hai mục. Mỗi bit
trong một mảng của ảnh bitmap đại diện cho một pixel. Nếu bit bò xóa (không
được thiết lập), thì pixel được hiển thò với màu của mục đầu tiên trong bảng
màu. Nếu bit được thiết lập, thì pixel được hiển thò với màu của mục thứ hau
trong bảng màu.
4 – Là ảnh bitmap có tối đa 16 màu. Mỗi pixel trong ảnh bitmap được
biểu thò bằng một chỉ số 4 bit màu bên trong bảng màu. Chẳng hạn, nếu byte
đầu tiên trong ảnh bitmap là 0x1F thì byte đại diện cho hai pixel. Pixel đầu tiên
chứa màu trong mục thứ hai của bảng màu và pixel thứ hai chứa màu trong
mục thứ 16 của bảng màu.
8 – Là ảnh bitmap có tối đa 256 màu. Mỗi pixel trong ảnh bitmap được
biểu thò bằng một chỉ số 1 byte bên trong bảng màu. Chẳng hạn, nếu byte đầu
b. Chế độ
tuyệt đối:
Trong chế độ tuyệt đối có một điểm đáng chú ý là byte đầu tiên
trong một cặp được thiết lặp bằng 0 và byte thứ 2 có giá trò trong khỏang 0x03
đến 0xFF. Byte thứ 2 đại diện cho số byte theo sau, mỗi byte theo sau chứa chỉ
số màu của một điểm ảnh đơn. Mỗi lần thực thi nó phải canh chỉnh lại biên của
một từ.
Nén ảnh bitmap 4 bit trên pixel:
Tương tự như phần nén ảnh bitmap 8 bit trên pixel chỉ có khác là
sử dụng giải thuật nén cho ảnh bitmap có 16 màu.
1. Chế độ mã hóa:
Một đơn vò thông tin bên trong chế độ mã hóa bao gồm có 2 byte.
Byte đầu tiên chỉ rõ số những pixel liên tục nhau để vẽ sử dụng chỉ số màu
được chứa trong byte số 2. Byte thứ 2 chứa chỉ số của 2 màu, một màu trong 2
màu lấy thứ tự cao và màu còn lại lấy thứ tự thấp.
2. Chế độ tuyệt đối:
SVTH: Nguyễn Văn Thành Trang 10
Byte thứ 2 Ý nghóa
0 Cuối dòng
1 Cuối ảnh bitmap
2 Trong một vùng nào đó
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Trong chế độ tuyệt đối, byte đầu tiên chứ số 0, byte thứ 2 chứa chỉ số
của màu và byte theo sau chứa chỉ số màu lấy thứ tự cao và thấp bên trong nó,
mỗi chỉ số màu cho mỗi pixel. Mỗi lần thực thi nó phải canh chỉnh lại biên của
một từ.
1.1.2. Đònh dạng file ảnh JPEG/JPG:
Chuẩn ảnh theo dạng JPEG/JPG là một chuẩn nén ảnh có sự mất mát dữ
liệu (nhưng có hiệu quả: kích thước tập tin nhỏ hơn rất nhiều so với tập tin dạng
BMP, chất lượng ảnh cũng không thay đổi nhiều, nên nó hay được sử dụng
thể dễ dàng sử dụng cho những scanner và những ứng dụng đơn giản nữa, một
SVTH: Nguyễn Văn Thành Trang 11
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
khi người phát triển ứng dụng cần chỉ được quan tâm với những khả năng mà
anh ta yêu cầu.
TIFF được dự đònh độc lập cho những hệ điều hành đặc biệt, sắp xếp
những hệ thống, những trình biên dòch và những bộ xử lý. Chỉ có ý nghóa giả
thiết rằng môi trường lưu trữ khỏang chừng một file được đònh nghóa theo thứ tự
bytes 8 bit. Nơi mà bytes ghi số từ 0 đến N. File TIFF có thể lớn nhất là 2*32
bytes. Vì những con trỏ được sử dụng tự do nên một file TIFF hầu như đọc dễ
dàng từ một thiết bò truy cập ngẫu nhiên, mặc dầu nó có đọc và ghi file TIFF
trên phương tiện truyền thông liên tục như băng ghi âm.
Nhiều chương trình ứng dụng mà đọc những nội dung của file hình ảnh
TIFF sẽ không hỗ trợ tất cả các đặc tính mô tả trong tài liệu này. Trong vài
trường hợp những phương án chọn mặc đònh nhỏ bé hơn sẽ được hỗ trợ. Nó lên
trên tới mỗi tổ chức để xác đònh những giá và những lợi ích liên quan đến
những mức khác nhau của sự phù hợp. Bởi vậy những tuyên bố phù hợp với
thuyết minh này với số lượng nhắc nhở nhất đònh. Nó đi theo mà cách dùng của
thuyết minh này không loại trừ cho phối hợp giữa người viết ra file hình ảnh và
người đọc file hình ảnh. Chính lên trên tới người thiết kế ứng dụng mà đầu tiên
viết một file trong khuôn dạng này để xác minh mà những tùy chọn file mong
muốn được hỗ trợ bởi những ứng dụng mà sẽ đọc file.
Cấu trúc:
Trong file TIFF, những lónh vực riêng lẽ sẽ được xác đònh với một thẻ
duy nhất. Điều này cho phép những lónh vực đặc biệt hiện hữu và vắng mặt từ
file được yêu cầu bởi ứng dụng. Vài file TIFF sẽ chỉ có một ít lónh vực trong
chúng nhưng những loại file khác thì sẽ có nhiều lónh vực. Phần mềm mà tạo ra
những file TIFF cần phải viết ra trong nhiều lónh vực mà nó tin tưởng sẽ đầy ý
nghóa và hữu ích (và không hơn). Những phần mềm đọc file dạng TIFF sẽ là tốt
nhất với những lónh vực mà nó tìm thấy ở đó.
000Bh 1 byte chỉ số màu của màm hình nền
000Ch 1 byte không sử dụng
Màu chung ánh xạ tức thì cho phép miêu tả màn hình và có kích thước
(2*bit/pixel) và có chế độ màu RGB cho mỗi chỉ số màu, số 0 là không có màu
còn số 255 là số màu tối đa (cường độ màu tối đa). Các byte được lưu trữ theo
đònh dạng sau đây:
OFFSET Số byte Loại Mô tả
0000h 1 byte thành phần Red
0001h 1 byte thành phần Green
0002h 1 byte thành phần Blue
Sau hình ảnh đầu tiên, có thể có nhiều ảnh được gắn thêm vào bên trong
file, mà nó được chồng lên hình ảnh đầu tiên hoặc một phần của ảnh đầu tiên.
Bộ mô tả ảnh đònh nghóa nơi đặt thật sự và phạm vi cho phép ảnh bên trong
dấu cách được đònh nghóa bên trong bộ mô tả màn hình. Bộ mô tả ảnh được đưa
vào bằng một ký tự phân cách ảnh. Vai trò của bộ tách ảnh thường là cung cấp
mộ ký tự đồng bộ để đưa vào một bộ mô tả ảnh, ký tự phân chia các ảnh được
đònh nghóa là dấu phẩy, có mã là 02Ch. Bất kỳ các ký tự đụng nhau phần cuối
của ảnh trước và ký tự phân cách ảnh được bỏ qua.
Đònh dạng của bộ mô tả ảnh trông giống như sau:
OFFSET Số byte Loại Mô tả
0000h 1 char bộ phân tách ảnh
ID=','
0001h 1 word đoạn bên trái ảnh
0003h 1 word đoạn trên ảnh
0005h 1 word chiều rộng ảnh
0007h 1 word chiều cao ảnh
SVTH: Nguyễn Văn Thành Trang 13
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
0009h 1 byte mô tả bảng màu bitmapped
0-2 – số bit.pixel-1
P(x,y)->Q(x’,y’)
Nói cách khác, T là hàm số T(x,y) theo hai biến (x,y):
=
=
),('
),('
yxgy
yxfx
Phép biến đổi affine là phép biến đổi với f(x,y) và g(x,y) là các hàm
tuyến tính. Phép biến đổi này có dạng:
++=
++=
fdybxy
ecyaxx
'
'
,a,b,c,d,e,f ∈ R, ad-bc≠0
Phép tònh tiến:
SVTH: Nguyễn Văn Thành Trang 14
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Để tònh tiến một điểm P(x,y) từ vò trí này sang vò trí khác trong mặt
phẳng, ta cộng thêm các giá trò mô tả độ dời vào các tọa độ của P. Nếu gọi tr
x
và tr
Phép quay:
Phép quay làm thay đổi hướng của đối tượng. Một phép quay đòi hỏi
phải ó tâm quay và góc quay. Góc quay dương thường được qui ước là chiều
ngược chiều kim đồng hồ. Ta có công thức biến đổi của phép quay P(x,y)
quanh gốc tọa độ một góc α.
+=
−=
yxy
yxx
.cos.sin'
.sin.cos'
αα
αα
1.2.2. Một số tính chất của phép biến đổi Affine:
1.2.2.1. Phép biến đổi affine bảo toàn đường thẳng:
nh của đường thẳng qua phép biến đổi affine là đường thẳng.
Thật vậy, ta có phương trình tham số của đường thẳng qua hai điểm A, B là:
P(t) = (1-t)A + tB.Q(t) các điểm nhận được sau phép biến đổi M.
Q(t) = P(t)M = [(1-t)A + tB]M = (1-t)AM + tBM
Nếu gọi A’, B’ lần lượt là ảnh của A, B qua phép biến đổi M, ta sẽ có
A’ = AM, B’ = BM. Lúc này Q(t) = (1-t)A’ + tB’. Đây chính là dạng của
chương trình tham số đoạn thẳng qua A’, B’.
SVTH: Nguyễn Văn Thành Trang 15
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Từ kế quả trên, để biến đổi một đoạn thẳng đi qua hai điểm A và B, ta
chỉ cần áp dụng phép biến đổi cho hai điểm A, B rồi vẽ lại đoạn thẳng qua hai
điểm mới.
1.2.3. Một số phép biến đổi khác:
1.2.3.1. Phép đối xứng:
Phép đối xứng trục có thể xem là phép quay quanh trục đối xứng một
góc 108
0
. Nếu trục đối xứng là trục hoành hay trục tung, chúng ta có thể biễu
diễn của phép đối xứng qua trục hoành, trục tung lần lượt là:
M
Rfx
=
0
0
1
0
1
0
−
1
đối tượng. Hai dạng phép biến dạng thường gặp đó là biến dạng theo phương
trục x và biến dạng theo phương trục y bằng cách thay đổi tọa độ (x,y) của
điểm ban đầu theo cách sau:
SVTH: Nguyễn Văn Thành Trang 16
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Biến dạng theo phương trục trục x sẽ làm thay đổi hoành độ còn
tung độ vẫn giữ nguyên:
M
Shx
=
0
1
shxy
0
1
0
1
0
SVTH: Nguyễn Văn Thành Trang 17
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
CHƯƠNG 2:
NHẬN DẠNG CÁC CHẤM ĐEN
phần này em chỉ trình bày việc nhận dạng các chấm đen (hai mốc và
điểm thi), còn các phần liên quan đến phần xử lý này sẽ được bạn Trần Viết
Khôi trình bày một cách đầy đủ.
2.1. XÁC ĐỊNH HAI MỐC CỦA FILE BẢNG ĐIỂM:
Do bảng điểm có kích thước rất lớn, nếu ta kiểm tra tất cả các phần trên
ảnh để tìm ra mốc thì chương trình của ta sẽ phải đọc ảnh rất nhiều để tìm dẫn
đến chương trình có thể sẽ thực thi rất chậm và không ổn đònh. Mà trên thực tế
thì chỉ có một khoảng các pixel là có khả năng có mốc. Đó là lý do ta phải xác
đònh khoảng các pixelcó mốc.
Vấn đề là làm sao xác đònh được chính xác tâm của điểm mốc. Muốn
xác đònh chính xác tâm của điểm mốc ta phải biết được chính xác khoảng pixel
có thể xuất hiện mốc, và phải xác đònh khoảng pixel đó nằm ở đâu trên bức
ảnh. Như ta đã biết ở trên bảng điểm có hai mốc nằm ở vò trí trái trên và phải
dưới của bảng điểm nhưng khi scan cho ra file ảnh điểm thì do ảnh có thể bò
tònh tiến, bò quay nên do đó điểm mốc cũng không nằm tại một vò trí cố đònh
mà nó sẽ nằm ở vò trí tuỳ thuộc vào ảnh bò quay bao nhiêu và tònh tiến bao
nhiêu. Vấn đề ở đây là ta phải tìm ra được những vò trí nào mà mốc xuất hiện
khi ảnh quay và tònh tiến trong khả năng bài toán cho phép.
Để giải quyết vấn đề trên ta phải qua thực nghiệm đối với mọi khả năng
có thể xảy ra đối với bài toán để tìm ra được khoảng pixel để xác đònh được
mốc. Qua thực nghiệm tính được khoảng pixel có khả năng xác đònh được mốc
thứ nhất là nằm trong khoảng (0,0) đến (200,200) và mốc thứ hai nằm trong
khoảng ((chiều rộng của ảnh) - 200, (tâm của mốc thứ nhất) + 743) đến ((chiều
rộng của ảnh), (tâm của mốc thứ nhất) + 743 + 200).
2.1.1. Giải pháp để xác đònh tâm của một mốc:
Giải pháp để xác đònh tâm của một mốc được mô tả như sau:
và chiều ngang 14 pixel) ta tiến hành quét trong khung lần lượt từ trên xuống
để tìm tổng số điểm đen, sau khi quét hết khung ta tiến hành kiểm tra tổng số
pixel trong khung đó, nếu tổng số pixel đen trong khung đạt được từ 100 đến
196 pixel đen thì ta xác đònh pixel đen đó là pixel đen của mốc. Sau đó ta tiến
hành xác đònh tâm của mốc và ngưng việc kiểm tra.
Giải pháp này có một ưu điểm là nó xác đònh pixel đen thuộc mốc
rất chính xác và ít khi bò lầm lẫn trong việc nhận dạng, nhưng nó có một khuyết
điểm là nó phải kiểm tra quá nhiều điểm mới xác nhận được một pixel đen có
thuộc mốc hay không. Ta cũng có thể khắc phục được phần nào giải pháp này
bằng cách tạo thêm một số điều kiện để loại trừ những pixel đen không thuộc
mốc.
Như vậy, trong hai giải pháp trên ta nhận thấy giải pháp một rất
phức tạp mà độ chính xác cũng không cao do nó rất dễ kiểm tra nhầm lẫn mốc
mà chương trình của ta đòi hỏi việc xác đònh mốc phải chính xác. Còn giải
pháp thứ hai thì tương đối chính xác hơn nhưng chương trình sẽ phải xử lý nhiều
hơn. Do những ưu khuyết điểm của hai giải pháp trên ta thấy việc chọn giải
pháp thứ nhất là không khả thi do đó ta sẽ chọn giải pháp thứ hai để giải quyết
vấn đề nhận dạng mốc của bài toán này.
2.2.2. Xây dựng giải thuật :
Giải thuật chia làm hai phần: phần đầu là xác đònh mốc trong một
khoảng các pixel và phần hai xác đònh một pixel đen có thuộc một mốc hay
không. Giải thuật được mô tả như sau:
SVTH: Nguyễn Văn Thành Trang 19
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Xác đònh một pixel đen có thuộc một mốc:
Bước 1: Vòng lặp để kiểm tra 14 pixel trên hàng dọc của pixel đen
và vò trí kiểm tra phải nhỏ hơn chiều cao. Nếu đúng nhảy xuống
bước 2, nếu không nhảy xuống bước 5.
Bước 2: Vòng lặp để kiểm tra 14 pixel trên hàng ngang của pixel đen
và vò trí kiểm tra phải nhỏ hơn chiều rộng. Nếu đúng thì nhảy xuống
(phần) ảnh không bò quay hay lệch
Do file ảnh điểm là một sản phẩm thủ công như đã nói ở trên dẫn đến
khả năng ảnh có thể bò lệch và quay theo nhiều hướng khác nhau. Do đó nếu ta
đọc phần ảnh như trên thì có khả năng khi ảnh bò quay các ô điểm ở vò trí 0
hoặc 10 và các thí sinh nằm ở vò trí số 1 hoặc số 6 có thể không rơi vào trong
phần xử lý điểm của chương trình dẫn đến ta có thể nhận dạng thiếu hoặc sai
các vò trí đó.
(phần) ảnh bò quay
Để khắc phục được điều này ta đưa ra giải pháp là đọc khoảng các pixel
lớn hơn, nghóa là sẽ đọc rộng hơn 24 pixel (đọc thêm hai dòng) thì ta có thể đọc
được toàn bộ thông tin của phần ảnh bò quay với một góc quay nhỏ.
Nhưng nếu ảnh bò quay một góc lớn (3 đến 6 độ) thì những phần ảnh
càng về sau càng bò lệch và khả năng lệch đó có thể làm mất các điểm và vò trí
ở biên. Để khắc phục điều này ta phải tính độ dời theo hai trục khi ảnh bò quay.
Xác đònh điểm trong một khoảng các pixel cho trước:
Bước 1: Đi từ trên xuống trong khoảng các pixel cho trước.
Bước 2: Đi từ trái qua phải trong khoảng các pixel cho trước.
Bước 3: Nếu phát hiện pixel đen thì thực hiện việc kiểm tra (thông
qua hàm kiểm tra) xem pixel đen đó có thuộc mốc hay không:
_ Nếu có thì lấy tâm của mốc và thoát.
_ Nếu không thì quay lại bước 1, bước 2.
Trả ra số điểm mà nó nhận diện được.
Sau khi có được số điểm đó nó sẽ thực hiện việc tính điểm cho từng
điểm mà nó nhận dạng được.
SVTH: Nguyễn Văn Thành Trang 21
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
Xác đònh vò trí và điểm tương ứng:
Vòng lặp chạy từ 0 đến 10 (tương ứng với điểm từ 0 đến 10)
Ta xác đònh khoảng pixel của từng điểm trên bảng điểm
Nếu tâm của điểm đen đó nằm trong khoảng pixel tương ứng
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
CHƯƠNG 3:
PHÂN TÍCH BÀI TOÁN
3.1. ĐẶT VẤN ĐỀ:
Theo em được biết thì từ trước đến nay trên thực tế ở Việt Nam ta chưa
có một chương trình nào phục vụ cho việc nhập điểm tự động ở các trường phổ
thông cũng như các trường đại học. Đề tài này em rất thích vì nó gắn liền thực
tế và nó là một nhu cầu cần thiết của ngành giáo dục. Nếu chương trình hoạt
động tốt nó sẽ giúp ích rất nhiều trong việc nhập điểm vào cơ sở dữ liệu của
trường không phải nhập điểm bằng thủ công như trước đây, và thống kê điểm
một cách nhanh chóng trong các cuộc thi có số lượng thí sinh tham gia đông
như các cuộc thi đại học …
3.2. GIỚI HẠN VẤN ĐỀ VÀ PHÁT BIỂU BÀI TOÁN:
3.2.1. Giới hạn vấn đề:
Vấn đề nhập điểm tự động là một vấn đề rất khó đòi hỏi ta phải có một
khoảng thời gian tương đối dài để giải quyết vấn đề như nhận ra các chữ viết
tay của các thầy hay cô (phần ghi các điểm số), mã số của các thí sinh, các
môn học, kì thi, lớp học, … vấn đề trên đối với chúng em thì rất khó có thể giải
quyết được trong khoảng thời gian là 12 tuần. Do đó chúng em đưa ra một cách
giải quyết khác là thay vì nhận dạng chữ viết tay để tìm điểm thì chúng em sẽ
nhận dạng những điểm tô đen trên bảng điểm theo mẫu của trường ĐHDL Kỹ
Thuật Công Nghệ. Bảng điểm này có các đặc tính rất thuận tiện cho việc nhận
diện điểm vì có cột điểm được tô đen, do đó khi ta nhận diện được toạ độ của
điểm tô thì ta sẽ xác đònh được điểm và số thứ tự tương ứng của điểm đó trong
tờ bảng điểm.
Như vậy vấn đề nhập điểm hoàn toàn tự động đã được chuyển về hướng
là khi nhập điểm thì người sử dụng phải gõ vào số trang (số tờ của bảng điểm),
môn học, lớp học tương ứng trên tờ bảng điểm thực. Do đó vấn đề ở đây là làm
sao nhận dạng được tâm của các điểm tô để đưa ra được điểm cùng số thứ tự.
3.2.2. Phát biểu bài toán:
• Thực hiện câu truy vấn để đặt số thứ tự của sinh viên theo lớp
học.
• Thực hiện câu truy vấn để lấy được danh sách sinh viên từ số
thứ tự nào đến số thứ tự nào trong lớp theo số trang, môn học,
lớp học.
• Ta đưa điểm thi vào danh sách trên theo thứ tự đã có vào một
bảng tạm.
• Ta lưu dữ liệu từ bảng tạm vào cơ sở dữ liệu chính.
3.4. GIỚI THIỆU SƠ LƯC VỀ TỜ BẢNG ĐIỂM VÀ FILE BẢNG
ĐIỂM:
Một bảng điểm sẽ theo một mẫu quy đònh (có khổ giấy là tờ A4) khi đưa
vào máy scan sẽ cho ra một file ảnh bitmap, file ảnh này được chương trình đọc
và xử lý sau đó chương trình cho ra một file chứa điểm và vò trí đã xử lý và một
file chứa các lỗi nếu có lỗi xảy ra. Sau đó một chương trình xử lý để lưu điểm
vào cơ sở dữ liệu, sẽ đọc hai file text đó vào xử lý và cho ra điểm, mã số của
sinh viên và mã môn cho vào cơ sở dữ liệu. Dưới đây là sự mô tả các dữ liệu
trên.
SVTH: Nguyễn Văn Thành Trang 24
Thiết kế hệ thống nhập điểm tự động GVHD: Thầy Huỳnh Văn Đức
3.4.1. Mô tả một tờ bảng điểm:
Tờ bảng điểm có màu chủ đạo là màu đỏ, các thông tin quan trọng trong
đó có phần tô điểm có màu đen hoặc xanh dương, bảng điểm gồm có 3 phần
chính: phần tựa, phần thân, phần cuối.
Dưới đây là file bảng điểm được scan giống như ảnh ban đầu chưa chỉnh
sửa gì cả:
SVTH: Nguyễn Văn Thành Trang 25