Tải bản đầy đủ (.pdf) (73 trang)

luận văn công nghệ thông tin thiết kế hệ thống nhập điểm tự động - svth trần viết khôi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (888.99 KB, 73 trang )

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 1

LỜI CẢM ƠN

Em xin chân thành cám ơn Khoa Công Nghệ Thông Tin, trường Đại
Học Dân Lập Kỹ Thuật Công Nghệ, Tp HCM đã tạo điều kiện cho em thực
hiện đề tài này.

Em xin chân thành cám ơn thầy Huỳnh Văn Đức đã tận tình hướng
dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài.

Em cũng xin chân thành cảm ơn quý thầy cô trong Khoa đã tận tình
giảng dạy, trang bò cho chúng em những kiến thức cần thiết trong suốt quá
trình học tập tại trường, và cũng xin gởi lòng biết ơn sâu sắc đến Cha, Mẹ,
các anh chò và bạn bè đã ủng hộ, giúp đỡ, động viên em trong những lúc
khó khăn cũng như trong suốt những năm học vừa qua.

Mặc dù đã cố gắng hoàn thành luận văn với tất cả những nỗ lực của
bản thân, nhưng luận văn chắc không tránh khỏi những thiếu sót nhất đònh,
kính mong sự cảm thông và tận tình chỉ bảo của quý Thầy Cô.

Sinh viên thực hiện
Trần Viết Khôi














Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 2

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 còn 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 để 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 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 của học sinh, sinh viên vào máy. Do trường học
ngày càng được mở rộng, ngày càng có nhiều người tham gia học dẫn đến
công việc nhập điểm vào sổ sách ngày càng nhiều. Do đó công việc nhập
điểm vào máy đòi hỏi ở người nhập phải có một sự cần mẩn và sự tập trung
cao độ trong việc nhập điểm vì nếu người nhập nhập điểm sai thì sẽ ảnh
hưởng nghiêm trọng đến kết quả học tập của người học. Để cho công việc
nhập điểm trên hiệu quả hơn và ít tốn thời gian hơn thì đòi hỏi phải có một
cách nhập điểm tự động hơn.
Ngày nay với sức mạnh của ngành công nghệ thông tin và dưới sự hỗ trợ
của các thiết bò phần cứng (như máy Scan, máy in …) thì sự thay thế công

việc nhập điểm bằng tay không còn khó nữa mà thay vào đó là việc nhập
điểm hoàn toàn do máy tính đảm trách muốn vậy ta phải có một chương
trình “Nhập điểm tự động”.
Để 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ô hoạt động sao cho hoàn
chỉnh và phù hợp với thực tế.
Chúng em luôn luôn ghi nhớ công ơn các thầy cô đã dạy dỗ để
chúng em có được như ngày hôm nay . Chúng em xin chân thành
cảm ơn thầy Huỳnh Văn Đức đã tận tình giúp đỡ chúng em hoàn
thành đề tài tốt nghiệp này.
Sinh viên
Trần Viết Khôi




Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 3

NHẬN XÉT CỦA GIẢNG VIÊN












































Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 4

Mục lục

Chương 1: Yêu cầu của đề tài
1. Đặt vấn đề : 8
2. Giới hạn vấn đề và phát biểu bài toán : 8
2.1. Giới hạn vấn đề : 8
2.2. Phát biểu bài toán : 8
3. Phân tích dữ liệu đầu vào và ra: 8
3.1. Mô tả bảng điểm: 9
3.1.1. Phần tựa: 9
3.1.2. Phần thân: 9
3.1.3. Phần cuối: 9
3.2. Mô tả ảnh điểm : 11
3.3. Các dữ liệu đầu ra : 12
4. Những vấn đề cần được giải quyết : 12
5. Yêu cầu của đề tài : 12
5.1. Về mặt ứng dụng 12
5.2. Về mặt kỹ thuật 12
5.3. Một số yêu cầu khác : 12

Chương 2: Phân tích vấn đề và đưa ra giải thuật

1. Các vấn đề về đọc file Bitmap : 14
1.1. Nếu ra một số đònh dạng ảnh khi Scan : 14
1.2. Cấu trúc của window bitmap : 15
1.2.1. Cấu trúc Header : 16
1.2.2. Cấu trúc Info Header : 16
1.2.3. Cấu trúc bảng màu : 17
1.3. Phân tích một số khó khăn khi đọc ảnh bitmap : 17
1.4. Đưa ra cách đọc ảnh khả thi : 18
1.5. Xây dựng giải thuật : 18
1.5.1. Mô tả giải thuật : 18
1.5.2. Lưu đồ giải thuật : 20
1.6. Đoạn chương trình minh hoạ : 21
2. Xử lý màu trong bảng điểm : 23
2.1. Chế độ màu khi Scan : 23
2.2. Lý do phải lọc màu trong bảng điểm : 24
2.3. Đưa ra những khoảng màu được sử dụng để lấy điểm đen : 24
2.4. Xây dựng giải thuật : 24
2.4.1. Mô tả giải thuật : 24
2.4.2. Lưu đồ giải thuật : 25
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 5

2.5. Đoạn chương trình minh hoạ : 25
3. Quá trình xử lý ảnh bò biến đổi : 25
3.1. Tại sao phải xử lý ảnh bò biến đổi : 26
3.2. Các loại biến đổi thường gặp trong file điểm : 26
3.2.1. Phép tònh tiến : 26
3.2.2. Phép quay : 26
3.2.3. Phép biến dạng : 27
3.3. Tại sao chỉ xử lý biến đổi quay : 28

3.4. Các giải pháp để xử lý một ảnh quay : 28
3.5. Xây dựng giải thuật : 29
3.5.1. Tính góc quay : 29
3.5.1.1. Giải thuật tính góc quay : 29
3.5.1.2. Lưu đồ giải thuật : 29
3.5.2. Tính ma trận quay : 30
3.5.2.1. Giải thuật tính ma trận quay : 30
3.5.2.2. Lưu đồ giải thuật : 30
3.5.3. Chuyển đổi toạ độ của một điểm theo ma trân quay : 31
3.5.3.1. Giải thuật chuyển toạ độ : 31
3.6. Đoạn chương trình minh hoạ : 31
3.6.1. Tính góc quay : 31
3.6.2. Tính ma trận quay : 31
3.6.3. Chuyển toạ độ theo ma trận quay : 32
4. Xác đònh mốc : 32
4.1. Tại sao phải sử dụng mốc : 33
4.2. Xác đònh các khoảng ảnh có thể xác đònh được mốc : 33
4.3. Giải pháp để xác đònh tâm của một mốc : 34
4.4. Xây dựng giải thuật : 35
4.4.1. Xác đònh mốc có trong một khoảng điểm : 35
4.4.1.1. Giải thuật : 35
4.4.1.2. Lưu đồ : 36
4.4.2. Xác đònh một pixel đen có thuộc một mốc : 37
4.4.2.1. Giải thuật : 37
4.5. Đoạn chương trình minh hoạ: 39
4.5.1. Chương trình xác đònh mốc trong một khoảng điểm : 39
4.5.2. Chương trình xác đònh một pixel có thuộc một mốc : 39
5. Xác đònh điểm tô đen : 40
5.1. Tại sao phải xác đònh điểm tô đen : 40
5.2. Xác đònh các khoảng ảnh có thể tìm được điểm tô : 41

5.3. Giải pháp để xác đònh tâm của điểm tô : 42
5.4. Xây dựng giải thuật : 43
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 6

5.4.1. Xác đònh điểm tô trong một khoảng điểm : 43
5.4.1.1. Giải thuật : 43
5.4.1.2. Lưu đồ : 44
5.4.2. Xác đònh một pixel đen có thuộc điểm tô : 46
5.4.2.1. Giải thuật : 46
5.5. Đoạn chương trình minh hoạ : 49
5.5.1. Chương trình xác đònh điểm tô trong một khoảng điểm: 49
5.5.2. Chương trình xác đònh một pixel đen có thuộc điểm tô : 49
6. Xác đònh điểm : 52
6.1. Tầm quan trọng của việc xác đònh điểm : 52
6.2. Xác đònh các toạ độ có điểm : 52
6.3. Giải pháp để tính điểm : 53
6.4. Xây dựng giải thuật : 54
6.4.1. Giải thuật tính điểm : 54
6.4.2. Lưu đồ tính điểm và vò trí : 56
6.5. Đoạn chương trình minh hoạ cách tính điểm và vò trí : 57
7. Các file mà chương trình xuất ra : 58
7.1. Tầm quan trọng của file này : 58
7.2. Cấu tạo của file điểm : 58
7.3. Cấu tạo của file lỗi : 58
7.3.1. Cấu tạo : 58
7.3.2. Danh sách các lỗi có thể xảy ra : 59

Chương 3: Thiết kế chương trình
1. Quá trình nhập điểm tự động : 60

2. Danh sách các sự kiện của quá trình xử lý điểm : 60
3. Sơ đồ dòng dữ liệu (DFD) về quá trình xử lý nhập điểm tự động: 60

Chương 4: Đánh giá sai số
1. Lý thuyết xác suất thống kê bài toán ước lượng tỷ lệ: 66
2. p dụng để tính toán cho bài toán : 67

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








Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 7













CHƯƠNG 1:
YÊU CẦU CỦA ĐỀ TÀI
























1. Đặt vấn đề :
Từ trước đến nay trên thực tế ở Việt Nam chưa có một chương trình nào
phục vụ cho việc nhập điểm tự động. Đề 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

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 8

hoạt động tốt nó sẽ giúp ích rất nhiều trong việc nhập điểm, 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 …
2. Giới hạn vấn đề và phát biểu bài toán :
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 (các điểm số), mã số của các thí sinh, các môn học, kì
thi … 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à 15 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 là 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ự của điểm đó trong
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ố phách, môn, lớp và có
thể là số lần thi. Do đó vấn đề ở đây là làm sao nhận dạng được tâm của
các điểm tô và cho ra điểm đưa vào CSDL.

2.2. Phát biểu bài toán :
Giáo viên khi chấm điểm xong sẽ đưa bảng điểm lên phòng đào tạo.
Người nhập điểm sẽ lấy bảng điểm đưa vào máy Scan, máy Scan cho ra một
file ảnh Bitmap, file ảnh này sẽ được đưa vào “Hệ thống nhập điểm tự
động” cùng với số tờ, môn học, khoá học. Chương trình sẽ xử lý chỉnh sữa
sao đó cho ra một file văn bản, file này sẽ được một chương trình cấp giao

diện đọc và xử lý để lấy được điểm và mã số sinh viên tương ứng với bảng
điểm thật và sau đó lưu vào CSDL.
“Hệ thống nhập điểm tự động” là hệ thống cho phép người nhập điểm
có thể nhập một bảng điểm tự động vào hệ thống quản lý điểm.

3. Phân tích dữ liệu đầu vào và ra:
Dữ liệu đầu vào của chương trình là một bảng điểm theo một mẫu quy
đònh khi cho vào máy Scan sẽ cho ra một file ảnh, file ảnh này được chương
trình đọc và xử lý sau đó chương trình cho ra hai file 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ó xảy ra. Sau đó một chương
trình xử lý về CSDL 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 CSDL. Dưới đây là sự mô tả các dữ liệu
trên.

3.1. Mô tả bảng điểm:
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 9

Phiếu điểm màu chủ đạo là màu đỏ, các thông tin quan trọng có màu
đen hoặc xanh dương, gồm có 3 phần chính : phần tựa, phần thân, phần
cuối.

3.1.1. Phần tựa:
Có phần thông tin cho biết bảng điểm này thuộc về trường nào, lớp nào,
khoa nào, thi môn gì, phòng nào, lúc mấy giờ…Ở phần này có một điểm
quan trọng để phục vụ cho công việc vào điểm tự động là nó có một mốc.
Mốc là một chấm tròn đen lớn bên góc trái gọi là mốc 1, đường kính đo
được là 4cm nằm cách mép giấy bên trái là 5cm. Kế bên là dòng chữ nói về
trường, khoa và lớp…. Góc bên phải là khung nhỏ chỉ dẫn cách chấm điểm
đối với bảng điểm này.

Từ tâm của chấm tròn đen đến phần thân là 32cm.

3.1.2. Phần thân:
Là một bảng gồm có 8 dòng và 32 cột. Dòng đầu tiên là dòng tiêu đề và
30 dòng còn lại là thông tin về học sinh hoặc sinh viên và phần điểm thi.
Cột đầu tiên là cột thông tin về số thứ tự, cột thứ hai là cột thông tin về mã
số của học sinh hoặc sinh viên, cột thứ ba là phần thông tin về họ và tên của
học sinh hoăc sinh viên, cột thứ tư là thông tin về ngày tháng năm sinh của
học sinh hoặc sinh viên, cột thứ năm là phần thông tin điểm ghi bằng số, cột
thứ sáu là thông tin về điểm tô, trong đó có 10 ô tròn để giáo viên tô đen
tương ứng với điểm trong ô tròn có ghi các số từ 0 đến 10 là phần điểm
tương ứng với phần ô được tô đen. Cột thứ bảy là phần ký tên của thí sinh và
cột thứ tám là phần ghi chú của giám thò. Mỗi dòng trên phần này tương ứng
với một thí sinh được lưu trong CSDL của trường.
Điểm ghi và điểm tô được giáo viên chấm với màu bút có màu đen hoặc
màu xanh da trời và bắt buộc phải như vậy.
Vò trí từ tâm của mốc 1 đến cột của điểm tô cách nhau một khoảng chiều
rộng là 107 cm. Khoảng cách của mỗi dòng là 6cm, khoảng cách của các ô
tròn trong phần điểm tô tính từ biên của cột điểm của phần điểm tô là 4,5
cm. Đường kính của các ô tròn điểm là 3 cm. Chiều rộng của cột điểm tô là
46cm.
Phần này có chiều rộng là 188cm, chiều cao là 188cm.

3.1.3. Phần cuối:
Có các thông tin sau: số sinh viên có trong bảng điểm, số sinh viên dự
thi, số sinh viên đạt sau khi chấm xong, số sinh viên không đạt, chữ ký của
các cán bộ coi thi, chữ ký của các giáo viên chấm thi, chữ ký của thầy
trưởng khoa, ngoài ra nó còn có một thông tin nữa mà không liên quan gì
đến việc thi cử nhưng nó rất quan trọng cho việc nhập điểm tự động là mốc
thứ hai của bảng điểm.

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 10

Điểm đen này nằm ở góc phải của bảng điểm, có đường kính là 4cm. Khoảng
cách từ tâm mốc 1 đến tâm mốc 2 : chiều rộng là 183 cm , chiều cao là 223 cm .

Dưới đây là bảng điểm đã được mô tả ở trên



3.2. Mô tả ảnh điểm
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 11

Một bảng điểm khi qua máy Scan sẽ cho ra một file ảnh điểm. File ảnh
điểm mà chương trình sử dụng phải là ảnh window bitmap có độ phân giải
là 8 bit màu, chế độ màu là màu xám (nghóa là 225 màu tương ứng với ảnh
chỉ có các pixel sắc độ xám), ảnh không sử dụng các chuẩn nén nào, theo
chuẩn TWAIN, ảnh Scan phải có độ phóng đại 100%. nh phải có những
đặc điểm trên thì chương trình mới xử lí được.

nh điểm là một sản phẩm của máy Scan mà máy Scan là một thiết bò
vật lí do đó đối với những máy Scan khác nhau đều cho ra những ảnh Scan
khác nhau về màu sắc, kích thước, độ nét của bức ảnh … những khác biệt đó
do rất nhiều nguyên nhân như máy Scan cũ, mới, khác hiệu…. Bản thân máy
Scan khi ta Scan cùng một bức ảnh tại nhiều thời điểm khác nhau thì những
ảnh Scan đó cũng không hoàn toàn giống nhau. Một bảng điểm khi Scan
cho ra một ảnh Scan đôi khi lại không hoàn toàn giống như ảnh ban đầu ví
dụ : những điểm mốc đôi khi lại không tròn như thực tế …. Ngoài ra còn có
những sai lạc do con người gây ra như đặt ảnh vào máy Scan không thẳng,

ảnh bò dơ, ảnh bò dòch chuyển, quay và đôi khi còn bò biến dạng do giấy bò
cong…những biến dạng và sai lệch trên chúng ta không thể nào loại bỏ được.
trong bài này, chúng ta không giải quyết vấn đề ảnh bò biến dạng mà chỉ
giải quyết vấn đề ảnh bò xê dòch, quay và bức ảnh phải rõ nghóa là các điểm
và mốc phải có màu khác biệt so với màu viền.

Các thông số cần quan tâm của một ảnh Scan chuẩn :
 Màu của các mốc và điểm tô phải có giá trò màu trong khoảng 0 -
> 85. Nghóa là ảnh Scan phải có màu tương đối nhìn thấy rõ.
 Mốc phải có mật độ các pixel đen từ 100 -> 196 pixel. Nghóa là
mật độ điểm đen của mốc phải có độ lớn tương đối so với các
điểm khác để dễ phân biệt.
 Điểm tô đen phải có mật độ các pixel đen từ 30 -> 144 pixel.
Điểm tô phải được tô hơn phân nửa của ô cho tô điểm.
 Khoảng cách tính được từ tâm mốc 1(ở góc trái trên) đến tâm mốc
2 (ở góc phải dưới) có chiều rộng = 730 pixel, chiều cao= 874
pixel.
 Khoảng cách tính được từ tâm điểm mốc một đến vò trí đầu của ô
điểm tô có chiều rộng= 426 pixel và chiều cao= 144 pixel.
 Chiều rộng của một ô để tô điểm tính được là 16 pixels  11 ô
điểm là 176 pixel.
 Chiều cao của một hàng tính được là 24 pixel  30 hàng là 720
pixel.
nh điểm sử dụng để tính điểm phải có đầy đủ hai mốc và độ quay của
ảnh không vượt qua  10 độ được tính từ mốc một.
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 12

3.3. Các dữ liệu đầu ra :
Đầu ra của chương trình gồm có hai file text có cấu trúc như sau:

Đối với file chứa điểm và vò trí gồm có 2 cột : cột thứ nhất chứa số thứ tự
của thí sinh trong bảng điểm, cột 2 chứa điểm tương ứng với số thứ tự của thí
sinh trong bảng điểm.
Đối với file chứa lỗi sẽ chứa lỗi của chương trình nếu nó xảy ra trong
quá trình xử lý tìm điểm và vò trí.

4. Những vấn đề cần được giải quyết :
Từ yêu cầu của bài toán đã phát sinh ra một số vấn đề mà ta cần phải
giải quyết để xử lý cho bài toán nhập điểm tự động:
 Làm sao đọc được một ảnh bitmap.
 Vấn đề xử lý màu trong bảng điểm.
 Vấn đề xử lý ảnh bò biến đổi.
 Vấn đề nhận dạng mốc.
 Nhận dạng điểm tô đen.
 Tính điểm và vò trí.
 Xuất dữ liệu.
Những vấn đề được nêu ở đây sẽ được giải quyết trong các chương
sau của đề án này.

5. Yêu cầu của đề tài :
5.1. Về mặt ứng dụng
Xây dựng một hệ thống nhập điểm tự động, trong đó hệ thống cho phép
người nhập điểm có được các điểm được nhập nhanh và chính xác điểm của
các thí sinh có trong bảng điểm vào trong máy tính (CSDL).

5.2. Về mặt kỹ thuật
Bài toán yêu cầu hệ thống có được những khả năng về mặt kỹ thuật sau:
 Có một máy Scan.
 Hệ điều hành Window 9x, 2000.


5.3. Một số yêu cầu khác
Ngoài các yêu cầu trên, ứng dụng có thể:
 Dễ dàng cài đặt
 Dễ dàng sử dụng.
 Dễ dàng cập nhật và nâng cấp




Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 13




















CHƯƠNG 2:
PHÂN TÍCH VẤN ĐỀ VÀ ĐƯA RA GIẢI THUẬT





















1. Các vấn đề về đọc file Bitmap :
1.1. Nếu ra một số đònh dạng ảnh khi Scan :
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 14

Một bức ảnh khi Scan sẽ cho ra một file ảnh ánh xạ lại tất cả những gì
mà bức ảnh có được. Do cơ cấu làm việc của máy Scan là nhận dạng ánh

sáng phản chiếu từ bức ảnh thật để cho ra những điểm sáng tương ứng với
những điểm trên bức ảnh, do đó ảnh của máy Scan trả ra là một dạng ảnh
điểm khi qua một trình xử lý đồ hoạ của máy Scan ta sẽ lưu ảnh đó lại với
những đònh dạng nào ta thích. Đối với các loại ảnh dạng vector thì kích
thước của file ảnh rất nhỏ và ảnh hiển thò trên màn hình sẽ không phụ thuộc
vào độ phân giải của màn hình nhưng cơ cấu lưu ảnh của chúng rất phức tạp
do đó để đọc và xử lý ảnh dạng vector là điều rất khó, trong khi đó một ảnh
lưu dưới dạng pixel khi hiển thò trên màn hình sẽ phụ thuộc vào độ phân giải
của màn hình và kích thước file rất lớn đối với những ảnh có độ phân giải
cao nhưng bù lại chúng rất dễ đọc và dễ xử lý.
Có rất nhiều đònh dạng ảnh mà lưu ảnh được với dạng pixel, trong số đó
có Window bitmap là được sử dụng rất nhiều trong các hệ điều hành
Windows và được sử dụng rất nhiều trong các phần mền khác. Vì những lý
do trên nên ta sẽ sử dụng file ảnh bitmap dùng cho vấn đề nhận dạng của
bài toán này.

1.2. Cấu trúc của window bitmap :
Windows bitmaps thì có ở khắp nơi trên máy tính. Dưới các hệ điều hành
của Microsoft chúng ta có thể sử dụng bitmap như icons, cursors, wallpaper,
và các thành phần khác. Tuy nhiên, Windows bitmaps thì không được dùng
phổ biến trên mạng. Bởi vì hầu hết các file bitmap đều không được nén,
chúng có kích thước rất lớn so với các file được đònh dạng theo kiểu GIF
hoặc JPEG.
Một file Windows bitmap chứa bốn phần: the bitmap file header, the
bitmap info header, the color table, và dữ liệu của ảnh.
Lưu ý: Tất cả các con số được lưu trong file bitmap đều dưới dạng Intel
byte được hiểu như là little-endian. Điều này có nghóa là byte đầu tiên trong
file thể hiện một số little-end. Ví dụ nếu bạn có một số hex 0x1234 được
đònh dạng trong little-endian, bạn sẽ viết như sau 0x34 theo sau là 0x12.
Đây là kiểu đònh dạng của Microsoft. Nếu bạn dùng Java thì bạn phải đưa

về kiểu đònh dạng big-endian nghóa là đưa về dạng số hex ban đầu 0x1234.











Bitmap file Header
Bitmap Info Header
The color table
Dữ liệu ảnh
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 15










1.2.1. Cấu trúc Header :


Byte Loại Mô tả
2 Character Loại file (file type) bắt đầu bằng ‘B’ và ‘M’
4 32-bit Int Tổng kích thước của file tính bằng byte
2 16-bit Int Dự trữ
2 16-bit Int Dự trữ
4 32-bit Int Byte-offset của file ở đó bitmap bit thực sự bắt đầu

File type trong bitmap file header cho phép chương trình biết chắc chắn
đây là một file bitmap trước khi xử lý. Nếu nó không bắt đầu với “BM” thì
không phải là file bitmap. Byte offset for the bitmap thì rất là quan trong,
bởi vì có một vài vùng đệm giữa những bit header và những bit thực sự.
Chúng ta cần phải biết có bao nhiêu vùng đệm để bỏ qua.
Lưu ý: Kỹ thuật đặt một giá trò đặt biệt tại vò trí bắt đầu của một file ( như
“BM”) thì rất phổ biến. Giá trò này thường ám chỉ như một số đònh dạng. Unix
thường sử dụng kỹ thuật này để đònh nghóa các loại file.
1.2.2. Cấu trúc Info Header :

Byte Loại Mô tả
4 32-bit Int Kích thước của info header (tính bằng byte)
4 32-bit Int Chiều rộng (tính pixels)
4 32-bit Int Chiều cao (tính pixels)
2 16-bit Int Số bitplanes (nên là 1)
2 16-bit Int Số bit trên pixel
4 32-bit Int Loại nén được sử dụng.
4 32-bit Int Số byte thực sự trên bitmap (chỉ cần thiết nếu nén được sử dụng)
4 32-bit Int Số pixel nằm ngang trên dụng cụ đo (chỉ dùng cho scaling)
4 32-bit Int Số pixel nằm đứng trên dụng cụ đo (chỉ dùng cho scaling)
4 32-bit Int Số màu thực sự được sử dụng.
4 32-bit Int Số màu mà thực sự quan trọng (giúp ta làm giảm số màu sử
dụng)


Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 16

Nếu loại nén trong bitmap info header là 0 nghóa là không sử dụng nén.
Nếu loại nén là 1, bitmap sử dụng loại nén RLE8. loại nén là 2 chỉ rằng
bitmap sử dụng loại nén RLE4.
Nén RLE8 và RLE4 cả hai đều mã hoá theo lược đồ run-length đơn giản.
Chỉ khác là RLE4 thì được sử dụng khi bạn có 4-bit pixels, và RLE8 thì được
sử dụng khi bạn có 8-bit pixels. Một mã 2-byte có thể chứa số lần lập lại và
giá trò một pixel. Số lần lập lại chỉ ra có bao nhiêu lần giá trò pixel trong một
dòng được lập lại. Nếu byte đầu tiên của đoạn mã là 0, thì byte thứ hai có
thể chỉ ra bất cứ số nào. Điều đó có nghóa rằng bạn có thể nhảy tới dòng
tiếp theo, hoặc bạn có thể có một số byte không mã hoá theo mã 2-byte
này. Bạn có thể hoàn toàn lờ đi mã hoá run-length và hầu như được hỗ trợ
của Windows bitmaps. Một vài ảnh thực sự sử dụng mã hoá run-length.

1.2.3. Cấu trúc bảng màu :
Sau bitmap info header là bảng màu. Màu thì được lưu dưới đònh dạng
được gọi là RGBQUAD chứa 4 byte. Một giá trò RGBQUAD chứa một giá
trò 8-bit cường độ blue, 8-bit cường độ green, 8-bit cượng độ red, và 8-bit 0.
Bởi vì tất cả các màu đều được pha trộn từ ba màu red-green-blue, nhưng
nhớ rằng đây thực sự được là một số 32-bit little-endian. Nếu bạn đọc một
RGBQUAD và thực hiện sửa lại cho đúng, bạn nên thiết lập chuẩn màu
RGB. Số màu trong bảng màu thì được cho trong bitmap info header như là
số màu thực sự được sử dụng.
Lưu ý: Nếu bitmap chứa những pixel sử dụng 24-bit màu, thì nó không
có bảng màu bởi vì giá trò màu thì được lưu trữ trong pixel bits.

Cấu tạo bảng màu:


1.2.4. Cấu trúc của dữ liệu :


Mọi thứ khác thường nhất thuộc về Windows bitmaps là sự lưu trữ
upside-down. Dòng cuối cùng trong bitmap thì được lưu trữ ở dòng đầu và
những dòng đầu thì được lưu trữ ở cuối.
Số bit để lưu dữ liệu của ảnh thì được lưu trong phần bitmap info header
và tuỳ vào các loại nén được sử dụng trong file.
Điều này sẽ gây phức tạp cho ta khi đọc một ảnh Windows bitmaps. Ta
phải đọc dòng đầu của file ảnh bitmap và sau đó lưu vào vò trí dòng cuối
cùng của mảng hiển thò. Đối với bitmap lớn hơn 64 Kb thì điều này sẽ rất
khó khăn.
Cách đọc dữ liệu ảnh sẽ được mô tả trong chương sau.


8-bit Blue

8-bit Green

8-bit Red

8-bit 0

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 17

1.3. Phân tích một số khó khăn khi đọc ảnh bitmap :
nh bitmap là một ảnh dạng pixel do đó nó có kích thước rất lớn. Một
bảng điểm khi Scan ra file ảnh bitmap (100%) thường có chiều rộng khoảng

783 pixel và chiều cao khoảng 1108 pixel như vậy một ảnh điểm sẽ có tổng
cộng khoảng 867564 pixel tương đương khoảng 804 Kb. Để đọc được toàn
ảnh bitmap vào bộ nhớ đòi hỏi máy tính của ta phải có một bộ nhớ lớn và
tốc độ máy phải cao. Với nền kinh tế nước ta ngày nay thì rất khó có thể
đáp ứng được. Do đó, ta phải có một cách khác để tiến hành việc đọc file
điểm trên, mà nếu ta có được những điều kiện trên thì với một bộ nhớ máy
tính được cấp phát hạng hẹp như của chương trình C++ (64Kb) thì việc đọc
toàn bộ bức ảnh vào bộ nhớ là một chuyện không tưởng; do đó ta chỉ có thể
tìm ra một cách xử lý nào đó để đọc ảnh.
Để đọc được một ảnh bitmap thì ta gặp một khó khăn rất lớn là không
đủ bộ nhớ để đọc toàn bộ ảnh bitmap.

1.4. Đưa ra cách đọc ảnh khả thi :
Từ những khó khăn đã được nói ở trên dẫn đến việc ta phải tìm cách nào
để đọc được từng phần của bức ảnh ánh xạ nó vào bộ nhớ và tiến hành xử
lý bức ảnh theo kiểu xử lý từng phần.
Khi đọc từng phần của bức ảnh ta có được những cái lợi như là không sợ
không đủ bộ nhớ, vì chương trình không đọc hết toàn bộ bức ảnh mà chỉ đọc
những phần quan trọng cần giải quyết, điều này làm cho chương trình chạy
nhanh hơn. Ngoài ra, ta còn có những điểm khó khăn như khi đọc từng phần
ta sẽ đọc những nơi nào và có chắc rằng những nơi đó là luôn luôn chính
xác hay không?. Do rất nhiều nguyên nhân ảnh hưởng đến bức ảnh Scan do
đó vấn đề nêu trên sẽ không khắc phục được hoàn toàn mà chỉ giải quyết
một phần nào đó thường xảy ra mà thôi.
Vấn đề ở đây là ta phải đọc được từng phần của bức ảnh, muốn đọc được
từng phần của bức ảnh phải có được tối thiểu các thông tin sau : khoảng
ảnh muốn đọc, chiều rộng và chiều cao thật sự của bức ảnh.
Với giải pháp đã đưa ra ta thấy việc đọc từng phần của bức ảnh là một
giải pháp rất khả thi vì nó không tốn kém nhiều về bộ nhớ và chương trình
ta chạy nhanh .



1.5. Xây dựng giải thuật :
1.5.1. Mô tả giải thuật :
nh Scan chưa phải qua xử lý bởi một trình xử lý đồ họa nào. Để đọc
được ảnh này đòi hỏi chương trình phải lường trước mọi khả năng có thể xảy
ra ví dụ như đó không phải là ảnh điểm, ảnh quá mờ, ảnh bò biến dạng, ảnh
không nằm đúng vò trí cần thiết, . . .
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 18

Như ta đã phân tích ở trên thì một ảnh bitmap có kích thước rất lớn dó đó
ta phải có cách giải quyết là đọc ảnh bitmap theo từng phần. Muốn đọc
được từng phần của bức ảnh ta phải có được các thông tin tọa độ góc trên và
tọa độ góc dưới, chiều rộng và chiều cao của ảnh.
Giải thuật để đọc ảnh bitmap từng phần:
 Đổi tọa độ của các điểm để phù hợp với toạ độ của file ảnh, cụ
thể là tọa độ y của hai góc. Bởi vì file bitmap là một file mà nội
dung của ảnh được lưu ngược nên khi ta đưa tọa độ vào là tọa độ
hiển thò của bức ảnh nếu ta không đổi tọa độ thì ta sẽ nhận được
ảnh không đúng như ý đònh của ta. Tọa độ được tính như sau:
y1=height-y1
y2=height-y2
Khi tiến hành đổi tọa độ xong ta mới tiến hành đọc phần ảnh đó.
 Mỗi bức ảnh lớn đều có những phần dư ra ở cuối mỗi dòng. Do đó
trước khi tiến hành đọc ảnh ta phải tính được phần dư đó để có
những bước nhảy đúng. Mỗi bức ảnh đều có những phần dư khác
nhau do cơ chế lưu ảnh của Microsoft Bitmap (gọi là hiệu ứng lề
của ảnh bitmap). Để đọc ảnh chính xác ta phải khử hiệu ứng lề
của ảnh, công thức để tính hiệu ứng lề dư ra như sau:

du=fileSize-(bitmapOffset+width*height)
du=du/height
 Ta tiến hành nhảy đến vò trí của (x1,y1) đọc từng pixel cho đến
x2. Sau đó nhảy đến vò trí của của y1-1 và tiến hành đọc như trên
cứ thế cho đến khi đến vò trí của (x2, y2) thì dừng lại. Quá trình
đọc là quá trình đọc ngược từ dưới lên trên nhưng lưu vào mảng là
từ trên xuống dưới.
Công thức tính bước nhảy đến toạ độ (x1, y1) có khử hiệu ứng lề:
offset=bitmapOffset+((width+du)*y1)+x1
 Trong quá trình đọc ta tiến hành cùng lúc với việc lọc màu các
điểm khi ấy mảng đọc được trong phần ảnh trên là một mảng toàn
0 và 1 với giá trò 0 là những màu không quan tâm và 1 là những
màu đen. Việc lọc màu làm cho quá trình xử lý của ta được đơn
giản vì ta không cần quan tâm là màu này là màu đen … Quá trình
lọc màu và lọc ảnh được tiến hành như sau:
Những điểm nào có màu từ 0 -> 83 thì ta giữ lại và xem nó là
điểm đen và lưu nó là 1, còn các điểm khác thì cho là 0.

du = fileSize - ( bitmapOffset + width * height)
du = du / height
y = y1 - y2
x = x2 - x1
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 19

h= 1
while (h <= y)
Begin
pos = (h - 1) * x
offset=bitmapOffset + ((width + du) * (y1 - h)) + x1

// nhảy đến vò trí offset
fseek(in,offset,0)
w=0
while ( w < x)
Begin
// đọc dữ liệu ảnh
fread(&currByte,1,1,in)
// lọc màu và gán cho mảng dữ liệu
pixels[pos++] = filter(currByte)
End
End





























Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 20

1.5.2. Lưu đồ giải thuật :

Begin
End
x1, y1
x2, y2
width,height
y1=height-y1;
y2=height-y2;
du=fileSize-(bitmapOffset+width*height);
du=(du/height)
y=y1-y2
x=x2-x1
h=1
pos = (h-1)* x;
offset=bitmapOffset+((width+du)*(y1-h))+x1;
nhảy đến vò trí của offset
W=0

Đọc dữ liệu cho vào
biến currbyte
Ghi dữ liệu dã
lọc màu vào
mảng
w < x
Đúng w++
h <=y
Sai
Đúng h++
Sai
Khối lọc
màu






Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 21

1.6. Đoạn chương trình minh hoạ :
Chương trình hiện thực việc xử lí của lưu đồ trên để đọc một khối
các pixel trong file ảnh ra một mảng các pixel:

Hàm mô tả việc đọc một đoạn pixel ra mảng: hàm này có bốn
tham số đưa vào x1,y1,x2,y2 bốn tham số này có kiểu là số nguyên
có ý nghóa là toạ độ của điểm trái trên và điểm trái dưới của phần
ảnh cần đọc, toạ độ này là toạ độ thật khi ta xem một bức ảnh. Hàm

trả về một mảng pixel đã được đọc từ file ảnh.

unsigned char* BMPReader::getPixels(int x1,int y1,int x2,int y2) {

// chuyển đổi toạ độ sang toạ độ thật của ảnh
y1=height-y1;
y2=height-y2;

// cấp phát bộ nhớ cho mảng chứa thông tin ảnh (pixel)
if(!(pixels= new unsigned char[long(y1-y2)*(x2-x1)]))
{
printf("khong du bo nho");
exit(1);
}

//gọi hàm đọc ảnh tương ứng
readRGB(x1,y1,x2,y2);
return pixels;
}

Hàm mô tả cách đọc ảnh : hàm bên dưới hiện thực cách đọc ảnh
kiểu RGB không nén ảnh có độ phân giải là 8 bit, nghóa là trong một
byte được lưu trữ trong file chỉ chứa nội dung của một pixel mà thôi.
Hàm này có bốn tham số đưa vào: toạ độ của góc trái trên và góc
phải dưới của phần ảnh trên file bitmap, toạ độ này là toạ độ thực
trên file ảnh. Hàm này ngoài chức năng đọc nó còn có chức năng khử
hiệu ứng lề và làm chức năng của bộ lọc màu của ảnh. Nguyên tắc
khử hiệu ứng lề khi ảnh đọc đến biên nó phải bỏ qua một số byte do
hiệu ứng lề gây ra, các byte hiệu ứng lề đã được mô tả như ở trên.
Hàm này thuộc lớp BMPReader lớp này có chức năng để đọc các file

ảnh bitmap.
Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 22

Hàm có 4 tham số đưa vào là toạ độ hai góc trên và dưới của đoạn
ảnh cần đọc, 4 tham số này có kiểu là số nguyên. Hàm này thuộc lớp
BMPReader.

void BMPReader::readRGB(int x1,int y1,int x2,int y2) {

//khai báo các biến dùng cho việc di chuyển của con trỏ file
//chứa byte hiện hành
unsigned char currByte;
//chứa chiều rộng và chiều cao của phần pixel cần đọc
int y,x;
// xử lí hiệu ứng lề của bitmap
int du=fileSize-(bitmapOffset+width*height);
du=(du/height);
//tính toán chiều rộng và chiều cao của phần pixel đọc vào
y=y1-y2;
x=x2-x1;
//biến chứa vò trí mà con trỏ file cần nhảy đến
long offset;

//đọc từ trên xuống của bức ảnh
for (int h=1; h <=y; h++) {

//vò trí của phần tử trong mảng pixel
long pos = long(h-1)* x;
//vò trí cần đọc giá trò pixel

offset=bitmapOffset+((width+du)*long(y1-h))+x1;
//nhảy đến vò trí cần đọc
fseek(in,offset,0);

//đọc theo chiều ngang của bức ảnh
for (int w=0; w < x; w++) {
//đọc giá trò tại vò trí hiện hành
fread(&currByte,1,1,in);
//lọc chỉ lấy những điểm màu có giá trò từ 0 đến 83 biến thành giá trò là 1
pixels[pos] = filter(currByte);
pos++;
}
}
}

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 23

2. Xử lý màu trong bảng điểm :
2.1. Chế độ màu khi Scan :
Trong bảng điểm có từ 2 đến 3 màu cơ bản là màu đỏ, xanh dương và
đen. Khi Scan ra file ảnh sẽ cho ra rất nhiều cường độ màu khác nhau, bảng
thân trong một điểm đen đã có rất nhiều sắc độ màu hình thành nên điểm
đen. Khi scan trên nhiều máy Scan sẽ cho ra nhiều bức ảnh có sắc độ màu
khác nhau, độ sáng tối của ảnh cũng khác nhau.
Vấn đề trên là một vấn đề liên quan đến cơ cấu vật lý của máy in và
máy Scan, ta không thể nào khắc phục được. Đối với những chế độ màu
khác nhau như chế độ màu 24 bit nghóa là có 2
24
màu nếu ta chọn Scan với

chế độ này thì ta sẽ rất khó khăn trong vấn đề lọc màu vì nó sinh ra một
khoảng màu rất lớn, dẫn đến file ảnh của ta cũng rất lớn khó trong việc xử
ly.ù Thay vào đó nếu ta chọn chế độ màu là 8 bit nghóa là có 256 sắc độ màu
mô tả cho bức ảnh và khó khăn trên được giảm bớt.
Do đó việc chọn chế độ màu 8 bit sẽ làm cho công việc xử lý của ta ít
vất vả hơn và chương trình sẽ chạy được nhanh hơn.

2.2. Lý do phải lọc màu trong bảng điểm :
Một file ảnh của bảng điểm scan với chế độ màu 8 bit khi nhìn ta thấy
chỉ có những chấm đen và các điểm còn lại có màu nhạt hơn nhưng thật sự
trong những chấm đen và những màu nhạt đó là vô số sắc độ màu khác
nhau. Nếu ta xử lý điểm mà không lọc màu thì ta rất dễ lầm lẫn giữa những
màu sắc của chấm đen và những màu chữ và màu viền. Do đó làm cho vấn
đề xử lý ảnh của ta trở nên phức tạp để nhận diện các điểm đen trong vô số
các điểm khác của bức ảnh.
Khi ta lọc màu chỉ để lại những điểm màu nào cần quan tâm thì việc
nhận diện các màu trở nên đơn giản hơn và làm cho quá trình nhận dạng trở
nên nhẹ nhàng hơn.

2.3. Đưa ra những khoảng màu được sử dụng để lấy điểm đen :
Khi khảo sát trên một vài bức ảnh điểm ta nhận thấy những điểm mốc và
những điểm tô đen có sắc màu trong khoảng từ 0 đến 83 những sắc màu lớn
hơn là màu của những màu nhạt. Tuy nhiên khoảng màu trên chỉ là tương
đối đúng với một số bức ảnh, với những bảng điểm có sắc độ đậm thì
khoảng màu trên không hoàn toàn loại bỏ được tất cả các điểm màu của
đường viền.
Tuy nhiên với khoảng màu từ 0 đến 83 ta sẽ lấy được tương đối mốc của
rất nhiều ảnh điểm và từ các giá trò màu ở mức thấp nhất của các mốc đó ta
có thể lấy ra các màu chính xác của các điểm tô. Khoảng màu để lọc các
điểm tô được tính như sau:

Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 24

Maxcolor = mincolor + 45
Với cách tính khoảng màu như trên thì ta có thể giải quyết vấn đề lọc
màu tốt hơn lấy một khoảng màu lớn và độ lọc màu chính xác hơn đối với
từng bức ảnh, khi đó với những bức ảnh được scan với những máy sacn khác
nhau thì ta sẽ tính ra được những khoảng màu khác nhau. Do đó các khoảng
màu của ta có tính chất động và giá trò của nó sẽ phụ thuộc vào bản thân
của từng bức ảnh ( phụ thuộc vào giá trò của mốc).

2.4. Xây dựng giải thuật :
2.4.1. Mô tả giải thuật :
Giải thuật xử lý màu trong bảng điểm được thực hiện như sau: khi đọc dữ
liệu để xác đònh mốc từ file ảnh ta tiến hành xác đònh khoảng màu nhỏ nhất
trong mốc đó.
Khi có được giá trò khoảng màu được tính như công thức ở trên, ta đưa
khoảng màu đó làm dữ liệu cho bộ lọc. Sau đó ta sẽ tiến hành đọc dữ liệu
và so sánh dữ liệu đó có thuộc vào khoảng màu mà ta đã tính toán trước
nếu trùng vào những khoảng màu nào thí ta chuyển dữ liệu của file ảnh đó
về một màu chuẩn ta đã tính trước. Nếu bức ảnh ta có nhiều màu thì ta phải
so sánh với lần lược với nhiều khoảng màu tương ưng với những màu đó.

Sau đây là quá trình để lấy được khoảng màu lọc:
 Đọc khoảng ảnh có mốc.
 Tìm giá trò min của khoảng màu có mốc đó.
 Tính khoảng màu cận trên theo công thức
Maxcolor = mincolor + 45
 Đọc khoảng ảnh để xác đònh điểm đen.
 Lấy khoảng màu đã tính được ở trên đưa vào bộ lọc.

 Dùng bộ lọc đó để lọc các màu của khoảng ảnh có điểm tô đen.












Luận Văn Tốt Nghiệp GVHD: Huỳnh Văn Đức
SVTH: Trần Viết Khôi Trang 25






2.4.2. Lưu đồ giải thuật :


Begin
End
Dữ liệu ảnh
So sánh dữ liệu ảnh với
khoảng màu tính trước
Đưa dữ liệu

màu về 1
Đúng
Đưa dữ liệu
màu về 0
Sai



2.5. Đoạn chương trình minh hoạ :
Sau đây là đoạn chương trình mô tả bộ lọc màu.
Hàm gồm có hai tham số đưa vào là data và maxcolor với ý nghóa của
các tham số như sau:
Data : có kiểu số nguyên chưa dữ liệu màu của pixel cần lọc
Maxcolor : khoảng cân trên của bộ lọc.
Hàm trả về giá trò là dữ liệu đã lọc được có hai giá trò như sau : giá trò 0
hoặc 1 tương ứng, với giá trò 1 là màu trong khoảng màu cần lọc và ngược
lại là những màu không quan tâm.

int filter(int data, int maxcolor) {
if(data>=0 && data<=maxcolor) return 1;
return 0;
}

×