1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo bài tập lớn xử lý ẢNH ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH để NHẬN DẠNG mã VẠCH

23 178 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo bài tập lớn xử lý ảnh ứng dụng công nghệ xử lý ảnh để nhận dạng mã vạch
Tác giả Vũ Văn Duy
Người hướng dẫn TS. Lê Thị Thúy Nga
Trường học Trường đại học Giao Thông Vận Tải
Chuyên ngành Xử lý ảnh và các vấn đề liên quan, Công nghệ xử lý ảnh, Nhận dạng mã vạch
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 3,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trên thế giới, mã vạch đã được đưa vào áp dụng đại trà từ hơn 30 năm nay trong các ngành khác nhau như: bán lẻ, quốc phòng, y tế, giao thông vận tải, thể thao và truy tìm nguồn gốc, … Để

Trang 1

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

BỘ MÔN ĐIỀU KHIỂN HỌC

BÁO CÁO BÀI TẬP LỚN

Trang 2

MỤC LỤC

CHƯƠNG 1: GIỚI THIỆU VỀ ĐÊ TÀI 1

1.1 Lý do chọn đề tài 1

1.2 Nhiệm vụ đề tài 1

1.3 Mục đích đề tài 1

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 3

2.1 Xử lý ảnh và các vấn đề cơ bản trong xử lý ảnh 3

2.2 Tổng quan về mã vạch 3

2.3 Các dạng mã vạch 4

2.4 Các loại mã vạch thông dụng 6

CHƯƠNG 3: 9

TỔNG QUAN VỀ NGÔN NGỮ Python-OpenCV VÀ PHẦN MỀM GIAO DIỆN GUI 9

3.1 Tổng quan ngôn ngữ Python 9

3.1.1 Python là gì ? 9

3.1.2 Đặc điểm của Python 10

3.2 Tổng quan về OpenCV 10

3.2.1 OpenCV là gì ? 10

3.2.2 Ứng dụng 11

3.3 Lập trình giao diện Python với PyQt5 và Qt Designer 11

3.3.1 Qt Designer là gì ? 11

3.3.2 PyQt5 là gì ? 12

CHƯƠNG 4: QUY TRÌNH THỰC HIỆN 13

4.1 Thiết kế giao diện GUI sử dụng phần mềm Qt Designer 13

4.2 Quá trình nhận dạng mã vạch 15

4.3 Một số hàm xử lý mã vạch 16

CHƯƠNG 5: KẾT QUẢ THỰC HIỆN 19

5.1 Kết quả nhận diện từ ảnh 19

5.2 Kết quả nhận diện từ video 20

CHƯƠNG 6: KẾT LUẬN 21

Trang 3

CHƯƠNG 1: GIỚI THIỆU VỀ ĐÊ TÀI

1.1 Lý do chọn đề tài

Như chúng ta đã biết, mã vạch là một trong các công nghệ nhận dạng và thu thập dữ liệu tự động, có thể đưa vào áp dụng trong đa ngành công nghiệp Trên thế giới, mã vạch đã được đưa vào áp dụng đại trà từ hơn 30 năm nay trong các ngành khác nhau như: bán lẻ, quốc phòng, y tế, giao thông vận tải, thể thao và truy tìm nguồn gốc, … Để có thể ứng dụng những ưu việt của mã vạch vào trong thực tế thìmột thiết bị đọc mã vạch là máy đọc mã vạch đã ra đời và ngày càng trở lên phổ biến, nhưng giá thành của những máy đọc này thường rất cao và chỉ sử dụng cho mục đíc duy nhất là đọc mã vạch Trong điều kiện nền kinh tế đang phát triển ở Việt Nam hiện nay, việc tạo ra các sản phẩm có giá thành rẻ hơn để có thể sử dụng trong các lĩnh vực là một điều cần thiết

Hiện nay, công nghệ xử lý ảnh đã rất phổ biến trong công nghiệp, được ứng dụng vào trong thực tế sản xuất Và với những Camera thông dụng đủ tốt nhưng không quá đắt tiền nếu chúng ta xây dựng một phần mềm chương trình nhận dạng bằng Camera thì sẽ tiết kiệm được giá thành hơn khi mua máy đọc mã vạch Hơn nữa với Camera thì chúng ta có thể sử dụng trong các mục đích khác ngoài việc đọc mã vạch Đó là ưu điểm rất lớn và vượt trội của xử lý ảnh trong công nghiệp

Vì vậy, em muốn đi vào nghiên cứu và viết một chương trình nhận dạng mã

vạch ứng dụng công nghệ xử lý ảnh, và đã chọn đề tài: “Ứng dụng công nghệ xử

Trang 4

Mục đích của đề tài nhằm xây dựng môt chương trình để đọ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 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ế phần mềm đọc mã vạch

Sau khi nghiên cứu về mã vạch, em 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 tình nhận dạng mã vạch từ dữ liệu hình ảnh Camera thu về

Trang 5

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

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à đồ họa đó 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à đồ họa đó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

Sơ đồ tổng quát của một hệ xử lý ảnh:

2.2 Tổng quan về mã vạch

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ề

Trang 6

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.3 Các dạng mã vạch

 Các mã vạch tuyến tính

Loại Thuộc tính Độ rộng Sử dụngPlessey Liên tục 2 Catalog, các giá hàng

trong cửa 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ớiCodaBar Rời rạc 2 Thư viện, ngân hàng

máu, vé máy bayInterleaved 2 of 5 Liên tục 2 Bán buôn, thư viện ( ở

Na Uy)Code 39 Rời rạc 2 Đa dạng

Code 93 Liên tục 2 Đa dạng

Code 128 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

Trang 7

PostBar Rời rạc Nhiều Bưu điện

CPC Binary Rời rạc 2 Bưu điện

Telepen Liên tục 2 Thư viên

 Mã vạch cụm

Loại Ghi chú

Codablock Mã vạch cụm 1D

Code 16K 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

Loại Ghi chú

3-DI Phát triển bởi Lynn Ltd

ArrayTag Từ ArrayTech Systems

Trang 8

DataGlyphs Từ Xerox PARC

Datamatrix Từ RVSI Acuity CiMatrix Hiện nay thuộc phạm vi

công cộng

Datastrip Code Từ Datastrip, Inc

QR Code Phạm vi công cộng

HueCode Từ Robot Design Associates Sử dụng thang màu xám

hoặc nhiều màu

2.4 Các loại mã vạch thông dụng

EAN

EAN là bước phát triển kế tiếp của UPC Về cách mã hóa nó cũng giống hệt như UPC nhưng về dung lượng nó gồm 13 ký số trong đó 2 hoặc 3 ký số đầu tiên là ký số “mốc”, dùng để biểu thị cho nước xuất xứ Các ký số này chính là “mã quốc gia” của sản phẩm được cấp bởi Tổ chức EAN quốc tế (EAN International Organization)

EAN này được gọi là EAN-13 để phân biệt với phiên bản EAN-8 sau này gồm 8 ký số

Theo ký hiệu EAN-13 như hình vẽ phía trên, có thể phân chia như sau:

* 893 – Mã quốc gia Việt Nam

* 123456789 – 9 ký số này được phân chia làm 2 cụm: cụm mã nhà sản xuất có thể 4, 5 hoặc 6 ký số tùy theo được cấp, cụm còn lại là mã mặt hàng

* 7 – Mã kiểm tra tính chính xác của tòan bộ số EAN

Trang 9

Code 39

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

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

Mã QR Code

Trang 10

Loại mã 2D được sử dụng nhiều nhất hiện nay là QR Code (Quick

Response) QR Code ứng dụng phổ biến trong các hoạt động tiếp thị quảng cáo, thương hiệu; giới thiệu sản phẩm/dịch vụ; các chương trình khuyến mãi; tra cứu thông tin; thậm chí dùng để quét mã thanh toán, giao dịch

chuyển tiền tại một số ngân hàng

Mã QR Code có nhiều ưu điểm như: kích thước đa dạng, khả năng đọc dữ liệu nhanh, hỗ trợ mã hóa 4 chế độ khác nhau của dữ liệu (Số, chữ, byte, Kanji); ít bị lỗi trong khi dùng và đặc biệt loại mã vạch này miễn phí sử dụng

Mã ma trận – Data Matrix

Mã Data Matrix được ứng dụng trong việc đặt tên các hàng hóa và văn bản Tương tự như QR Code, loại mã vạch này hầu như rất ít bị lỗi trong quátrính sử dụng, khả năng đọc nhanh Mã AZTEC

Mã vạch PDF417

Trang 11

PDF417 là một loại mã vạch 2 chiều 2D, chúng được dùng trong các ứng dụng yêu cầu lưu trữ lượng dữ liệu khổng lồ, có thể kể đến như: Ảnh kỹ thuật số, dấu vân tay, số và đồ họa, chữ ký,

Mã vạch PDF417 là một loại mã vạch thông dụng ở nước ngoài và được sử dụng miễn phí

Trang 12

1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991 Đến nay thì cộng đồng người sử dụng ngôn ngữ này rất đông, nếu so sánh từ bảng xếp hạng các ngôn ngữ năm 2018 thì Python đã leo lên vị trí số 1 trên bảng xếp hạng những ngôn ngữ lập trình phổ biến.

3.1.2 Đặc điểm của Python

Trang 13

 Xử lý lỗi dựa theo ngoại lệ.

 Kiểu dữ liệu động ở mức rất cao

 Các thư viện chuẩn và các mô-đun ngoài bao quát hầu như mọi việc

 Phần mở rộng và mô-đun dễ dàng viết trong C, C++

 Có thể nhúng trong ứng dụng như một giao diện kịch bản (scripting interface)

 Python mạnh mẽ và thực hiện rất nhanh

3.2 Tổng quan về OpenCV

3.2.1 OpenCV là gì ?

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàngđầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần

Trang 14

3.3 Lập trình giao diện Python với PyQt5 và Qt Designer

3.3.1 Qt Designer là gì ?

Qt Designer là một công cụ để nhanh chóng xây dựng giao diện người dùng

đồ họa với các widget từ khung Qt GUI Nó cung cấp cho bạn một giao diện kéo và thả đơn giản để bố trí các thành phần như nút, trường văn bản, hộp tổ hợp và hơn thế nữa Đây là ảnh chụp màn hình của Qt Designer trên Windows:

3.3.2 PyQt5 là gì ?

 Qt là một Application framework đa nền tảng viết trên ngôn ngữ C++ , được dùng để phát triển các ứng dụng trên desktop, hệ thống nhúng và mobile Hỗ trợ cho các platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS và một số

platform khác PyQt là Python interface của Qt, kết hợp của ngôn ngữ lậptrình Python và thư viện Qt, là một thư viện bao gồm các thành phần giao

diện điều khiển (widgets , graphical control elements).

 PyQt API bao gồm các module bao gồm số lượng lớn với

các classes và functions hỗ trợ cho việc thiết kế ra các giao diện giao tiếp

với người dùng của các phần mềm chức năng Hỗ trợ với Python 2.x và 3.x

 Các class của PyQt5 được chia thành các module, bao gồm:

+ QtCore : là module bao gồm phần lõi không thuộc chức năng GUI, ví

dụ dùng để làm việc với thời gian, file và thư mục, các loại dữ liệu,

Trang 15

streams, URLs, mime type, threads hoặc processes.

+ QtGui : bao gồm các class dùng cho việc lập trình giao diện

(windowing system integration), event handling, 2D graphics, basic imaging, fonts và text

+ QtWidgets : bao gồm các class cho widget, ví dụ : button, hộp thoại, …được sử dụng để tạo nên giao diện người dùng cơ bản nhất

+ QtMultimedia : thư viện cho việc sử dụng âm thanh, hình ảnh, camera,

+ QtBluetooth : bao gồm các class giúp tìm kiếm và kết nối với các thiết

bị có giao tiếp với phần mềm

+ QtNetwork : bao gồm các class dùng cho việc lập trình mạng, hỗ trợ lập trình TCP/IP và UDP client , server hỗ trợ việc lập trình mạng

+ QtPositioning : bao gồm các class giúp việc hỗ trợ xác định vị

+ Enginio : module giúp các client truy cập các Cloud Services của Qt.+ QtWebSockets : cung cấp các công cụ cho WebSocket protocol

+ QtWebKit : cung cấp các class dùng cho làm việc với các trình duyệt Web , dựa trên thư viện WebKit2

+ QtWebKitWidgets : các widget cho WebKit

+ QtXml : các class dùng cho làm việc với XML file

+ QtSvg : dùng cho hiển thị các thành phần của SVG file

+ QtSql : cung cấp các class dùng cho việc làm việc với dữ liệu

+ QtTest : cung cấp các công cụ cho phép test các đơn vị của ứng dụng với PyQt5

Trang 16

CHƯƠNG 4: QUY TRÌNH THỰC HIỆN

4.1 Thiết kế giao diện GUI sử dụng phần mềm Qt Designer

 GUI (Graphical User interface) hay giao diện đồ họa người dùng Đây là thuộc ngữ chung để gọi những chương trình với giao diện các cửa sổ

 Sau khi tính toán và xây dựng các tính năng của GUI thì ta được một giaodiện GUI tương tác với người dùng sau đây :

Trang 17

 Bằng cách kéo thả các đối tượng như Button, text box, group box, check box… ta được giao diện như trên.

 Sau khi tạo xong được giao diện, phần mềm sẽ xuất cho ta một file

“design.ui”.Nhiệm vụ của ta bây giờ là sẽ chuyển đổi file có đuôi “.ui” sang file có đuôi “.py” để nhúng code xử lý quét mã vạch Sau đây là câu lệnh chuyển đổi trên terminal:

Pyuic5-x design.ui -o design.py

FILE_NAME: Là tên file sẽ code

pyuic5 sẽ được cài đặt với PyQt5 công cụ chuyển file giao diện

*.ui sang *.py render ra giao diện

4.2 Quá trình nhận dạng mã vạch

Trong quá trình nghiên cứu và phân tích các ưu nhược điểm của các loại thuật toán đọc mã vạch khác nhau, ta thấy thuật toán DBR có các chức năng đọc mã vạch trong các ướng dụng đa nền tảng.Các định dạng mã vạch được hỗ trợ bao gồm QR Code, Linear(1D), PDF 417, DataMatrix …

Các ưu điểm của thuật toán đọc mã vạch DBR:

 Hiệu suất đọc mã vạch cao

 Sự nhanh nhẹn, linh hoạt khi đọc các mã vạch kém chất lượng

 Tích hợp xử lý hình ảnh đa năng

Trang 18

Lưu đồ thuật toán của thuật toán đọc mã vạch DBR:

Trang 19

settings.intermediate_result_types = EnumIntermediateResultType.IRT_ORIGINAL_IMAGE

#Chỉ định lưu kết quả trong bộ nhớ

settings.intermediate_result_saving_mode = EnumIntermediateResultSavingMode.IRSM_MEMORY #Cập nhật các cài đặt hiện tại, nếu có lỗi thì báo lỗi

frame = np.ndarray((height, width, channel), np.uint8, buffer, 0, (stride, channel, 1))

#trả về các kết quả hình ảnh và thời gian xử lý

return frame, [results, (end - start) * 1000]

 Hàm quét mã vạch từ video đầu vào

def process_barcode_frame(license, frameQueue, resultQueue, template=None, types=0, types2=0): # Tạo một đối tượng nhận dạng mã QR

Trang 20

start, end = 0, 0

try:

#Lấy thông số khung hình

frameHeight, frameWidth, channel = frame.shape[:3]

start = time.time()

# results = reader.decode_buffer(frame)

#Giải mã mã vạch từ đầu vào video và trả về các kết quả dưới dạng văn bản Results

results = reader.decode_buffer_manually(np.array(frame).tobytes(), frameWidth, frameHeight, frame.strides[0], EnumImagePixelFormat.IPF_RGB_888)

end = time.time()

except BarcodeReaderError as error:

print(error)

try:

#trả về kết quả và thời gian xử lý

resultQueue.put([results, (end - start) * 1000], False, 10)

Trang 21

CHƯƠNG 5: KẾT QUẢ THỰC HIỆN

5.1 Kết quả nhận diện từ ảnh

Trang 22

5.2 Kết quả nhận diện từ video

Trang 23

CHƯƠNG 6: KẾT LUẬN

- Bài tập lớn “ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH ĐỂ NHẬN DẠNG

MÃ VẠCH” của em đã xử lí nhận dạng và giải mã mã vạch từ hình ảnh hoặc

video đầu vào

- Đối với thu nhận ảnh từ camera thì độ chính xác còn chưa cao do bị tác độngbởi các yếu tố môi trường như ánh sáng , bụi bẩn hay chất lượng của camera…

- Để giải quyết các khó khăn của đề tài, người thực hiện xin đề xuất 1 số ý kiếnsau đây:

Ngày đăng: 02/06/2022, 16:57

HÌNH ẢNH LIÊN QUAN

Theo ký hiệu EAN-13 như hình vẽ phía trên, có thể phân chia như sau: * 893 –                 Mã quốc gia Việt Nam - BÁO cáo bài tập lớn xử lý ẢNH ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH để NHẬN DẠNG mã VẠCH
heo ký hiệu EAN-13 như hình vẽ phía trên, có thể phân chia như sau: * 893 – Mã quốc gia Việt Nam (Trang 8)
 Tích hợp xử lý hình ảnh đa năng. - BÁO cáo bài tập lớn xử lý ẢNH ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH để NHẬN DẠNG mã VẠCH
ch hợp xử lý hình ảnh đa năng (Trang 18)
 Hàm đọc mã vạch từ hình ảnh đơn hoặc tệp hình ảnh def __decode_file(self, filename): - BÁO cáo bài tập lớn xử lý ẢNH ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH để NHẬN DẠNG mã VẠCH
m đọc mã vạch từ hình ảnh đơn hoặc tệp hình ảnh def __decode_file(self, filename): (Trang 19)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w