Tải bản đầy đủ (.docx) (46 trang)

MÔ PHỎNG NHẬN DIỆN mã VẠCH TRÊN sản PHẨM (có code)

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 (746.28 KB, 46 trang )

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ..............................................................................................V
DANH MỤC CÁC BẢNG BIỂU.......................................................................................VI
DANH MỤC CÁC TỪ VIẾT TẮT..................................................................................VII
CHƯƠNG 1. ẢNH SỐ..........................................................................................................1
1.1

ẢNH SỐ LÀ GÌ?...........................................................................................................1

1.2

XỬ LÝ ẢNH VỚI MATLAB...........................................................................................3

1.3

CÁC HÀM XỬ LÝ ẢNH TRONG MATLAB......................................................................6

CHƯƠNG 2. MÃ VẠCH TRÊN SẢN PHẨM................................................................15
2.1

LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN MÃ VẠCH.....................................................15

2.2

MÃ VẠCH LÀ GÌ?......................................................................................................16

2.2.1



Phân loại mã vạch............................................................................................16

2.2.2

Cấu tạo của mã vạch........................................................................................19

CHƯƠNG 3. NỘI DUNG CỦA ĐỀ TÀI..........................................................................21
3.1

MỤC ĐÍCH.................................................................................................................21

3.2

SƠ ĐỒ KHỐI..............................................................................................................21

3.3

SƠ ĐỒ GIẢI THUẬT....................................................................................................22

CHƯƠNG 4. KẾT QUẢ MÔ PHỎNG.............................................................................23
4.1

TẠO GIAO DIỆN GUI.................................................................................................23

4.2

MÔ PHỎNG................................................................................................................24

CHƯƠNG 5. KẾT LUẬN..................................................................................................26

5.1

KẾT LUẬN.................................................................................................................26

5.2

HƯỚNG PHÁT TRIỂN.................................................................................................26

TÀI LIỆU THAM KHẢO..................................................................................................27
PHỤ LỤC A 28


DANH MỤC CÁC HÌNH VẼ
HÌNH 1-1: CÁC GIAI ĐOẠN XỬ LÝ ẢNH.....................................................................2
HÌNH 1-2: CÁC GIAI ĐOẠN XỬ LÝ ẢNH TRONG MATLAB.................................3
HÌNH 2-1: VÍ DỤ MÃ VẠCH UPC..................................................................................17
HÌNH 2-2: MÃ VẠCH EAN-13.........................................................................................18
HÌNH 2-3: QUY TẮC MÃ VẠCH CỦA SỐ 0 - 9............................................................20
HÌNH 3-1: SƠ ĐỒ KHỐI...................................................................................................21
HÌNH 3-2: SƠ ĐỒ GIẢI THUẬT.....................................................................................22
HÌNH 4-1: GIAO DIỆN GUI BAN ĐẦU.........................................................................23
HÌNH 4-2: GIAO DIỆN GUI KHI CHẠY.......................................................................23
HÌNH 4-3: HÌNH ẢNH ĐƯỢC ĐƯA VÀO TỪ DATA BASE.......................................24
HÌNH 4-4: HÌNH ẢNH QUA BỘ XỬ LÝ........................................................................24
HÌNH 4-5: KẾT QUẢ XUẤT RA MÀN HÌNH...............................................................24
HÌNH 4-6: HÌNH ẢNH ĐƯỢC ĐƯA VÀO TỪ CAMERA MÁY TÍNH.....................25
HÌNH 4-7: KẾT QUẢ XUẤT RA MÀ HÌNH..................................................................25


DANH MỤC CÁC BẢNG BI

BẢNG 2-1: GIÁ TRỊ SỐ 0-9 THEO BỘ MÃ A,B,C.......................................................18
BẢNG 2-2: VẠCH BIÊN VÀ VẠCH GIỮA....................................................................19
Y


DANH MỤC CÁC TỪ VIẾT TẮT
CCIR
CGA
CMYK
EAN
RGB
UPC

Campaign for Comprehensive Immigration Reform
Color Graphic Adaptor)
Cyan – Magenta – Yellow - Key
European Article Number
Hệ màu Red – Green - Blue
Universal Product Code


Trang 1/41

CHƯƠNG 1.

ẢNH SỐ

1.1 Ảnh số là gì?
Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh
gần với ảnh thật. Số điểm ảnh xác định độ phân giải của ảnh, ảnh có độ phân giải

càng cao thì càng thể hiện rõ nét các đặc điểm của tấm hình, càng làm cho tấm ảnh
trở nên thực và sắc nét hơn.
a. Điểm ảnh (Picture Element)
Điểm ảnh (Pixel) là một phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc
màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được chọn
thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám
( hoặc màu) của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được
gọi là một phần tử ảnh.
b. Mức xám của ảnh
Mức xám là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 điểm
ảnh với 1 gía trị nguyên dương. Thông thường nó xác định trong [0, 255] tùy
thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn. Các thang giá trị mức
xám thông thường: 16, 32, 64, 128, 256. Mức 256 là mức phổ dụng vì từ ky
thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám. Mức xám dùng một
byte biểu diễn : 28 = 256 mức, tức là từ 0 đến 255.
c. Độ phân giải của ảnh
Độ phân giải của ảnh (Resolution) của ảnh là mật độ điểm ảnh được ấn định
trên một ảnh số được hiển thị. Khoảng cách giữa các điểm ảnh phải được
chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh. Việc lựa chọn
khoảng cách thích hợp tạo nên một mật độ phân bố, đó chính là độ phân giải
và được phân bố theeo trục x và y trong không gian 2 chiều. Ví dụ: Độ phân
giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là một lưới điểm
theo chiều ngang màn hình: 320 điểm chiều dọc*200 điểm ảnh (320*200).
Rõ ràng cùng màn hình CGA 12” ta nhận thấy mịn hơn màn hình CGA 17”

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 2/41


độ phân giải 320*200. Vì cùng một mật độ nhưng diện tích mà hình rộng hơn
thì độ mịn ( độ liên tục của các điểm) kém hơn.
d. Các cách phân loại ảnh
 Ảnh nhị phân: Giá trị xám của tất cả các điểm ảnh chỉ nhận giá trị 1 hoặc
0 như vậy mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi 1 bit. Ảnh
xám: Giá trị xám nằm trong [0, 255] như vậy mỗi điểm ảnh trong ảnh nhị
phân được biểu diễn bởi 1 byte.
 Ảnh màu:
- Hệ màu RGB:
Một pixel được biểu diễn bằng 3 giá trị (R, G, B) trong đó R, G, B là một giá
trị xám và được biểu biểu diễn bằng 1 byte. Khi đó ta có một ảnh 24 bits.
P(x, y) = (R, G, B)
– Hệ màu CMY: là phần bù của hệ màu RGB
(C, M, Y) = (1, 1, 1) – (R, G, B)
Hay C+R=M+G=Y+B=1
=> Hệ màu này thường được dùng trong máy in.
– Hệ màu CMYK trong đó K là độ đậm nhạt của màu K= min(C, M, Y)
P(x, y) = (C-K, M-K, V-K, K).
e. Các giai đoạn xử lý ảnh.
Hình 1-1: Các giai đoạn xử lý ảnh

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 3/41

1.2 Xử lý ảnh với Matlab
a. Xử lý ảnh

Đầu tiên, hình ảnh từ thế giới bên ngoài được các thiết bị thu nhận, ghi hình
ảnh như camera, máy chụp hình, máy quét,.. Trước đây, ảnh thu qua Camera
là các ảnh tương tự (loại Camera ống kiểu CCIR). Giờ đây, với sự phát triển
của công nghệ, ảnh màu hoặc đen trắng được lấy ra từ Camera, sau đó nó
được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo. Ngoài
ra, ảnh cũng có thể tiếp nhận từ vệ tinh,
b. Các giai đoạn xử lý ảnh

Hình 1-2: Các giai đoạn xử lý ảnh trong matlab

-

Thu nhận ảnh (Image Acquisition): Ảnh được thu từ các nguồn như máy
ảnh, máy quay phim, máy quét, ảnh vệ tinh…Ảnh này có thể là ảnh màu
hoặc trắng đen, chất lượng ảnh phụ thuộc vào thiết bị thu nhận hình ảnh.

-

Tiền xử lý (Image Processing): Sau khi ảnh được thu vào được xử lý để
chất lượng ảnh tốt lên qua việc điều chỉnh độ chiếu sáng, hiệu chỉnh giá
trị độ sáng giữa nền và đối tượng, giảm nhỏ thành phần nhiễu, điều chỉnh
bọ lọc và khuếch đại.

-

Phân đoạn (Segmentation): tách ảnh đầu vào thành các vùng đói tượng
khác nhau.

-


Biểu diễn ảnh (Image Representation): Đầu ra ảnh sau phân đoạn chứa
các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 4/41

các vùng lận cận. Các số liệu này được biến đổi thành các dạng thích hợp
cho việc xử lý tiếp theo bằng máy tính, sau đó ảnh sẽ được chọn các tích
chất để thể hiện hay còn gọi là trích chọn đặc trưng (Feature Selection)
gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng
hoặc là làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác
trong phạm vi ảnh nhận được.
-

Nhận dạng và nội suy ảnh (Image Recognition and Interpretation): nhận
dạng là quá trình xác định ảnh bằng cách so sánh với mẫu chuẩn đã được
chọn hoặc lưu từ trước. Nội suy là phán đoán ảnh theo ý nghĩa trên cơ sở
nhận dạng. Các đối tượng nhận dạng phổ biến hiện nay được áp dụng
trong khoa học và công nghệ: nhận dạng ký tự( chữ viết tay, chữ in, chữ
ký điện tử), nhận dạng văn bản, nhận dạng hình ảnh ( vân tay, mặt người,
mã vạch,..).

-

Cơ sở tri thức (Knowledge Base): Một đối tượng khá phức tạp về đường
nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú
kéo theo nhiễu. Trong nhiều khâu xử lý và phân tích ảnh cần đơn giản

hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý giống quy trình
tiếp nhận và xử lý ảnh theo cách của con người, ở đây các cơ sở tri thức
được phát huy.

-

Mô tả và phát huy: Ảnh sau khi được số hóa sẽ được chuyển sang khu
vực lưu trữ phục vụ cho các công đoạn tiếp theo. Nếu lưu trữ trực tiếp từ
ảnh thô thì dung lượng lưu trữ sẽ rất lớn, vì vậy cần mô tả, biểu diễn sao
cho dung lượng lưu trữ là thấp nhất, để tiết kiệm bộ nhớ cũng như tiết
kiệm thời gian làm việc.

c. Các kiểu ảnh trong Matlab


Ảnh được định chỉ số (Indexed Images)

Một ảnh chỉ số bao gồm một ma trận dữ liệu X và ma trận bản đồ màu map.
Ma trận dữ liệu có thể có kiểu thuộc lớp uint8, uint16 hoặc kiểu double. Ma
trận bản đồ màu là một mảng mx3 kiểu double bao gồm các giá trị dấu phẩy

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 5/41

động nằm giữa 0 và 1. Mỗi hàng của bản đồ chỉ ra các giá trị red, green và
blue của một màu đơn. Một ảnh chỉ số sử dụng ánh xạ trực tiếp giữa giá trị
của pixel ảnh tới giá trị trong bản đồ màu. Màu sắc của mỗi pixel ảnh được

tính toán bằng cách sử dụng giá trị tương ứng của X ánh xạ tới một giá trị chỉ
số của map. Giá trị 1 chỉ ra hàng đầu tiên, giá trị 2 chỉ ra hàng thứ hai trong
bản đồ màu …
Một bản đồ màu thường được chứa cùng với ảnh chỉ số và được tự động nạp
cùng với ảnh khi sử dụng hàm imread để đọc ảnh. Tuy nhiên, không bị giới
hạn khi sử dụng bản đồ màu mặc định, có thể sử dụng bất kì bản đồ màu nào.
 Ảnh cường độ (Intensity Images)
Một ảnh cường độ là một ma trận dữ liệu ảnh I mà giá trị của nó đại diện cho
cường độ trong một số vùng nào đó của ảnh. Matlab chứa một ảnh cường độ
như một ma trận đơn, với mỗi phần tử của ma trận tương ứng với một pixel
của ảnh. Ma trận có thể thuộc lớp double, uint8 hay uint16. Trong khi ảnh
cường độ hiếm khi được lưu với bản đồ màu, Matlab sử dụng bản đồ màu để
hiển thị chúng.
Những phần tử trong ma trận cường độ đại diện cho các cường độ khác nhau
hoặc độ xám. Những điểm có cường độ bằng 0 thường được đại diện bằng
màu đen và cường độ 1,255 hoặc 65535 thường đại diện cho cường độ cao
nhất hay màu trắng.


Ảnh nhị phân (Binary Images)

Trong một ảnh nhị phân, mỗi pixel chỉ có thể chứa một trong hai giá trị nhị
phân 0 hoặc 1. Hai giá trị này tương ứng với bật hoặc tắt (on hoặc off). Một
ảnh nhị
phân được lưu trữ như một mảng logic của 0 và 1.


Ảnh RGB (RGB Images)

Một ảnh RGB – thường được gọi là true-color, được lưu trữ trong Matlab

dưới dạng một mảng dữ liệu có kích thước 3 chiều mxnx3 định nghĩa các giá
trị màu red, green và blue cho mỗi pixel riêng biệt. Màu của mỗi pixel được

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 6/41

quyết định bởi sự kết hợp giữa các giá trị R, G, B (Red, Green, Blue) được
lưu trữ trong một mặt phẳng màu tại vị trí của pixel. Định dạng file đồ hoạ
lưu trữ ảnh RGB giống như một ảnh 24 bits trong đó R, G, B chiếm tương
ứng 8 bit một. Điều này cho phép nhận được 16 triệu màu khác nhau.
Một mảng RGB có thể thuộc lớp double, uint8 hoặc uint16. Trong một mảng
RGB thuộc lớp double, mỗi thành phần màu có giá trị giữa 0 và 1. Một pixel
mà thành phần màu của nó là (0, 0, 0) được hiển thị với màu đen và một
pixel mà thành phần màu là (1, 1, 1 ) được hiển thị với màu trắng. Ba thành
phần màu của mỗi pixel được lưu trữ cùng với chiều thứ 3 của mảng dữ liệu.
Chẳng hạn, giá trị màu R, G, B của pixel (10, 5) được lưu trữ trong RGB(10,
5, 1), RGB(10, 5, 2) và RGB(10, 5, 3) tương ứng.
Để tính toán màu sắc của pixel tại hàng 2 và cột 3 chẳng hạn, ta nhìn vào bộ
ba giá trị được lưu trữ trong (2, 3, 1:3). Giả sử (2, 3, 1) chứa giá trị 0.5176;
(2, 3, 2) chứa giá trị 0.1608 và (2, 3, 3) chứa giá trị 0.0627 thì màu sắc của
pixel tại (2, 3) sẽ là (0.5176, 0.1608, 0.0627).
1.3 Các hàm xử lý ảnh trong Matlab
a. Đọc và ghi dữ liệu
• Đọc một ảnh đồ hoạ.
– Hàm imread đọc một ảnh bất kỳ với các định dạng được hỗ trợ như: bmp,
gif, jpeg, tiff,.. Ví dụ, đoạn mã sau sẽ đọc một ảnh RGB vào không gian làm
việc của Matlab lưu trong biến RGB.

RGB = imread(‘football.jpg’);
• Đọc nhiều ảnh từ một file đồ hoạ
– Matlab trợ giúp một số định dạng file đồ hoạ chẳng hạn như: HDF và TIFF,
chúng chứa nhiều ảnh. Theo mặc định, imread chỉ trợ giúp ảnh đầu tiên trong
file. Để nhập thêm các ảnh từ file, sử dụng cú pháp được trợ giúp bởi định
dạng file.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 7/41

Ví dụ sau đây đọc một chuỗi 27 ảnh từ một file TIFF và lưu những ảnh này
trong một mảng 4 chiều. Ta có thể sử dụng hàm iminfo để xem bao nhiêu
ảnh đã được lưu trữ trong file:
Mri = unit8(zero(128,128,1,27));
For frame = 1:27
[mri(:,:,:,frame),map] = imread(‘mri.tif,frame);
End
– Khi file chứa nhiều ảnh theo một số kiểu nhất định chẳng hạn theo thứ tự
thời gian, ta có thể lưu ảnh trong Matlab dưới dạng mảng 4 chiều. Tất cả các
ảnh phải có cùng kích thước.
• Ghi một ảnh đồ hoạ
– Hàm imwrite sẽ ghi một ảnh tới một file đồ hoạ dưới một trong các định
dạng được trợ giúp. Cấu trúc cơ bản nhất của imwrite sẽ yêu cầu một biến
ảnh và tên file. Nếu ta gộp một phần mở rộng trong tên file, Matlab sẽ nhận
ra định dạng mong muốn từ nó.
– Khi sử dụng imwrite với một số định dạng đồ hoạ, ta có thể chỉ ra các tham
số phụ. Ví dụ: Imwrite(I,’clown.png’,’BitDepth’,4);

• Đọc và ghi ảnh nhị phân theo định dạng 1 bit
– Trong một số định dạng file, một ảnh nhị phân có thể được lưu trong một
định dạng 1 bit. Khi ta đọc một ảnh nhị phân với định dạng 1 bit, Matlab đại
diện nó trong không gian làm việc như một mảng lôgic.
– Ví dụ sau đọc một ảnh nhị phân và ghi nó dưới dạng file TIFF. Bởi vì định
dạng TIFF trợ giúp ảnh 1 bit, file được ghi lên đĩa theo định dạng 1 bit:
BW = imread(‘text.png’);
Imwrite(BW,’test.tif’);
Để kiểm tra chiều sâu bit của file test.tif, gọi hàm iminfo và kiểm tra trường
BitDepth của nó:
Info = imfinf(‘test.tif’);info.BitDepth

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 8/41

Ans = 1
Chú ý: Khi ghi file nhị phân, Matlab thiết lập trường ColorType thành
‘grayscale’.
• Xem lớp lưu trữ của file
– Hàm imwrite sử dụng luật sau đây để quyết định lớp lưu trữ được sử dụng
trong ảnh kết quả:
+ logical: Nếu định dạng ảnh ra (Output Image) được chỉ rõ là trợ giúp ảnh 1
bit, hàm imwrite tạo một file ảnh 1 bit. Nếu định dạng ảnh ra được chỉ rõ là
không trợ giúp ảnh 1 bit (như JPEG), hàm imwrite chuyển ảnh tới một ảnh
thuộc lớp uint8.
+ uint8: Nếu định dạng ảnh ra được chỉ rõ là trợ giúp ảnh 8 bit, hàm imwrite
tạo một ảnh 8 bit

+ uint16: Nếu định dạng ảnh ra được chỉ rõ trợ giúp ảnh 16 bit (PNG hoặc
TIFF), hàm imwrite tạo một ảnh 16 bit. Nếu định dạng ảnh ra không trợ giúp
ảnh 16 bit, hàm chuyển đổi dữ liệu ảnh tới lớp uint8 và tạo một ảnh 8 bit.
+ double: Matlab chuyển dữ liệu ảnh tới dạng uint8 và tạo một ảnh 8 bit bởi
vì hầu hết các file ảnh sử dụng định dạng 8 bit.
Truy vấn một file đồ hoạ
– Hàm imfinfo cho phép ta có thể nhận được thông tin về một file ảnh được
trợ giúp bởi toolbox.
Cú pháp: imfinfo(filename,fmt)
Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemodedate,
filesize, format, formatversion, width, height, bitdepth, colortype … Thông
tin mà ta nhận được phụ thuộc vào kiểu của file nhưng nó luôn bao gồm
những thông tin sau: Tên của file ảnh, định dạng fiel ảnh, số version của định
dạng file, ngày sửa đổi gấn nhất, kích thước file tính theo byte, chiều rộng
ảnh tính theo pixel, chiều cao ảnh tính theo pixel, số lượng bit trên 1 pixel,
kiểu ảnh,..
Hiển thị ảnh.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 9/41

• Dùng hàm imview
– Để hiển thị một ảnh sử dụng hàm imview, dùng hàm imview, chỉ rõ ảnh mà
ta muốn hiển thị. Ta có thể sử dụng imview để hiển thị một ảnh mà đã được
nhập vào trong không gian làm việc của Matlab.
Moonfig = imread(‘moon.tif’);
Imview(moonfig);

Ta cũng có thể chỉ định tên của file ảnh như trong ví dụ sau:
Imview(‘moon.tif’);
– File ảnh phải có mặt trong thư mục hiện tại hoặc trong đường dẫn của
Matlab. Cấu trúc này có thể hữu ích cho việc quét qua nhiều ảnh. Tuy nhiên,
lưu ý, khi sử dụng cấu trúc này, dữ liệu ảnh không được lưu trong không gian
làm việc của Matlab.
– Nếu ta gọi hàm imview mà không chỉ ra mất kì tham số nào, nó sẽ hiển thị
một hộp chọn file cho phép ta chỉ ra tên file muốn hiển thị.
• Xem nhiều ảnh
– Nếu ta chỉ ra một file mà chứa nhiều ảnh, hàm imview chỉ hiển thị ảnh đầu
tiên trong file đó. Để xem tất cả các ảnh trong file, sử dụng hàm imread để
nhập mỗi ảnh vào trong không gian làm việc của Matlab sau đó gọi hàm
imview nhiều lần để hiển thị mỗi ảnh riêng biệt.
• Dùng hàm imshow
– Để xem ảnh, ta có thể sử dụng hàm imshow thay cho imview. Ta sử dụng
imshow để hiển thị một ảnh đã được nhập vào trong không gian làm việc như
ví dụ sau:
Moon = imread(‘moon.tif’);
Imshow(moon);
Ta cũng có thể chỉ ra tên của file ảnh như một tham số truyền vào cho hàm
như ví dụ sau: imshow(‘moon.tif’);
Khi sử dụng cấu trúc này thì dữ liệu ảnh không được nhập vào trong không
gian làm việc. Tuy nhiên, ta có thể mang ảnh vào trong không gian làm việc

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 10/41


bằng cách sử dụng hàm getimage. Hàm này sẽ nhận dữ liệu ảnh từ handle
của một đối tượng ảnh hiện tại. Chẳng hạn: moon = getimage; Sẽ gán dữ liệu
ảnh từ moon.tif vào biến moon.
b. Các hàm chuyển đổi kiểu ảnh.
Với các thao tác nhất định sẽ thật hữu ích khi có thể chuyển đổi ảnh từ dạng
này sang dạng khác. Chẳng hạn, nếu ta muốn lọc một màu ảnh được lưu trữ
dưới dạng ảnh chỉ số đầu tiên ta nên chuyển đổi nó thành dạng ảnh RGB.
Khi ta áp dụng phép lọc tới ảnh RGB, Matlab sẽ lọc giá trị cường độ trong
ảnh tương ứng. Nếu ta cố gắng lọc ảnh chỉ số, Matlab đơn giản chỉ áp đặt
phép lọc tới ma trận ảnh chỉ số và kết quả sẽ không có ý nghĩa.
– Danh sách sau đây sẽ liệt kê các hàm được sử dụng trong việc chuyển đổi
kiểu ảnh:
 dither: Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng
cách trộn, tạo một ảnh chỉ số từ một ảnh RGB bằng cách trộn (dither).


gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng.



grayslice: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng
bằng cách đặt ngưỡng.



im2bw: Tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số
hay ảnh RGB trên cơ sở của ngưỡng ánh sáng.




ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.



ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số.



mat2gray: Tạo một ảnh cường độ đen trắng từ dữ liệu trong một
ma trận bằng cách lấy tỉ lệ giữ liệu.



rgb2gray: Tạo một ảnh cường độ đen trắng từ một ảnh RGB.



rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.

– Ta cũng có thể thực hiện các phép chuyển đổi kiểu chỉ sử dụng cú pháp của
Matlab. Chẳng hạn, ta có thể chuyển đổi một ảnh cường độ sang ảnh RGB
bằng cách ghép nối 3 phần copy của ma trận ảnh gốc giữa 3 chiều:
RGB = cat(3,I,I,I);

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 11/41


– Ảnh RGB thu được có các ma trận đồng nhất cho các mặt phẳng R, G, B vì
vậy ảnh hiển thị giống như bóng xám.
– Thêm vào những công cụ chuyển đổi chuẩn đã nói ở trên, cũng có một số
hàm mà trả lại kiểu ảnh khác như một phần trong thao tác mà chúng thực
hiện.
• Chuyển đổi không gian màu
– Toolbox xử lý ảnh biểu diễn màu sắc như các giá trị RGB ( trực tiếp trong
ảnh RGB hoặc gián tiếp trong ảnh chỉ số ). Tuy nhiên, có các phương pháp
khác cho việc biểu diễn màu sắc. Chẳng hạn, một màu có thể được đại diện
bởi các giá trị hue, saturation và các giá trị thành phần (HSV). Các phương
pháp khác cho việc biểu diễn màu được gọi là không gian màu.
– Toolbox cung cấp một tập các thủ tục để chuyển đổi giữa các không gian
màu. Các hàm xử lý ảnh tự chúng coi dữ liệu màu sắc dưới dạng RGB tuy
nhiên, ta có thể xử lý một ảnh mà sử dụng các không gian màu khác nhau
bằng cách chuyển đổi nó sang RGB sau đó chuyển đổi ảnh đã được xử lý trở
lại không gian màu ban đầu.
c. Chuyển đổi định dạng các file ảnh.
Để thay đổi định dạng đồ hoạ của một ảnh, sử dụng hàm imread để đọc một
ảnh và sau đó lưu nó với hàm imwrite đồng thời chỉ ra định dạng tương ứng.
– Để minh hoạ, ví dụ sau đây sử dụng hàm imread để đọc một file BMP vào
không gian làm việc.Sau đó, hàm imwrite lưu ảnh này dưới định dạng PNG
Bitmap = imread(‘mybitmap.bmp’,’bmp’);
Imwrite(bitmap,’mybitmap.png’,’png’);
d. Số ảnh học.
Số học ảnh sự ứng dụng của các phép toán số học chuẩn như: cộng, trừ,
nhân, chia lên ảnh. Số học ảnh được sử dụng nhiều trong xử lý ảnh trong cả
các bước ban đầu lẫn các thao tác phức tạp hơn. Chẳng hạn, trừ ảnh có thể
được sử dụng để phát hiện sự khác nhau giữa hai hoặc nhiều ảnh của cùng
một cảnh hoặc một vật.


MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 12/41

– Ta có thể thực hiện số học ảnh sử dụng các toán tử số học của Matlab.
Toolbox xử lý ảnh bao gồm một tập hợp các hàm ứng dụng các phép toán số
học trên tất cả các con số không lấp đầy. Hàm số học của toolbox chấp nhận
bất kì kiểu dữ liệu số nào bao gồm uint8, uint16 hay double và trả lại ảnh kết
quả trong cùng định dạng. Các hàm thực hiện các phép toán với độ chính xác
kép trên từng phần tử nhưng không chuyển đổi ảnh tới giá trị chính xác kép
trong không gian làm việc của Matlab. Sự tràn số được điều khiển tự động.
Hàm sẽ cắt bỏ giá trị trả về để vừa với kiểu dữ liệu.
• Luật cắt bỏ trong số học ảnh
– Kết quả của số học nguyên có thể dễ dàng tràn số dùng cho lưu trữ. Chẳng
hạn, giá trị cực đại ta có thể lưu trữ trong uint8 là 255. Các phép toán số học
có thể trả về giá trị phân số – không được biểu diễn bởi một chuỗi số nguyên.
– Các hàm số học ảnh sử dụng những luật này cho số học nguyên:
+ Giá trị vượt quá khoảng của kiểu số nguyên bị cắt bỏ tới khoảng đó
+ Giá trị phân số được làm tròn Chẳng hạn, nếu dữ liệu có kiểu uint8, kết
quả trả về nếu lớn hơn 255 ( bao gồm Inf ) thì được gán là 255.
Lời gọi lồng nhau tới hàm số học ảnh
– Ta có thể sử dụng các hàm số học ảnh kết hợp để thực hiện một chuỗi các
phép toán. Chẳng hạn để tính giá trị trung bình của hai ảnh:
C=(A+B) /2
Ta có thể nhập vào như sau:
I = imread(‘rice.png’);
I2 = imread(‘cameraman.tif’);
K = imdivide(imadd(I,I2),2);

– Khi được sử dụng với kiểu uint8 hay uint16, mỗi hàm số học cắt kết quả
của nó trước khi truyền nó cho hàm thiếp theo. Sự cắt bỏ này có thể giảm
đáng kể lượng thông tin trong ảnh cuối cùng. Một cách làm tốt hơn để thực
hiện một chuỗi các tính toán là sử dụng hàm imlincomb. Hàm này thi hành

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 13/41

tất cả các phép toán số học trong sự kết hợp tuyến tính của độ chính xác kép
và chỉ cắt bỏ kết quả cuối cùng:
K = imlincomb(.5,I,.5,I2);
• Biến đổi không gian ảnh
Biến đổi không gian ảnh là thực hiện ánh xạ giữa vị trí các pixel trong ảnh
vào với các pixel trong ảnh ra.
• Bảng thuật ngữ
Aliasing : Răng cưa – xuất hiện khi giảm kích thước ảnh. Khi kích thước của
một ảnh bị giảm, các pixel gốc bị lấy mẫu giảm để tạo ra ít pixel hơn.
Aliasing xảy ra như kết quả của việc giảm kích thước ảnh thường xuất hiện
dưới dạng bậc thang ( đặc biệt trong các ảnh có độ tương phản cao )
Antialiasing : Các biện pháp chống răng cưa cho ảnh
Bicubic interpolation : Giá trị của các pixel ra được tính toán từ giá trị trung
bình của 4×4 pixel lân cận
Bilinear interpolation : Gía trị của pixel ra được tính toán từ giá trị trung bình
của 2×2 pixel lân cận
Geometric operation : Một thao tác sửa đổi quan hệ hình học gữa các pixel
trong một ảnh. Chẳng hạn thay đổi kích thước ảnh, quay ảnh và xén ảnh
Interpolation : Quá trình được sử dụng để ước lượng giá trị ảnh ở một vị trí

giữa các pixel
Nearest-neighbor interpolation : Các giá trị pixel ra được gán giá trị của pixel
nằm trong một vùng gần pixel đó.


Nội suy

Nội suy là quá trình sử dụng để ước lượng một giá trị ảnh ở một vị trí giữa
các pixel. Chẳng hạn, nếu ta thay đổi kích thước một ảnh, nó sẽ chứa nhiều
pixel hơn ảnh gốc, toolbox sử dụng sự nội suy để tính giá trị cho các pixel
thêm vào. Hàm imresize và imrotate sử dụng nội suy hai chiều để thực hiện
thao tác của mình. Hàm improfile cũng sử dụng sự nội suy hoá.
Các phương pháp nội suy

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 14/41

– Toolbox sử lý ảnh cung cấp 3 cách nội suy hoá
+ Nội suy các pixel gần nhất ( nearest –neighbor interpolation )
+ Nội suy song tuyến tính ( Bilinear interpolation )
+ Nội suy song khối ( Bicubic interpolation )
Các phương pháp nội suy làm việc theo một cách giống nhau. Trong mỗi
trường hợp, để tính giá trị của một pixel đã được nội suy, chúng tìm điểm
trong ảnh ra mà pixel nằm tại đó. Sau đó, chúng gán một giá trị tới các pixel
ra bằng cách tính toán giá trị trung bình có trọng số của một số pixel lân cận.
Trọng số dựa trên cơ sở khoảng cách tới điểm đang xét.
– Các phương pháp này khác nhau ở tập các pixel mà chúng xem xét:

+ Với nội suy các pixel gần nhất: pixel ra được gán giá trị của các pixel ở
gần nó nhất. Các pixel khác không được xem xét.
+ Nội suy song tuyến tính, giá trị của pixel ra là giá trị trung bình theo trọng
số của 2×2 pixel lân cận.
+ Nội suy song khối: giá trị của pixel ra là trung bình có trọng số của 4×4
pixel lân cận.
Số lượng các pixel được xem xét ảnh hưởng đến độ phức tạp tính toán. Vì
vậy, phương pháp song tuyến tính mất nhiều thời gian hơn phương pháp thứ
nhất và
phương pháp song khối mất nhiều thời gian hơn song tuyến tính. Tuy nhiên,
số lượng pixel lớn hơn, độ chính xác sẽ tốt hơn.

CHƯƠNG 2.

MÃ VẠCH TRÊN SẢN PHẨM

1.4 Lịch sử hình thành và phát triển mã vạch
Để thuận lợi và nâng cao hiệu quả trong bán và quản lý sản phẩm, nhà sản xuất
thường in trên hàng hoá một loại mã hiệu đặc biệt gọi là mã số mã vạch. Mã số
mã vạch là một trong những công nghệ nhận dạng và thu thập dữ liệu tự động
dựa trên nguyên tắc: đặt cho đối tượng cần quản lý một dãy số (hoặc dãy chữ và

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 15/41

số), sau đó thể hiện dưới dạng mã vạch để máy quét có thể đọc được. Trong
quản lý hàng hóa người ta gọi dãy số và dãy vạch đó là mã số mã vạch của hàng

hóa.
Mã số mã vạch đầu tiên được chế tạo và đưa vào sử dụng trên thế giới từ những
năm thập kỷ 70 của thế kỷ 20. Do yêu cầu phát triển sản xuất và kinh doanh
thương mại, công nghệ mã số mã vạch ngày càng được nghiên cứu hoàn thiện,
phát triển và được dụng rộng rãi trong đa ngành kinh tế và trên toàn thế giới.
Năm 1973 tổ chức MSMV đầu tiên được thành lập, đó là Hội đồng mã thống
nhất của My (viết tắt tên tiếng Anh là UCC).
Năm 1977, Hội mã số vật phẩm Châu âu (EAN) ra đời do sáng kiến của 12
nước Châu Âu, đến năm 1984 đổi thành EAN International, là một tổ chức phi
lợi nhuận, hoạt động trên cơ sở trung lập với mục đích chính là đẩy mạnh áp
dụng hệ thống EAN trên toàn cầu trong tất cả các ngành kinh tế - xã hội nhằm
cung cấp ngôn ngữ chung cho thương mại quốc tế (đặc biệt là thương mại điện
tử. . .).
Từ năm 2005, hai tổ chức EAN International và UCC hợp nhất thành một tổ
chức phân định toàn cầu có tên là GS1.
1.5 Mã vạch là gì?
Mã số hàng hóa( Article Number Code) là dãy chữ số nguyên, trong đó có các nhóm
số để biết được xuất xứ của hàng hóa, một nhóm số để biết được doanh nghiệp sản
xuất, một nhóm số thể hiện loại hàng hóa, và một nhóm số thể hiện số kiểm tra hàng
hóa.
Một mã số hàng hóa có 2 tính chất cơ bản:
+ Con số duy nhất đặc trưng cho hàng hóa, mỗi loại hàng hóa được nhận diện bởi 1
dãy số duy nhất và ngược lại mỗi dãy số chỉ tương ứng với một loại hàng hóa.
+ Mã số chỉ là dãy số đại diện cho hàng hóa chứ không liên quan đến đặc điểm hay
chất lượng của hàng hóa, trên mã số cũng không có giá của hàng hóa mà giá của
hàng hóa chỉ được nhà cung cấp lưu lại trên hệ thống của cửa hàng.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM



Trang 16/41

Mã vạch hàng hóa (Barcode) là hình ảnh tập hợp ký hiệu các vạch đen trắng, đậm,
nhạt, dài, ngắn, thành nhóm vạch và định dạng khác nhau để cá máy đọc đầu gắn
laser hoặc camera ghi nhận hình ảnh có thể đọc được các ký hiệu này.
1.1.1 Phân loại mã vạch
Mã số mã vạch gồm nhiều loại khác nhau, tùy theo dung lượng thông tin, dạng
thông tin đuộc mã hóa cũng như mục đích sử dụng mà người ta chia làm nhiều loại.
Hiện nay trong nền thương mại thế giới người ta chủ yếu áp dụng 2 loại mã vạch.
-

Mã vạch UPC (Universal Product Code)

UPC là một loại ký hiệu mã số được ngành công nghiệp thực phẩm ứng dụng vào
năm 1973 và thuộc quyền quản lý của Hội đồng mã thống nhất My UCC (Uniform
Code Council, Inc.). Mã UPC gồm 2 thành phần chính: phần mã vạch mà máy có
thể đọc được và phần mã số mà con người có thể đọc được, gồm 12 ký số, không
bao gồm ký tự. Mã UPC vẫn còn đang sử dụng ở Hoa Kỳ và Bắc My.

Hình 2-1: Ví dụ mã vạch UPC

-

Mã vạch EAN (European Article Number)
EAN là bước phát triển kế tiếp của UPC. Hệ thống mã EAN được thiết lập bởi
các nhà sáng lập là 12 nước châu Âu được sử dụng từ năm 1974 và sau đó phát
triển nhanh chóng và được sử dụng hầu hết tại các nước trên thế giới. Chính vì
vậy từ năm 1977, EAN trở thành một tổ chức quốc tế với tên gọi EAN quốc tế
(EAN International). Mã vạch EAN gồm các vạch tối và sáng (khoảng trắng)

được tạo bởi các modun có độ rộng, độ sáng hoặc độ tối thống nhất.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 17/41

Mã vạch EAN, mỗi số được thể hiện bằng 7 modun gồm các vạch thể hiện số
và các vạch phụ cấu tạo từ một số modun nhất định: vạch giữa, 2 vạch biên và
mã vạch.
Mỗi giá trị số được thể hiện trong mã vạch bằng 7 modun theo 3 bộ mã A,B,C
như trong bảng sau:
Bảng 2-1: Giá trị số 0-9 theo bộ mã A,B,C

Giá trị số
0
1
2
3
4
5
6
7
8
9

Bộ mã A
0001101
0011001

0010011
0111101
0100011
0110001
0101111
0111011
0110111
0001011

Bộ mã B
0100111
0110011
0011011
0100001
0011101
0111001
0000101
0010001
0001001
0010111

Bộ mã C
1110010
1100110
1101100
1000010
1011100
1001110
1010000
1000100

1001000
1110100

Bảng 2-2: Vạch biên và vạch giữa

Số modun
Bộ mã
3
101
5
01010
Kích thước danh định của mã vạch EAN:
Theo kích thước chuẩn độ rộng của mỗi modun là 0.33mm. NHư vậy kích thước cụ
thể của các loại mã vạch:
Mỗi chữ số : 7 modun = 2.31 mm
Vạch biên: 3 modun = 0.99 mm
Vạch giữa: 5 modun = 1.65 mm.
Trong hệ thống mã số EAN cho sản phẩm bán lẻ thường có hai loại, một loại sử
dụng 13 con số (EAN-13) và loại kia sử dụng 8 con số (EAN-8).
Mã số EAN-13 gồm 13 con số, từ trái sang phải:
+ Mã quốc gia gồm 2 hoặc 3 con số đầu

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 18/41

+Mã doanh nghiệp gồm từ 4,5 hoặc 6 con số do tổ chức mã số vật phẩm quốc gai
cấp cho các nhà sản xuất là thành viên của họ.

+ Mã mặt hàng có thể là 5, 4 hoặc 3 con số tùy thuộc vào mã doanh nghiệp, Mã này
do nhà sản xuất quy định, đảm bảo mỗi sản phầm chỉ có một mã số.
+ Mã kiểm tra là số cuối cùng của dãy mã số, được tính dựa vào 12 con số trước đó,
dùng để kiểm tra việc ghi đúng những con số nói trên.

Hình 2-2: Mã vạch EAN-13

Tổng số modun trong mã vạch EAN-13 là:
12 số x 7 modun = 84
2 vạch biên x 3 modun = 6
Vạch giữa x5 modun = 5
Tổng cộng có 95 modun => độ rộng danh định là 31.35 mm.
Cách tính mã kiểm tra C
Bước 1: Từ trái sang phải, cộng tất cả các sô ở vị trí lẻ ( trừ số kiểm tra C)
Bước 2: Nhân kết quả bước 1 với 3
Bước 3: Cộng giá trị của các con số sòn lại
Bước 4: Cộng kết quả bước 2 với bước 3
Bước 5: Lấy bội số của 10 lớn hơn và gần kết quả bước 4 nhất trù đi kết quả bước 4
được số kiểm tra C.
Tương tự như EAN-13, mã EAN-8 cũng có quy định về cấu tạo mã vạch như sau:
+ Mã quốc gia gồm 3 con số đầu
+ Mã mặt hàng gồm 4 con số tiếp theo.
+Mã kiểm tra là con số cuối cùng.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 19/41


Cách tính số kiểm tra C cũng giống cách tính mã EAN-13.
1.1.2 Cấu tạo của mã vạch
Một hệ thống mã vạch như thế này có ba phần chính. Thứ nhất, có một máy tính
trung tâm chạy hệ thống cơ sở dữ liệu (hệ thống lưu trữ) giữ được số lượng của tất
cả các sản phẩm mà bạn đang bán, ai làm ra nó, mỗi thứ có giá bao nhiêu và bạn có
bao nhiêu trong kho. Thứ hai, có các mã vạch được in trên tất cả các sản phẩm.
Cuối cùng, có một hoặc nhiều máy quét checkout có thể đọc các mã vạch
Khi nhìn vào mã vạch thoạt đầu ta không thể phân biệt được đâu là phần bắt đầu và
đâu là phần kết thúc của mã vạch, nhưng thật ra rất đơn giản. Mỗi chữ số trong số
sản phẩm được cho cùng một khoảng không ngang chính xác 7 đơn vị. Các thanh
ngang này được tô màu đen hoặc trắng để biểu thị số thập phân 0-9. Mỗi khối đã
được thiết kế sao cho, ngay cả khi bạn lật ngược nó, nó không thể bị lẫn lộn với bất
kỳ cái nào khác.

Hình 2-3: quy tắc mã vạch của số 0 - 9

Mã số mã vạch được thu nhận bằng một máy quét mã vạch, một máy thu nhận
hình ảnh của mã vạch in trên các bề mặt và chuyển thông tin chứa trong mã vạch
đến máy tính hay các thiết bị cần thông tin này và mã vạch được giải mã thành

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH
TRÊN SẢN PHẨM


Trang 20/41

dãy số một cách tự động, gọi ra tiệp dữ liệu liên quan đến hàng hoá đang lưu trữ
trong cơ sở dữ liệu về sản phẩm hàng hóa.

MÔ PHỎNG NHẬN DIỆN MÃ VẠCH

TRÊN SẢN PHẨM


×