Blog người tự do |Chia sẻ kiến thức
1. Tạo một chuỗi nhị phân:
Bước tiên phong để tạo một mã QR code là tạo một chuỗi nhị phân gồm có tài liệu và thông tin về chính sách mã hóa, cũng như độ dài của tài liệu .
Trong phần hướng dẫn này sẽ hướng dẫn 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ạn đang đọc: Blog người tự do |Chia sẻ kiến thức
Bước 1: Mã hóa Bộ chỉ chế độ (Mode Indicator)
Một bộ chỉ chính sách là một chuỗi 4 bit biểu lộ chính sách tài 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ữ .
Mode Indicator
Với chuỗi HELLO WORLD, là kiểu chuỗi, vậy nên Bộ chỉ chính sách sẽ là 0010 .
Chuỗi nhị phân : 0010
Bước 2: Mã hóa độ dài của dữ liệu
Trong bước này, tất cả chúng ta xác lập có bao nhiêu ký tự trong thông điệp, và chuyển độ dài đó thành 1 số ít nhị phân .
Với chuỗi HELLO WORLD, có 11 ký tự kể cả khoảng chừng trắng. Ta chuyển 11 sang nhị phân, được 1011 .
Xem list ở dưới. Khi mã hóa độ dài của tài liệu, tất cả chúng ta mã hóa nó sử dụng một số lượng bit đặc tả. Như đã nói ở đầu, tất cả chúng ta sử dụng QR code phiên bản 1, vậy nên tất cả chúng ta cần sử dụng 9 bit để mã hóa độ dài tài liệu. Ta thêm số 0 vào đầu chuỗ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 Nhật ngữ: 8 bits
Phiên bản 10 tới 26
- Kiểu số: 12 bits
- Kiểu chuỗi: 11 bits
- Kiểu nhị phân: 16
- Kiểu Nhật ngữ: 10 bits
Phiên bản 27 tới 40
- Kiểu số: 14 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 tất cả 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 những 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 hiệu quả thu được thành một chuỗi nhị phân 11 bit .
Đối với những ký tự không có cặp, tao lấy giá trị mã ASCII của nó rồi chuyển thành chuỗi nhị phân 6 bit .
Đối với những chính sách khác : kiểu số, kiểu nhị phân, kiểu Nhật ngữ, tao sử dụng phương pháp khác để mã hóa dữ liệu .
Kểu dữ liệu hóa dữ liệu
Bước 4: Hoàn thành các bit
Với chuỗi bit thu được ở trên, ta phải chắc như đinh rằng nó có đủ độ dài. Điều này nhờ vào 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. Tham khảo thêm : version capacity table. 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 tất cả 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ó 102 bit thì ta thêm 2 số 0 ) .
Chuỗi của ta giờ đây là :
0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101 0000
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 những nhóm 8 bit .
Ở chuỗi con sau cuối, nếu chưa đủ 8 bit thì ta thêm vào sau đó những số 0 cho tới khi đủ. Chuỗi của tất cả chúng ta thêm 2 số 0 vào sau chuỗi con sau cuối .
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 tất cả 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 tất cả chúng ta giờ đây :
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100
2.1.1. 2. Tạo bộ mã sửa lỗi
QR code gồm có bộ mã sửa lỗi. Các khối tài liệu dự trữ bảo vệ rằng mã QR code vẫn được đọc mặc dầu có một phần không đọc được. Tạo mã này rất phức tạp, cho nên vì thế nên sau đây sẽ hướng dẫn một cách đơn thuần .
QR code sử dụng bộ sửa lỗi Reed-Solomon .
Bước 1: Tìm ra có bao nhiêu mã sửa lỗi cần được tạo
Bước tiên phong để tạo mã sửa lỗi là xác lập có bao nhiêu từ để tạo cho phiên bả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 cụ thể
Bảng sửa lỗi
Xem bảng ở trên, tất cả chúng ta cần 13 mã sửa lỗi .
Bước 2: Tạo một thông điệp đa thức
Chúng ta chuyển 13 khối tài liệu ở trên thành dạng thập phân :
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100
Ta được:
32, 91, 11, 120, 209, 114, 220, 77, 67, 64, 236, 17, 236
Các số này sẽ là thông số của đa thức. Ta có :
32×25 + 91×24 + 11×23 + 120×22 + 209×21 + 114×20 + 220×19 + 77×18 + 67×17 + 64×16 + 236×15 + 17×14 + 236×13
Lũy thừa của số hạng tiên phong được tính :
Số khối tài liệu + số mã sửa lỗi – 1
Ở đây là 13 + 13-1 = 25. Vậy nên số hạng tiên phong là 32×25 .
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ạo nà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ột trường hữu hạn, cũng được biết đến như thể 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 tiêu của tất cả chúng ta, rằng những số lượng mà tất cả chúng ta sẽ được thanh toán giao dịch với sẽ luôn luôn tối đa là 255 và tối thiểu là 0 .
Để thực thi việc phân loại đa thức, tất cả chúng ta sẽ được quy đổi qua lại giữa những ký hiệu α ( alpha ) và những số nguyên. Alpha và những 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 tương tự với số lượng mã sửa lỗi thiết yếu trừ đi 1. Chúng ta cần 13 mã sửa lỗi, do đó, t trong trường hợp này là 12 .
Ta thức hiện tiến hành toàn bộ những thành phần ( x – α ) cho tới khi tất cả chúng ta được đa thức. Công việc này thực thi bằng tay khá phức tạp, sử dụng generator polynomial tool. Ở đây tất cả chúng ta tạo 13 mã sửa lỗi :
α0x25 + α74×24 + α152×23 + α176×22 + α100×21 + α86×20 + α100×19 + α106×18 + α104×17 + α130×16 + α218×15 + α206×14 + α140×13 + α78×12
Dưới đây, tôi cho thấy từng bước của việc phân loại đa thức thiết yếu để tạo ra mã sửa lỗi. Nếu bạn muốn xem những bước này được triển khai cho một đa thức tin nhắn khác nhau và số lượng từ ECC, truy vấn trang show division steps .
Kết quả của bướ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 đ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 236 168 72 22 82 217 54 156 0 46 15 180 122 16
Chuyển qua nhị phân:
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100 10101000 01001000 00010110 01010010 11011001 00110110 10011100 00000000 00101110 00001111 10110100 01111010 00010000
2.1.1. 3. Chọn mẫu mặt nạ tốt nhất
Bây giờ tất cả chúng ta đã mã hóa những tài liệu, toàn bộ 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ạ đổi khác theo những bit, theo một quy tắc đơn cử. Các mẫu mặt nạ được định nghĩa trong tiêu chuẩn mã QR .
Có 8 mẫu mặt nạ. Xem list những kiểu mặt nạ QR. Sử dụng quy mô mặt nạ được 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 thuận tiện nhất cho một đầu đọc QR để quét. Một đặc biệt quan trọng mã QR hoàn toàn có thể có những mẫu nhất định hoặc những đặc thù mà làm cho nó khó khăn vất vả cho thiết bị đọc QR đúng mực quét mã QR. Ví dụ, nếu điểm ảnh của cùng một sắc tố xảy ra gần nhau, một đầu đọc QR hoàn toàn có thể gặp khó khăn vất vả khi đọc đúng mực những điểm ảnh .
Mỗi quy mô mặt nạ tạo ra một mã QR code khác nhau. Sau khi tất cả chúng ta tạo ra những mã khác nhau QR trong nội bộ, chúng tôi cung ứng cho mỗi một số ít điểm xử phạt theo những quy tắc lao lý 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ả những mã QR code đều có một vài mẫu nhận diện chắc chắc phải đc biểu lộ. Ở 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ùng bê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 px đ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 .
Vị 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êm bất kể quy mô kiểm soát và điều chỉnh vị trí. Tuy nhiên, nếu tất cả chúng ta đã mã hóa một mã QR phiên bản 2 hoặc lớn hơn, chúng tôi sẽ thêm những mẫu kiểm soát và điều chỉnh vị trí ma trận. Bảng dưới đây liệt kê những tọa độ của nơi để đặt những quy mô kiểm soát và điều chỉnh vị trí. Xem ví dụ ở bảng dưới đây .
Bảng 2.3 – Bảng liệt kê tọa độ của nơi để đặt những quy mô kiểm soát và điều chỉnh vị trí
Ví 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, cho phiê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í trong góc của mã QR.
Hình 2.5 – Mô hình kiểm soát và điều chỉnh vị trí
Thêm thông tin Loại
Các thông tin về mức độ sửa lỗi và quy mô mặt nạ được mã hóa ở dạng dải với những cạnh của những mẫu phát hiện vị trí .
Bảng sau đây hiển thị những bit thông tin những loại được nhu yếu cho những cấp, sửa lỗi khác nhau và những mẫu mặt nạ .
Bảng 2.4 – Bảng hiển thị những Bit thông tin
Hình 2.6 – Hình hiển thị những Bit thông tin
Trong ví dụ Hello World của chúng tôi, quy mô mặt nạ tốt nhất là 0 ( điều này được lý giải dưới đây ). Chúng ta đang sử dụng mức độ hiệu chỉnh lỗi Q., vì thế những chuỗi loại thông tin là 011010101011111. Như trong hình trên, những chuỗi loại thông tin được hiển thị hai lần. Một trong số đó là dưới hai quy mô phát hiện vị trí số 1, mở màn từ bên trái. Nó bỏ lỡ quá khứ quy mô thời hạn và phần tài liệu của lưới. Điều thứ hai là quyền của những mẫu phát hiện vị trí, mở màn từ phía dưới, bỏ lỡ dấu chấm đen, phần tài liệu, và quy mô thời hạn. 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 những bit thông tin phiên bản ma trận. Đây là những được đặt ở bên trái của quy mô trên bên phải phát hiện vị trí và trên những quy mô phát hiện vị trí phía dưới bên trái, như bộc lộ trong hình ảnh dưới đây, trong đó có một phiên bản 9 Mã QR .
Hình 2.7 – Hình thêm thông tin phiên bản QR Code
Bảng sau đây cho thấy một list của những bit thông tin phiên bản thiết yếu cho mỗi phiên bản. Những bit được đặt trong thông số kỹ thuật sau đây trong những vị trí được chỉ định trong hình trên :
Bảng 2.5 – Bảng list những Bit thông tin phiên bản
Trong ví dụ của tất cả chúng ta, mã QR là nhỏ hơn so với phiên bản 7, thế cho nên tất cả chúng ta không cần thêm những bit thông tin phiên bản mã .
Bảng 2.6 – Bảng Bit tương ứng từng phiên bản
Thêm dữ liệu Bits
Cuối cùng, tất cả chúng ta thêm những bit tài liệu. Trong bước này, tất cả chúng ta biến hóa chút tùy thuộc vào quy mô mặt nạ mà tất cả chúng ta đang sử dụng. Trước khi thêm chút thực tiễn, chúng tôi sử dụng những mẫu mặt nạ để quyết định hành động xem có nên đổi khác sắc tố của những bit hiện tại hay không .
Sắp xếp theo cột từ dưới lên
Các bit dữ liệu được thêm vào theo một thứ tự đơn cử. Các điểm ảnh tiên phong được thêm vào phía dưới bên phải của mã QR. Điều thứ hai được đặt ở bên trái đó. Hai tiếp theo được đặt trên đầu những người tiên phong theo thứ tự. Hai cột điểm ảnh này vẫn liên tục đi lên theo cách này, bỏ lỡ bất kể điểm ảnh đã được thiết lập, cho đến khi nó đạt đến số 1 của mã QR .
Hình 2.8 – Hình ảnh sắp xếp theo cột
Xuống cột
Một khi nó đạt đến đỉnh, một cột hai-pixel mới khởi đầu, thời hạn này sẽ đi xuống .
Hình 2.9 – Hình ảnh xuống cột
Khi bạn đạt đến dưới cùng của lưới, đổi khác hướng một lần nữa, và liên tục trong quy mô này giống như đường đi của con rắn .
Chắc chắn bỏ qua mẫu timing
Khi bạn thêm pixels, hãy chắc như đinh để bỏ lỡ những quy mô thời hạn .
Hình 2.10 – Hình ảnh những mẫu timing
Và những mẫu timing ở chiều dọc :
Hình 2.11 – Hình những mẫu timing ở chiều dọc
Hoàn tất mã QR code
Tiếp tục theo cách này cho đến khi toàn bộ của những điểm ảnh tài liệu đã được đặt. Sau đó, những mã QR là hoàn tất. Tuy nhiên, những đặc thù kỹ thuật mã QR nhu yếu bạn sử dụng những quy mô mặt nạ tốt nhất hoàn toàn có thể
Bước 3 : Cung cấp mỗi QR code trong 8 mã một số điểm và chọn mã có số điểm tốt nhất
Trước khi tất cả chúng ta hoàn toàn có thể cho ra mã QR của tất cả chúng ta, tất cả chúng ta cần thử lần lượt 8 loại của những mẫu mặt nạ để tìm ra một penalty thấp nhất, dựa trên những quy tắc penalty pháp luật tại những đặc thù kỹ thuật mã QR .
Có bốn quy tắc xử phạt :
- Quy tắc đầu tiên cung cấp cho các mã QR một hình phạt đối với từng nhóm năm hoặc nhiều hơn điểm ảnh cùng màu trong một hàng.
- Nguyên tắc thứ hai cung cấp cho các mã QR một hình phạt đối với từng khu vực 2×2 điểm ảnh cùng màu mà nó tìm thấy.
- Nguyên tắc thứ ba cung cấp cho các mã QR một hình phạt lớn nếu có mô hình trông tương tự như các mô hình phát hiện vị trí.
Nguyên tắc thứ tư phân phối cho những mã QR một hình phạt nếu có nhiều hơn 50% trong số những điểm ảnh tối hoặc ánh sáng
Share this:
Thích bài này:
Đang tải …
Source: https://dvn.com.vn
Category: Cẩm Nang