BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH
KHOÁ LUẬN TỐT NGHIỆP
THIẾT KẾ VÀ CHẾ TẠO MÔ HÌNH NHẬN DẠNG MÃ VẠCH
ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH
Họ và tên sinh viên: Hà Tấn Đắc
Trần Thành Tuân
Ngành: CƠ ĐIỆN TỬ
Niên khoá: 2007 - 2011
Tháng 6 năm 2011
THIẾT KẾ VÀ CHẾ TẠO MÔ HÌNH NHẬN DẠNG MÃ VẠCH ỨNG
DỤNG CÔNG NGHỆ XỬ LÝ ẢNH
Tác giả
HÀ TẤN ĐẮC
TRẦN THÀNH TUÂN
Khóa luận được đệ trình để đáp ứng yêu cầu
cấp bằng Kỹ sư ngành
CƠ ĐIỆN TỬ
Giáo viên hướng dẫn:
ThS. Nguyễn Lê Tường
KS. Huỳnh Cao Vân
Đề tài nghiên cứu “Thiết kế và chế tạo mô hình nhận dạng mã vạch ứng
dụng công nghệ xử lý ảnh” được tiến hành tại ĐẠI HỌC NÔNG LÂM TP.HCM,
thời gian từ 08/03/2011 đến 30/05/2011.
Mục đích của đề tài này là tạo ra một công cụ viết bằng ngôn ngữ C# kết hợp với
bộ thư viện mã nguồn mở EmguCV để nhận dạng mã vạch và xuất cơ sở dữ liệu bằng
công nghệ xử lý ảnh. Các mã vạch được thiết kế sẵn và được dán lên thẻ. Webcam
được lắp trong hộp đen có chiếu sáng sẽ chụp hình mã vạch khi thẻ được đưa vào. Ảnh
chụp sẽ được lưu vào bộ nhớ RAM và chuyển thành ảnh xám. Ảnh nhị phân chuyển từ
ảnh xám sẽ được xử lý để tính diện tích từng vạch và hiển thị giá trị tương ứng của
mỗi vạch đó. Giá trị của mã vạch được so sánh với cơ sở dữ liệu có sẵn. Nếu giá trị
mã vạch trên thẻ và giá trị mã vạch trong cơ sở dữ liệu khớp nhau thì chương trình sẽ
hiển thị thông tin tương ứng với mã vạch đó.
iii
MỤC LỤC
Trang tựa........................................................................................................................... i
Lời cảm ơn .......................................................................................................................ii
Tóm tắt đề tài ................................................................................................................ iii
Mục lục .......................................................................................................................... iv
Danh sách chữ viết tắt ..................................................................................................vii
Danh mục hình vẽ ....................................................................................................... viii
CHƯƠNG 1: MỞ ĐẦU
1.1 Lý do chọn đề tài ...................................................................................................... 1
1.2 Nhiệm vụ đề tài ........................................................................................................ 1
1.3 Mục đích đề tài ......................................................................................................... 2
1.4 Phương pháp nghiên cứu .......................................................................................... 2
CHƯƠNG 2: TỔNG QUAN VÀ CÁC VẤN ĐỀ LIÊN QUAN
2.1 Xử lý ảnh và các vấn đề cơ bản trong xử lý ảnh ...................................................... 3
3.1 Vật liệu và phương tiện .......................................................................................... 35
3.2 Phương pháp ........................................................................................................... 35
3.2.1 Nghiên cứu lý thuyết ....................................................................................... 35
3.2.2 Phương pháp thực hiện ................................................................................... 36
CHƯƠNG 4: KẾT QUẢ VÀ THẢO LUẬN
4.1 Hộp lấy ảnh và thẻ .................................................................................................. 37
4.1.1 Hộp lấy ảnh ..................................................................................................... 37
4.1.2 Thẻ và mã vạch ............................................................................................... 40
4.2 Chương trình ........................................................................................................... 42
4.2.1 Giao diện của chương trình ............................................................................. 42
4.2.2 Cơ sở dữ liệu .................................................................................................... 42
4.2.3 Lưu đồ giải thuật của chương trình ................................................................. 43
4.3 Kết quả khảo nghiệm .............................................................................................. 47
CHƯƠNG 5: KẾT LUẬN VÀ ĐỀ NGHỊ
5.1 Kết quả đạt được...................................................................................................... 53
5.2 Hướng phát triển của đề tài ..................................................................................... 53
TÀI LIỆU THAM KHẢO.......................................................................................... 54
PHỤ LỤC ..................................................................................................................... 55
v
DANH SÁCH CHỮ VIẾT TẮT
ASCII – American Standard Code for Information Interchange
CCD – Charge Coupled Device
CMOS – Complementary Metal-Oxide-Semiconductor
EAN – European Article Numbering
GIS – Geographic Information System
IDE – Integrated Development Environment
Laser – Light Amplification by Stimulated Emission of Radiation
Hình 2.18 – Phần mềm nhận dạng mã vạch Barcode 12.0 của KlinkSoft .................... 31
Hình 2.19 – Giao diện phần mềm DTK Barcode Reader SDK ..................................... 32
Hình 2.20 – Giao diện phần mềm EvoBarcode ............................................................. 34
Chương 3
Hình 3.1 – Webcam Colorvis 1009 ............................................................................... 35
vii
Chương 4
Hình 4.1 – Hộp lấy ảnh thiết kế trên Pro/E ................................................................... 38
Hình 4.2 – Mô hình thực tế của hộp lấy ảnh ................................................................. 38
Hình 4.3 – Kết nối hộp lấy ảnh với máy tính ................................................................ 39
Hình 4.4 – Tạo font barcode với phần mềm High-Logic FontCreator 6.0.................... 40
Hình 4.5 – Tạo mã vạch với font barcode ..................................................................... 40
Hình 4.6 – Mã vạch ....................................................................................................... 41
Hình 4.7 – Thẻ có dán mã vạch ..................................................................................... 41
Hình 4.8 – Giao diện chương trình nhận dạng mã vạch ............................................... 42
Hình 4.9 – Cơ sở dữ liệu được tạo bằng Access ........................................................... 42
Hình 4.10 – Sơ đồ tổng quát của chương trình.............................................................. 43
Hình 4.11 – Giải thuật chuyển sang ảnh nhị phân ........................................................ 44
Hình 4.12 – Giải thuật tính diện tích một vạch ............................................................ 45
Hình 4.13 – Giải thuật nhận dạng vạch ........................................................................ 46
Hình 4.14 – Kết quả khảo nghiệm với mã vạch có diện tích lớn nhất ......................... 47
Hình 4.15 – Kết quả khảo nghiệm với mã vạch có diện tích nhỏ nhất ........................ 48
Hình 4.16 – Kết quả khảo nghiệm với mã vạch ngẫu nhiên (02007)............................ 49
Hình 4.17 – Kết quả khảo nghiệm với mã vạch ngẫu nhiên (92154)............................ 50
Hình 4.18 – Kết quả khảo nghiệm với mã không hợp lệ............................................... 51
Hình 4.19 – Kết quả khảo nghiệm với trường hợp không có thẻ .................................. 52
Hình 4.20 – Kết quả khảo nghiệm với trường hợp bị kẹt thẻ ........................................ 50
1
1.3 Mục đích đề tài
Mục đích của đề tài nhằm xây dựng một chương trình dùng để đọc mã vạch từ
camera, từ đó có thể phát triển để ứng dụng vào các yêu cầu đọc mã vạch thực tế như
thư viện, nhà sách, siêu thị…
1.4 Phương pháp nghiên cứu
Dựa trên yêu cầu của đề tài chúng em đã thu thập tài liệu về mã vạch và cách
giải mã mã vạch, tìm hiểu về các máy đọc mã vạch thực tế để ứng dụng vào việc thiết
kế mô hình đọc mã vạch.
Sau khi nghiên cứu về mã vạch chúng em đi tìm hiểu về lý thuyết xừ lý ảnh,
chủ yếu đi về các thuật toán tăng cường chất lượng ảnh để camera nhận dạng tốt hơn.
Và cuối cùng là việc viết chương trình nhận dạng mã vạch từ các hình camera
thu về.
2
Chương 2
TỔNG QUAN VÀ CÁC VẤN ĐỀ LIÊN QUAN
2.1 Xử lý ảnh và các vấn đề cơ bản trong xử lý ảnh
2.1.1 Xử lý ảnh là gì?
Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò
quan trọng nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử
lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc
sống. Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác người máy.
Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết
quả mong muốn. Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt
hơn” hoặc một kết luận.
Lưu trữ
Hình 2.2 - Các bước cơ bản trong một hệ thống xử lý ảnh
3
2.1.2 Các khái niệm cơ bản trong xử lý ảnh
Ảnh và điểm ảnh
- Điểm ảnh: được xem như là dấu hiệu hay cường độ sáng tại một tọa độ trong
không gian của đối tượng.
- Ảnh: là một tập hợp hữu hạn các điểm ảnh kề nhau. Ảnh thường được biểu
diễn bằng một ma trận hai chiều, mỗi phần tử của ma trận tương ứng với một điểm
ảnh.
Phân loại ảnh
- Ảnh nhị phân (đen trắng): là ảnh có giá trị mức xám của các điểm ảnh được
biểu diễn bằng 1 bit (giá trị 0 hoặc 1). Ví dụ về biểu diễn ảnh nhị phân:
0
1
1
0
1
1
1
94
21
0
0
0
156 9
0
11
245 12
- Ảnh màu: thông thường, ảnh màu được tạo nên từ 3 ảnh xám đối với màu nền
đỏ (RED), xanh lá cây (GREEN), xanh lam (BLUE). Tất cả các màu trong tự nhiên
đều có thể được tổng hợp từ 3 thành phần màu trên theo các tỷ lệ khác nhau. Ví dụ về
biểu diễn ảnh màu:
Ma trận biểu diễn mức xám của thành phần RED:
0
7
11
0
1
121
0
14
9
210
0
0
0
115
16
0
11
22
2
25
19
Phần tử ảnh (pixel)
Ảnh trong tự nhiên là những tín hiệu liên tục về không gian và giá trị độ sáng.
Để có thể lưu trữ và biểu diễn ảnh bằng máy tính, con người phải tiến hành biến đổi
các tín hiệu liên tục đó thành một số hữu hạn các tín hiệu rời rạc thông quá quá trình
lượng tử hóa và lấy mẫu thành phần giá trị độ sáng.
Một phần tử ảnh (Picture Element) là một giá trị biểu diễn cho mức xám hay
cường độ ảnh tại một vị trí sau khi đã biến đổi ảnh thành một số hữu hạn các tín hiệu
rời rạc.
Mức xám
Là kết quả của sự biến đổi tương ứng giá trị độ sáng của một điểm ảnh với một
giá trị số nguyên dương. Tùy thuộc vào số giá trị biểu diễn mức xám mà mỗi điểm ảnh
sẽ được biểu diễn trên 1, 4, 8, 24 hay 32 bit. Số lượng bit biểu diễn mức xám càng lớn
thì chất lượng ảnh càng cao nhưng sẽ tốn dung lượng bộ nhớ nhiều hơn để lưu trữ và
cần một hệ thống mạnh hơn để xử lý.
5
Khử nhiễu:
Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh:
- Nhiều hệ thống: là nhiễu có quy luật có thể khử bằng các phép biến đổi.
- Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân → khắc phục bằng các phép
lọc.
Chỉnh mức xám
Nhằm khắc phục tính không đồng đều của hệ thống gây ra. Thông thường có 2
hướng tiếp cận:
(vaguely defined) và có thể gán cho nó một tên gọi nào đó”. Ví dụ mẫu có thể là ảnh
của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc
một ký đồ tín hiệu tiếng nói. Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại
mẫu đó có thể:
- Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân
biệt (discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần
của một lớp đã xác định.
- Hoặc phân loại không có mẫu (unsupervised classification hay clustering)
trong đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng
nào đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định
danh.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ
yếu sau đây:
- Thu nhận dữ liệu và tiền xử lý.
- Biểu diễn dữ liệu.
- Nhận dạng, ra quyết định.
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
- Đối sánh mẫu dựa trên các đặc trưng được trích chọn.
- Phân loại thống kê.
- Đối sánh cấu trúc.
- Phân loại dựa trên mạng nơ-ron nhân tạo.
Trong các ứng dụng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ
để phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách
tiếpcận khác nhau. Do vậy, các phương thức phân loại tổ hợp hay được sử dụng khi
7
nhận dạng và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai
(hybrid system) bao gồm nhiều mô hình kết hợp.
Việc giải quyết bài toán nhận dạng trong những ứng dụng mới, nảy sinh trong
Mã vạch là sự thể hiện thông tin trong các dạng nhìn thấy trên các bề mặt mà
máy móc có thể đọc được. Nguyên thủy thì mã vạch lưu trữ dữ liệu theo bề rộng của
các vạch được in song song cũng như của khoảng trống giữa chúng, nhưng ngày nay
chúng còn được in theo các mẫu của các điểm, theo các vòng tròn đồng tâm hay chúng
ẩn trong các hình ảnh. Mã vạch có thể được đọc bởi các thiết bị quét quang học gọi là
máy đọc mã vạch hay được quét từ hình ảnh bằng các phần mềm chuyên biệt.
Nội dung của mã vạch là thông tin về sản phẩm như: nước sản xuất, tên doanh
nghiệp, lô, tiêu chuẩn chất lượng đăng ký, thông tin về kích thước sản phẩm, nơi kiểm
tra...
2.2.1 Lịch sử
Ý tưởng về mã vạch được phát triển bởi Norman Joseph Woodland và Bernard
Silver. Năm 1948 khi đang là sinh viên ở trường Đại học tổng hợp Drexel, họ đã phát
triển ý tưởng này sau khi được biết mong ước của một vị chủ tịch của một công ty
buôn bán đồ ăn là làm sao để có thể tự động kiểm tra toàn bộ quy trình. Một trong
những ý tưởng đầu tiên của họ là sử dụng mã Morse để in những vạch rộng hay hẹp
thẳng đứng. Sau đó, họ chuyển sang sử dụng dạng "điểm đen" của mã vạch với các
vòng tròn đồng tâm. Họ đã gửi đến cơ quan quản lý sáng chế Mỹ ngày 20 tháng 10
năm 1949 công trình Classifying Apparatus and Method (Thiết bị và phương pháp
phân loại) để lấy bằng sáng chế. Bằng sáng chế đã được phát hành ngày 7 tháng 10
năm 1952.
Thiết bị đọc mã vạch đầu tiên được thiết kế và xây dựng bởi Woodland (khi đó
đang làm việc cho IBM) và Silver năm 1952. Nó bao gồm một đèn dây tóc 500 W và
một ống chân không nhân quang tử được sản xuất bởi RCA cho các phim có âm thanh
(nó để in theo phương pháp quang học lên trên phim). Thiết bị này đã không được áp
dụng trong thực tế: để có dòng điện đo được bằng các nghiệm dao động (oscilloscope)
thì đèn công suất 500 W gần như đã làm cháy giấy có mẫu mã vạch đầu tiên của họ.
Nó đã không được sản xuất đại trà. Năm 1962 họ bán sáng chế này cho công ty
Philips, sau đó Philips lại bán nó cho RCA. Phát minh ra tia laser năm 1960 đã làm
cho các thiết bị đọc mã vạch trở nên rẻ tiền hơn, và sự phát triển của mạch bán dẫn
9
2
Catalog, các giá hàng trong cửa
tính
Plessey
Liên tục
hàng, hàng tồn kho
UPC
Liên tục
Nhiều
Bán lẻ ở Mỹ
EAN‐UCC
Liên tục
Nhiều
Bán lẻ khắp thế giới
Codabar
Rời rạc
Liên tục
Nhiều
Đa dạng
Code 11
Rời rạc
2
Điện thoại
POSTNET
Liên tục
Cao/Thấp
Bưu điện
PostBar
Rời rạc
Nhiều
Bưu điện
Dựa trên Code 128 1D.
Code 49
Mã vạch cụm 1D từ Intermec Corp.
PDF417
Mã vạch 2D phổ biến nhất. Phạm vi công cộng.
Micro PDF417
Mã vạch 2D
12
Loại
Ghi chú
3‐DI
Phát triển bởi Lynn Ltd.
ArrayTag
Từ ArrayTech Systems.
Dot Code A
HueCode
Từ Robot Design Associates. Sử dụng thang màu xám hoặc
nhiều màu.
INTACTA.CODE
MaxiCode
Từ INTACTA Technologies, Inc.
Sử dụng bởi Dịch vụ chuyển phát hàng hóa Mỹ (United
Parcel Service).
MiniCode
Từ Omniplanar, Inc.
PDF417
Có nguồn gốc từ Symbol Technologies. Phạm vi công cộng.
QR Code
Từ Nippondenso ID Systems. Phạm vi công cộng.
SmartCode
Hình 2.3 - Mã số EAN-13 gồm 13 con số có cấu tạo như sau: từ trái sang phải
- Mã quốc gia: hai hoặc ba con số đầu.
- Mã doanh nghiệp: có thể gồm từ bốn, năm hoặc sáu con số.
- Mã mặt hàng: có thể là năm, bốn hoặc ba con số tuỳ thuộc vào mã doanh
nghiệp.
- Số cuối cùng là số kiểm tra.
Để đảm bảo tính thống nhất và tính đơn nhất của mã số, mã quốc gia phải do tổ
chức mã số vật phẩm quốc tế (EAN International) cấp cho các quốc gia là thành viên
của tổ chức này. Mã số quốc gia của Việt nam là 893.
14
Code 39
UPC và EAN dù là 2 lọai mã vạch có tính chất chuyên nghiệp và quốc tế nhưng
khuyết điểm của nó là dung lượng có giới hạn và chỉ mã hóa được số, không mã hóa
được chữ.
Code 39 được phát triển sau UPC và EAN là ký hiệu chữ và số thông dụng
nhất. Nó không có chiều dài cố định như UPC và EAN do đó có thể lưu trữ nhiều
lượng thông tin hơn bên trong nó. Do tính linh họat như vậy, Code 39 được ưa chuộng
rộng rãi trong bán lẻ và sản xuất. Bộ ký tự này bao gồm tất cả các chữ hoa, các ký số
từ 0 đến 9 và 7 ký tự đặc biệt khác.
Hình 2.4 - Ví dụ về code 39
Nhiều tổ chức đã chọn một dạng thức Code 39 để làm chuẩn công nghiệp của
mình trong đó đáng chú ý là Bộ Quốc Phòng Mỹ đã lấy Code 39 làm bộ mã gọi là
LOGMARS.
Code 128
Code 128 là loại mã vạch tiết kiệm được không gian hơn so với code 39,do nó
có độ nén cao hơn,và nó được dùng trong công nghiệp vận tải và đóng gói. Code 128
tính, và chúng được tạo ra bằng cách đặt các mã vạch tuyến tính truyền thống trên các
loại giấy hay các vật liệu có thể in ấn mà cho phép có nhiều hàng.
16