TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN KHOA KHOA HỌC MÁY TÍNH BÁO CÁO ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI ỨNG DỤNG XỬ LÝ ẢNH VÀO QUÉT MÃ QR CODE VÀ BAR CODE MỞ ĐẦU Với sự tăng trưởng ngày càng m[.]
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT- HÀN
KHOA KHOA HỌC MÁY TÍNH
BÁO CÁO
ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀO QUÉT
MÃ QR CODE VÀ BAR CODE
Trang 2
MỞ ĐẦU
Với sự tăng trưởng ngày càng mạnh mẽ của công nghệ số thì việc kiểm tra dữliệu, thông tin của một sản phẩm hoặc cá nhân tổ chức nào đó một cách nhanh chóng
và thuận tiện là điều vô cùng quan trọng
Vì lý do đó mã qrcode được ra đời nhằm đáp ứng tối đa những yêu cầu trên Mã
QR đang rất được giới marketing và quảng cáo chuộng dùng cho các ý tưởng quảngcáo tạp chí, trên các băng ghế công viên, xe buýt, đóng gói sản phẩm hay bất kỳ sảnphẩm vật lý nào mà người tiêu dùng muốn tìm hiểu thêm thông tin về nó Ngoài racác công ty xí nghiệp hoặc các trường học cũng đều có thể sử dụng mã qrcode để lưutrữ thông tin của nhân viên cũng như sinh viên học sinh của mình để phục vụ cho việcđiểm danh, điểm chuyên cần của nhân viên và học sinh của mình một cách nhanhchóng và thuận tiện nhất
Cũng như vậy, mã vạch cũng đóng vai trò không thể thiếu trong đời sống Nhờ
mã vạch, người quản lí dễ dàng kiểm tra số lượng sản phẩm, phân loại sản phẩm,phân loại theo nơi nhận, phân loại theo người sử dụng Chính xác đến từng đích đến
Mã vạch cung cấp nhiều tiện ích cho người tiêu dung bởi nhiều lý do Một trongnhững nguyên nhân chính là những mã vạch này có thể giúp bạn tiết kiệm đượcnhiều thời gian trong quá trình sắp xếp và thanh toán cho khách hàng Bạn có thể sửdụng nhãn hàng như những miếng nhãn dính, cho phép bạn đính mã vạch lên hànghóa của mình
Trang 3LỜI CAM ĐOAN
Từ những kiến thức cũng như những ứng dụng thực tế, qua thời gian được họctại trường Đại học Công nghệ Thông tin và Truyền thông Việt – Hàn và tham khảo, tìmhiểu thêm các tài liệu trên mạn Từ đó, tôi đã thu thập thông tin, nghiên cứu và chỉnhsửa để có thể hoàn thành bài đồ án này Tôi xin cam đoan đề tài: “Ứng dụng xử lý ảnhvào quét mã qr code và bar code” là bài viết của cá nhân tôi Không hề sao chép củabất kì cá nhân nào Tôi xin chịu trách nhiệm về bài đồ án của mình
Trang 4LỜI CẢM ƠN
Tôi xin chân thành cảm ơn tới tất cả thầy cô giáo trong Khoa khoa học máy tính trường Đại Học Công Nghệ Thông Tin Và Truyền Thông Việt - Hàn, chân thành cảm ơncác thầy giáo, cô giáo đã giảng dạy và truyền đạt những kiến thức bổ ích cho tôi suốtthời gian học tập tại trường, giúp tôi có thêm nhiều kiến thức và hiểu rõ hơn các vấnđề mình nghiên cứu, để tôi có thể hoàn thành đồ án này
-Đặc biệt tôi xin chân thành cảm ơn thầy Th.S Lê Song Toàn Trong thời gian làm
đồ án vừa qua, thầy đã giành nhiều thời gian quý báu và tâm huyết để hướng dẫn tôihoàn thành đề tài này
Dưới đây là kết quả của quá trình tìm hiểu và nghiên cứu mà tôi đã đạt đượctrong thời gian vừa qua Tuy có nhiều cố gắng học hỏi trau dồi để nâng cao kiến thứcnhưng không thể tránh khỏi những sai sót Tôi rất mong được những sự góp ý quýbáu của các thầy giáo, cô giáo cũng như tất cả các bạn để bài luận văn của tôi đượchoàn thiện hơn
Tôi xin chân thành cảm ơn!
Trang 5MỤC LỤC
Contents
MỞ ĐẦU 3
LỜI CAM ĐOAN 4
LỜI CẢM ƠN 5
NHẬN XÉT 6
MỤC LỤC 7
DANH MỤC HÌNH ẢNH 7
DANH MỤC CÁC BẢNG 8
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 10
1.1 Tổng quan về QR Code và Bar Code 10
1.2 Đối tượng và phạm vi nghiên cứu 11
1.3 Cơ sở lý thuyết và thực tiễn 11
1.4 Nội dung nghiên cứu 12
1.5 Ứng dụng của đề tài 12
CHƯƠNG II: CƠ SỞ LÝ THUYẾT 13
2.1 Khái niệm về QR Code 13
2.2 Thuật toán của QR Code 14
2.2.1 Tạo một chuỗi nhị phân 15
2.2.2 Tạo bộ mã sửa lỗi 19
2.2.3 Chọn mẫu mặt nạ phù hợp 20
2.2 Khái niệm về Bar Code 30
2.3 Phân loại Bar Code 31
2.3.1 Mã vạch 1D 31
2.3.2 Mã vạch 2D 38
Trang 6CHƯƠNG 3: THỰC NGHIỆM 40
3.1 Dữ liệu thực nghiệm 40
3.2 Thiết lập thực nghiệm 42
3.3 Thực nghiệm 43
3.4 Kết quả thực nghiệm 46
3.5 Đánh giá thực nghiệm 50
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 51
TÀI LIỆU THAM KHẢO 52
Trang 7DANH MỤC HÌNH ẢNH
Hình 1 Hình ảnh mã QR Code 15
Hình 2 Tiêu chuẩn của mã QR Code 15
Hình 3 Mã hóa bộ chỉ chế độ 17
Hình 4 Các chuỗi ký tự 18
Hình 5 Bảng sửa lỗi 20
Hình 6 Vị trí nhận diện của mã QR 22
Hình 7 Mô hình điều chỉnh vị trí 23
Hình 8 Hiển thị các bit thông tin 25
Hình 9 Thêm thông tin của mã QR 25
Hình 10 Sắp xếp các điểm ảnh 27
Hình 11 Xuống điểm ảnh 28
Hình 12 Bỏ qua các mô hình thời gian 29
Hình 13 Mẫu timing chiều dọc 29
Hình 14 Mã QR hoàn thiện 30
Hình 15 Mã vạch 1D 32
Hình 16 Mã vạch UPC 32
Hình 17 Mã vạch code 39 34
Hình 18 Mã vạch INTERLEAVED 2 OF 5 34
Hình 19 Các mã vạch xếp chồng 34
Hình 20 Mã vạch EAN-13 37
Hình 21 Data Matrix Code 40
Hình 22 QR Code 40
Hình 23 Mã QRCode từ google hình ảnh 41
Hình 24 mã vạch lấy từ google hình ảnh 42
Hình 25 sản phẩm có in mã QR và mã vạch 42
Hình 26 Sơ đồ triển khai hệ thống 43
Trang 8Hình 27 hiển thị kết quả 45
Hình 28 Sơ đồ thực nghiệm 46
Hình 29 Thông tin mã QR 1 47
Hình 30 Thông tin mã vạch 1 48
Hình 31 Thông tin mã vạch trên bao bì 48
Hình 32 Thông tin mã QR trên hộp 49
Hình 33 Quét mã QR được lưu sẵn trong file 49
Trang 9DANH MỤC CÁC BẢNG
Bảng 1 mô tả công dụng mã hoá của các loại mã vạch 37
Bảng 2 Mô tả quy tắc chẵn -lẻ từ 2 đến 7 39
Bảng 3 Quy tắc mã hóa chẵn lẻ từ 0 đến 9 39
Bảng 4 Tiêu chí đánh giá thực nghiệm là chính xác 51
Trang 10CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
1.1 Tổng quan về QR Code và Bar Code
Mã QR code là một mã ma trận (hay mã vạch hai chiều) được phát triển bởicông ty Denso Wave (Nhật Bản) vào năm 1994 Chữ “QR” xuất phát từ “QuickResponse”, trong tiếng Anh có nghĩa là đáp ứng nhanh, vì người tạo ra nó có ý địnhcho phép mã được giải mã ở tốc độ cao nhất có thể Một mã QR code có thể chứamột địa chỉ trang web, thời gian diễn ra một sự kiện, thông tin liên hệ, địa chỉ email,tin nhắn SMS, nội dung ký tự văn bản hay thậm chí là thông tin định vị vị trí Tùythuộc thiết bị đọc mã QR mà bạn dùng khi quét, nó sẽ dẫn bạn tới một trang web, gọiđến một số điện thoại hoặc là xem một tin nhắn Các mã QR code đang được sử dụngphổ biến nhất, và hiện là loại mã hai chiều thông dụng nhất hiện nay
Barcode là mã vạch thể hiện thông tin về sản phẩm được mã hóa dưới dạng ký
tự, hình ảnh cho từng loại mã vạch khác nhau 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ữachú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òngtròn đồng tâm hay chúng ẩn trong các hình ảnh Mã vạch có thể được đọc bởi cácthiế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ácphần mềm chuyên biệt
Về điểm chung, QR Code và BarCode là đều hiện đang là công cụ hỗ trợ đắc lựccho doanh nghiệp trong việc quản lý hàng hóa, bảo vệ người tiêu dùng, bảo vệthương hiệu… Vì thế, người tiêu dùng không còn quá xa lạ với 2 lại mã này, đặc biệt là
mã số mã vạch Với 2 loại mã này sẽ giúp doanh nghiệp nhiều tiện ích như: bảo vệhàng hóa khỏi hàng giả, truy xuất nguồn gốc sản phẩm, bảo vệ thương hiệu sảnphẩm, quản lý giá cả, quản lý bảo hành sản phẩm, hỗ trợ hoạt động truyền thông,marketing nắm bắt tâm lý, tương tác người tiêu dùng hiệu quả
Trang 111.2 Đối tượng và phạm vi nghiên cứu
Bài toán đặt ra là bài toán quét mã Qr và mã vạch (Bar code) có trên sản phẩmhoặc có trên hình ảnh Khi bật webcam lên, đưa hình ảnh hay sản phẩm có in mã QRhoặc mã vạch chiếu lên webcam, thì hệ thống sẽ quét được nội dung và hiển thị kếtquả của mã QR và mã vạch đó
Phạm vi nghiên cứu của đề tài: “Ứng dụng xử lý ảnh vào quét mã QR và mã vạch”:
Tìm hiểu các thuật toán liên quan đến mã QR và mã vạch
Tìm hiểu về quy trình quét mã
Tìm hiểu về phương pháp quét mã
Tìm hiểu về ngôn ngữ lập trình Python
Tìm hiểu về thư viện OpenCV
Tìm hiểu xem việc quét mã có thể được áp dụng như thế nào trong đời sống
1.3 Cơ sở lý thuyết và thực tiễn
Nhằm tìm hiểu, xây dựng một ứng dụng phù hợp với vấn đề đặt ra, về lý thuyếtđề tài sẽ tìm hiểu và nghiên cứu các lĩnh vực như sau:
Tìm hiểu về ngôn ngữ lập trình Python
Các thuật toán liên quan đến mã QR và mã vạch
Kỹ thuật xử lý ảnh, trích chọn đặc trưng
Nghiên cứu về thư viện OpenCV trong việc hỗ trợ xử lý ảnh để quét mã
Từ cơ sở lý thuyết trên, đề tài sẽ xây dựng ứng dụng xử lý ảnh để quét mã vớicác tính năng như:
Nhận diện được mã QR và mã vạch khi chúng ta sử dụng webcam
Quét được thông tin của cả hai loại mã
Hiển thị thông tin của hai loại mã
Trang 121.4 Nội dung nghiên cứu
Nhiệm vụ của đề tài xoay quanh việc tìm hiểu cơ bản về mã QR và mã vạch nêncác vấn đề cần phải nghiên cứu là sẽ là:
Tìm kiếm, chọn lọc các tài liệu, mã nguồn trên mạng
Xử lý ảnh đầu vào từ camera hoặc từ thư mục có sẵn
Tải phần mềm Pycharm, kết nối và cài đặt thư viện OpenCV vào Pycharm
Xây dựng hệ thống quét mã
Lập trình và viết code cho ứng dụng trên phần mềm Pycharm
Chạy thử, kiểm tra, điều chỉnh hệ thống
Trình bày sản phẩm sau khi hoàn thiện
Đánh giá kết quả thực hiện đề tài
1.5 Ứng dụng của đề tài
Đề tài có tính thực tế cao, được ứng dụng khá phổ biến và rộng rãi trong đờisống, một số ứng dụng có thể kể đến như:
Tính tiền trong các chuỗi cửa hàng, siêu thị
Ứng dụng trong việc quản lý các đồ dùng, thiết bị trong các công ty, vănphòng, trường học
Ứng dụng trong việc lưu trữ thông tin cá nhân như thẻ nhân viên, thẻ họcsinh
Trang 13CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1 Khái niệm về QR Code
QR Code bây giờ không hẳn là quá xa lạ, nó bắt đầu xuất hiện khắp nơi nhưnhãn bìa sản phẩm, và gần như là phương thức nhận diện chủ yếu cho ứng dụng diđộng Vậy QR Code là gì? QRCode, viết tắt của Quickresponsecode (tạm dịch "Mãphản hồi nhanh") hay còn gọi là mã vạch ma trận (matrix-barcode) là dạng mã vạchhai chiều (2D) có thể được đọc bởi một máy đọc mã vạch hay smartphone (điện thoạithông minh) có chức năng chụp ảnh (camera) với ứng dụng chuyên biệt để quét mãvạch
Một mã QR có thể chứa đựng thông tin một địa chỉ web (URL), thời gian diễn
ra một sự kiện, thông tin liên hệ (như vCard), địa chỉ email, tin nhắn SMS, nội dung ký
tự văn bản hay thậm chí là thông tin định vị vị trí địa lý Tùy thuộc thiết bị đọc mã QR
mà bạn dùng khi quét, nó sẽ dẫn bạn tới một trang web, gọi đến một số điện thoại,xem một tin nhắn
Điểm khác nhau giữa mã QR và mã vạch truyền thống là lượng dữ liệu chúngnắm giữ hay chia sẻ Các mã vạch truyền thống có các đường vạch thẳng dài mộtchiều và chỉ có thể lưu giữ 20 số chữ số, trong khi các mã QR hai chiều có thể lưu giữthông tin hàng ngàn ký tự chữ số Mã QR nắm giữ nhiều thông tin hơn và tính chất dễ
sử dụng sẽ giúp ích rất nhiều cho người dùng trong mọi lĩnh vực Ngoài ra, QR code
có lợi thế hơn do có thể đọc được cả hai chiều cả ngang và dọc và từ bất kỳ hướngnào mà không bị ảnh hưởng bởi chất liệu hay nền mà nó đang sử dụng
Qrcode có 2 loại chính: động và tĩnh
QRcode động: hay còn gọi là “Qrcode trực tiếp”: sau khi được khởi tạo,
liên kết chính của chúng có thể được chỉnh sửa mà không cần can thiệp
Trang 14vào code Khi được quét, code động sẽ chuyến hướng bạn đến máy chủ,nơi lưu chữ thông tin cụ thể trong một cơ sở dữ liệu và được lâp trình
để tương tác cụ thể với hình ảnh được quét đó Code động tiện lợi hơn
vì chúng được tạo ra áp dụng một lần, và bạn có thể thay đổi các thôngtin được hiển thị khi đó được quét như cac liên kết(domain,web) đểhiển thị thông tin
QRcode tĩnh: không giống như các code động, code tĩnh có thể lưu trữ
các thông tin trực tiếp qua hình thức văn bản họăc dẫn đến các trangweb mà không cần chuyển hướng qua liên kết thứ cấp Điều này cónghĩa rằng các thông tin hoặc liên kết không thể thay đổi hoặc chỉnhsửa (bạn sẽ phải tạo ra một code tĩnh mới mỗi lần muốn cập nhật).Code tĩnh rất lý tưởng cho những người muốn mã chứa thông tin của
họ vĩnh viễn (ví dụ, thông tin về ngày sinh và nhóm máu)
2.2 Thuật toán của QR Code
Mã QR tiêu chuẩn có thể được nhận dạng dựa vào các thành phần chính dướiđây:
Hình 1 Hình ảnh mã QR Code
Trang 15 Finder pattern (mẫu tìm kiếm): Mã QR thường chứa ba hình vuông
màu đen ở góc dưới cùng bên trái, trên cùng bên trái và trên cùng bênphải Những hình vuông này cho người đọc QR biết rằng nó đang xem
mã QR và ranh giới bên ngoài của mã nằm ở đâu
Timing pattern (mẫu thời gian): Đây là một đường hình chữ L chạy giữa
ba ô vuông trong mẫu tìm kiếm Timing giúp người đọc xác định các ôvuông riêng lẻ trong toàn bộ mã và giúp cho mã QR bị hỏng có thể đượcđọc
Version information (phiên bản thông tin): Đây là một trường thông tin
nhỏ nằm gần ô mẫu công cụ tìm trên cùng bên phải Điều này xác địnhphiên bản mã QR đang được đọc
Quiet Zone (vùng yên tĩnh): Đây là đường viền trắng trống xung quanh
bên ngoài của mã QR Nếu không có đường viền này, trình đọc QR sẽkhông thể xác định được cái gì được và không được chứa bên trong mã
QR (do sự can thiệp từ các yếu tố bên ngoài)
Data cells (các ô dữ liệu): Phần còn lại của mã QR truyền đạt thông tin
thực tế, tức là URL, số điện thoại hoặc tin nhắn mà nó chứa
Alignment pattern (mẫu căn chỉnh): Đây là một hình vuông nhỏ hơn
khác nằm ở đâu đó gần góc dưới cùng bên phải Nó đảm bảo rằng mã
QR có thể được đọc, ngay cả khi nó bị lệch hoặc ở một góc
Hình 2 Tiêu chuẩn của mã QR Code
Trang 16 Format Information (định dạng thông tin): Chứa đựng thông tin về khả
năng chịu lỗi và khung data mask, giúp dễ dàng hơn cho việc scan Code
2.2.1 Tạo một chuỗi nhị phân
Bước đầu tiên để tạo một mã QR code là tạo một chuỗi nhị phân bao gồm dữliệu và thông tin về chế độ mã hóa, cũng như độ dài của dữ liệu Trong phần nàychúng ta sẽ tìm hiểu mã hóa chuỗi HELLO WORLD ở QR code phiên bản 1, với mức độsửa lỗi là Q
Bước 1: Mã hóa Bộ chỉ chế độ (Mode Indicator)
Một bộ chỉ chế độ là một chuỗi 4bit thể hiện chế độ dữ liệu bạn đang sử dụng:kiểu số, kiểu chuỗi, kiểu nhị phân hoặc Nhật ngữ
Trang 17Với chuỗi HELLO WORLD, có 11 ký tự kể cả khoảng trắng Ta chuyển 11 sang nhịphân, được 1011.
Xem danh sách ở dưới Khi mã hóa độ dài của dữ liệu, chúng ta mã hóa nó sửdụng một số lượng bit đặc tả Như đã nói ở đầu, chúng ta sử dụng QR code phiên bản
1, vậy nên chúng ta cần sử dụng 9 bit để mã hóa độ dài dữ liệu Ta thêm số 0 vào đầuchuỗi cho đên khi đủ 9 bit: 000001011
Phiên bản 1 tới 9
Kiểu số: 10 bits
Kiểu chuỗi: 9 bits
Kiểu nhị phân: 8 bits
Kiểu chuỗi: 13 bits
Kiểu nhị phân: 16 bits
Kiểu Nhật ngữ: 12 bits
Tới đây chuỗi nhị phân chúng ta là: 0010 000001011
Bước 3: Mã hóa dữ liệu để mã hóa chuỗi ký tự, ta chia chuỗi thành các cặp ký tự: HE,LL,O ,WO,RL,D.
Với mỗi cặp ký tự, ta lấy giá trị mã ASCII của ký tự đầu nhân với 45, sau đócộng với giá trị mã ASCII của ký tự sau Sau đó chuyển kết quả thu được thành mộtchuỗi nhị phân 11 bit
Trang 18Đối với các ký tự không có cặp, tao lấy giá trị mã ASCII của nó rồi chuyển thànhchuỗi nhị phân 6 bit.
Đối với các chế độ khác: kiểu số, kiểu nhị phân, kiểu Nhật ngữ, tao sử dụngphương thức khác để mã hóa dữ liệu
Hình 4 Các chuỗi ký tự
Bước 4: Hoàn thành các bit
Với chuỗi bit thu được ở trên, ta phải chắc chắn rằng nó có đủ độ dài Điều nàyphụ thuộc vào việc có bao nhiêu bit chúng ra cần để tạo phiên bản và sửa lỗi
Với QR code phiên bản 1, sửa lỗi mức độ Q Chúng ta phải tạo một chuỗi 104 bit Nếu chuỗi bit nhỏ ít hơn 104, ta phải thêm 4 số 0 vào cuối chuỗi Nếu thêm 4 số 0được một chuỗi nhiều hơn 104, ta chỉ cần thêm số 0 cho tới khi nào đủ 104 bit
Chuỗi của chúng ta có 59 bit, ta thêm 4 số 0 vào cuối chuỗi (Còn nếu chuỗi có 102bit thì ta thêm 2 số 0)
Chuỗi của ta bây giờ là:
0010 000001011 01100001011 01111000110 10001011100 10110111000
10011010100 0011010000
Bước 5: Giới hạn chuỗi thành các chuỗi con 8 bit, sau đó thêm các số 0 nếu cần.
Bước này ta chia chuỗi thành các nhóm 8 bit
Trang 19Ở chuỗi con cuối cùng, nếu chưa đủ 8 bit thìta thêm vào sau đó các số 0 cho tớikhi đủ Chuỗi của chúng ta thêm 2 số 0 vào sau chuỗi con cuối cùng.
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101
01000011 01000000
Bước 6: Thêm các từ vào cuối nếu chuỗi quá ngắn
Nếu chuỗi bit của chúng ta vẫn chưa đủ dài, có hai chuỗi con đặc biệt:11101100
và 00010001 Ta thêm thay phiên hai chuỗi con này vào chuối chuỗi của chúng ta.Chuỗi của chúng ta chỉ có 10 chuỗi con, cần phải thêm vào 3 chuỗi con nữa Bắtđầu thêm 11101100, sau đó thêm 00010001, rồi tới 11101100 Nếu cần nhiều hơn thì
cứ thêm lần lượt như vậy cho tới khi đủ số chuỗi con
Chuỗi của chúng ta bây giờ:
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101
01000011 01000000 11101100 00010001 11101100
2.2.2 Tạo bộ mã sửa lỗi
Bước 1: Chọn mức sửa lỗi
Bước đầu tiên để tạo mã sửa lỗi là xác định có bao nhiêu từ để tạo cho phiênbản QR và mức độ sửa lỗi
Xem bảng sửa lỗi để biết thêm thông tin chi tiết
Bước 2: Tạo một thông điệp đa thức
Chúng ta chuyển 13 khối dữ liệu ở trên thành dạng thập phân:
Hình 5 Bảng sửa lỗi
Trang 20Lũy thừa của số hạng đầu tiên được tính:Số khối dữ liệu + số mã sửa lỗi -1Ở đây
là 13+13-1=25 Vậy nên số hạng đầu tiên là32x25
Bước 3: Tạo bộ tạo đa thức
Tiếp theo ta sẽ tạo một bộ tạo đa thức Ta chia thông điệp đa thức bởi bộ tạonày để tạo mã sửa lỗi
Các bộ tạo đa thức đến từ một cái gì đó gọi là mộttrường hữu hạn, cũng đượcbiết đến như là một trường Galois
Các mã QR sử dụng một trường Galois có 256 yếu tố, có nghĩa là, mục đích củachúng ta, rằng những con số mà chúng ta sẽ được giao dịch với sẽ luôn luôn tối đa là
255 và ít nhất là 0
Để thực hiện việc phân chia đa thức, chúng ta sẽ được chuyển đổi qua lại giữacác ký hiệu α(alpha)và các số nguyên Alpha và các giá trị số nguyên từ bảng log vàantilog Bộ tạo đa thức luôn luôn có dạng (x –α) (x –α2) (x –αt), tương đương với sốlượng mã sửa lỗi cần thiết trừ đi 1 Chúng ta cần 13 mã sửa lỗi, do đó, t trong trườnghợp này là 12 Ta thức hiện triển khai tất cả các thành phần (x –α) cho tới khi chúng tađược đa thức Công việc này thực hiện bằng khá phức tạp, sử dụng generatorpolynomial tool
Ở đây chúng ta tạo 13 mã sửa lỗi: α0x25+ α74x24+ α152x23+ α176x22+ α100x21+ α86x20+
α100x19+ α106x18+ α104x17+ α130x16+ α218x15+ α206x14+ α140x13+ α78x12 Dưới đây, tôi cho thấytừng bước của việc phân chia đa thức cần thiết để tạo ra mã sửa lỗi Kết quả củabước này ta được mã sửa lỗi: 168 72 22 82 217 54 156 0 46 15 180 122 16 Ta đặt
Trang 21đoạn mã sửa lỗi sau đoạn mã dữ liệu:32 91 11 120 209 114 220 77 67 64 236 17
Bây giờ chúng ta đã mã hóa các dữ liệu, tất cả những gì còn lại là chọn mẫu mặt
nạ tốt nhất.Một mẫu mặt nạ thay đổi theo các bit, theo một quy tắc cụ thể Các mẫumặt nạ được định nghĩa trong tiêu chuẩn mã QR
Có 8 mẫu mặt nạ Sử dụng mô hình mặt nạ cho phép chúng tôi để tạo ra tám mã
QR khác nhau và sau đó chọn một trong đó sẽ được dễ dàng nhất cho một đầu đọc
QR để quét Một đặc biệt mã QR có thể có các mẫu nhất định hoặc những đặc điểm
mà làm cho nó khó khăn cho thiết bị đọc QR chính xác quét mã QR.Ví dụ, nếu điểmảnh của cùng một màu sắc xảy ra gần nhau, một đầu đọc QR có thể gặp khó khăn khiđọc chính xác các điểm ảnh
Mỗi mô hình mặt nạ tạo ra một mã QR code khác nhau Sau khi chúng ta tạo racác mã khác nhau QR trong nội bộ, chúng tôi cung cấp cho mỗi một số điểm xử phạttheo các quy tắc quy định trong tiêu chuẩn mã QR.Sau đó, chúng tôi cho ra mã QR có
số điểm tốt nhất
Bước 1: Tạo mã QR code:
Với QR code phiên bản 1, ta cần một ma trận 21×21
Tất cả các mã QR code đều có một vài mẫu nhận diện chắc chắc phải đc thểhiện Ở hình bên dưới, có ba vị trí nhận diện được đặt ở trên cùng bên trái, trên cùngbên phải và dưới cùng bên trái của ma trận Các mã QR code còn có một pixel đen ởbên phải của vị trí nhận diện bên dưới cùng bên trái Ngoài ra còn có mẫu timing
Trang 22Vị trí điều chỉnh mô hình
Từ ví dụ này là chỉ mã hóa một phiên bản 1 mã QR, chúng tôi không cần thêmbất kỳ mô hình điều chỉnh vị trí Tuy nhiên, nếu chúng ta đã mã hóa một mã QRphiên bản 2 hoặc lớn hơn, chúng tôi sẽ thêm các mẫu điều chỉnh vị trí ma trận Bảngdưới đây liệt kê các tọa độ của nơi để đặt các mô hình điều chỉnh vị trí
Xem ví dụ ở bảng dưới đây
Hình 6 Vị trí nhận diện của mã QR
Trang 23Ví dụ, hình ảnh dưới đây cho thấy các mô hình điều chỉnh vị trí cho phiên bản
mã QR 8.Mỗi mô hình điều chỉnh vị trí là một điểm ảnh màu đen bao quanh bởi cácđiểm ảnh màu trắng được bao quanh bởi các điểm ảnh màu đen.Theo bảng trên, chophiên bản mã QR 8, vị trí các mô hình điều chỉnh 6, 24, và 42.Như ta thấy trong hìnhảnh, mô hình điều chỉnh vị trí được đặt ở tất cả các giao điểm của ba con số này,ngoại trừ đã có lớn hơn mô hình phát hiện vị trí không đặt mô hình điều chỉnh vị trítrên hàng đầu của các mô hình phát hiện vịtrí tronggóc của mã QR Như hình :
Thêm thông tin loại
Các thông tin về mức độ sửa lỗi và mô hình mặt nạ được mã hóa ở dạng dải với các cạnh của các mẫu phát hiện vị trí
Bảng sau đây hiển thị các bit thông tin các loại được yêu cầu cho các cấp, sửa lỗi khác nhau và các mẫu mặt nạ
Hình 7 Mô hình điều chỉnh vị trí
Trang 24Hình 8 Hiển thị các bit thông tin
Trang 25Trong ví dụ Hello World của chúng tôi, mô hình mặt nạ tốt nhất là 0 (điều nàyđược giải thích dưới đây) Chúng ta đang sử dụng mức độ hiệu chỉnh lỗi Q, vì vậy cácchuỗi loại thông tin là 011010101011111 Như trong hình trên, các chuỗi loại thôngtin được hiển thị hai lần Một trong số đó là dưới hai mô hình phát hiện vị trí hàngđầu, bắt đầu từ bên trái Nó bỏ qua quá khứ mô hình thời gian và phần dữ liệu củalưới Điều thứ hai là quyền của các mẫu phát hiện vị trí, bắt đầu từ phía dưới, bỏ quadấu chấm đen, phần dữ liệu, và mô hình thời gian Cả hai sọc cùng một chuỗi:011010101011111.
Thêm thông tin phiên bản
Nếu mã QR của bạn là phiên bản 7 hoặc lớn hơn, bạn cần phải thêm các bitthông tin phiên bản ma trận Đây là những được đặt ở bên trái của mô hình trên bênphải phát hiện vị trí và trên các mô hình phát hiện vị trí phía dưới bên trái, như thểhiện trong hình ảnh dưới đây, trong đó có một phiên bản 9 Mã QR
sách của các bit thông tin phiên bản cần thiết cho mỗi phiên bản Những bit được đặttrong cấu hình sau đây trong các vị trí được chỉ định trong hình trên:
Hình 9 Thêm thông tin của mã QR
Trang 26Trong ví dụ của chúng ta, mã QR là nhỏ hơn so với phiên bản 7, vì vậy chúng takhông cần thêm các bit thông tin phiên bản mã.
Thêm dữ liệu Bits
Cuối cùng, chúng ta thêm các bit dữ liệu Trong bước này, chúng ta thay đổichút tùy thuộc vào mô hình mặt nạ mà chúng ta đang sử dụng.Trước khi thêm chútthực tế, chúng tôi sử dụng các mẫu mặt nạ để quyết định xem có nên thay đổi màusắc của các bit hiện tại hay không
Sắp xếp theo cột từ dưới lên