QR Code

Intro

import QRCode from 'qrcode';
import {
  useRef,
  useEffect,
} from 'react';

export default (url) => {
  const canvas = useRef();
  const urlRef = useRef();

  useEffect(() => {
    if (canvas.current) {
      QRCode.toCanvas(canvas.current, url, (err) => {
        if (err) {
          debugQRCode(err);
        }
      });
    }
  }, [canvas, url]);

  useEffect(() => {
    urlRef.current = url;
  }, [url]);

  return canvas;
};

Before QR Code...... 

barcode

One-dimensional 

two-dimensional 

  1. find the smallest width
  2. translate width to binary
  3. left/right recognition
  4. parity
  5. translate binary to message (with table)

S.O.P.

  1. find the smallest width
  2. translate width to binary
  3. left/right recognition
  4. parity
  5. translate binary to message (with table)

S.O.P.

when we need carry more information.......

QR Code

Data Identification 

Error correction

data 

size  

Error correction

How ?

Error correction

Even if part of the data is lost, it can still be restored to the original data

First, we need to know two things

position

offset

position: e1, e2

offset:  y1, y2

e1=3

e2=1

y1=2

y2=4

addition/subtraction ?

K - M = 0

division/remainder ?

K % M = 0

position

offset

condition ?

Galois Field

Galois Field

1. It is a field that contains a finite number of elements.

2. As with any field, a finite field is a set on which the operations of multiplication, addition, subtraction and division are defined and satisfy certain basic rule.

5+6 = 11(mod7) = 4

GF(m)

5*6 = 30(mod7) = 2

m should be prime number

GF(8)?

GF(2^3)

represent the elements with polynomials

GF(8)?

GF(2^3)

prime number?

1011

represent the elements with polynomials(in binary)

X^3 + x + 1

7 = 111(binary)

  = x^2 + x + 1

addition: xor

multiply: 

addition: xor

multiply: 

1. xor

2. divide by prime number

Reed-Solomon

Reed-Solomon codes are a signal processing technique to correct errors.Based on Galois field.

They are nowadays ubiquitous, such as in communications (mobile phone, internet), data storage and archival (hard drives, optical discs CD/DVD/BluRay, archival tapes), warehouse management (barcodes) and advertisement (QR codes)

Example 🌰

1234abcd

1234

message

message

parity

Represent it with Polynomial

message

parity

m(x)

p(x)

Base on Galois Field

m(x)

g(x)

p(x)

message

parity

m(x)

p(x)

message

parity

m(x)

p(x)

new Message M(x)

12341674

62241674

Wrong Message

should be 0

m(x): message

g(x): generate 

p(x): parity

If x = 2^0, 2^1, 2^2, 2^3

g(x) = 0, M(x) = 0

Verify

62241674

Substitute x into M(x)

Wrong Message

position: e1, e2

offset:  y1, y2

e1= 5, e2 = 7

y1=1, y2 = 7

position: e1, e2

offset:  y1, y2

e1= 5, e2 = 7

y1=1, y2 = 7

A masking process is used to avoid features in the symbol that might confuse a scanner, such as misleading shapes that look like the locator patterns and large blank areas.

QA

QA

QR Code

By Jay Chou

QR Code

  • 315