Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 23

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


XỬ LÝ ẢNH

ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH ĐỂ


NHẬN DẠNG MÃ VẠCH

Giảng viên hướng dẫn : TS.Lê Thị Thúy Nga

Sinh viên thực hiện : Vũ Văn Duy

Mã sinh viên : 181603057

Lớp : Tự Động Hóa 3 – K59


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
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ử
lý ảnh để nhận dạng mã vạch”.

1.2 Nhiệm vụ đề tài


 Thiết kế mã vạch.
 Viết chương trình phần mềm nhận dạng mã vạch bằng ngôn ngữ Python
và openCV.
 Thiết kế và thi công mô hình nhận dạng mã vạch.
 Lưu trữ dữ liệu.
1.3 Mục đích đề tài

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
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ề.

2
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ề
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.

3
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ụng

Plessey 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ới

CodaBar Rời rạc 2 Thư viện, ngân hàng


máu, vé máy bay

Interleaved 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

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

4
 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.

PDF417 Phạm vi công cộng.

Điểm đen Nó sử dụng các vạch đồng tâm.

Code 1 Phạm vi công cộng.

CP code Từ CP Tron, Inc.

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

5
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.

6
 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

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.  

7
 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

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í. 

8
CHƯƠNG 3:
TỔNG QUAN VỀ NGÔN NGỮ Python-OpenCV VÀ
PHẦN MỀM GIAO DIỆN GUI
3.1 Tổng quan ngôn ngữ Python

3.1.1 Python là gì ?

9
Python là một ngôn ngữ lập trình thông dịch, hướng đối tượng, ngôn
ngữ lập trình cấp cao được giải thích với ngữ nghĩa động. Python với triết lý
thiết kế của nó rất thuận tiện cho việc đọc hiểu code, đơn giản và rõ ràng
được thiết kế bởi Guido van Rossum. Thiết kế bắt đầu vào cuối những năm
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
 Cú pháp rất tường minh, dễ đọc.
 Các khả năng tự xét mạnh mẽ.
 Hướng đối tượng trực giác.
 Cách thể hiện tự nhiên mã thủ tục.
 Hoàn toàn mô-đun hóa, hỗ trợ các gói theo cấp bậc.
 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

10
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.
3.2.2 Ứng dụng
Opencv có rất nhiều ứng dụng:
 Nhận dạng ảnh
 Xử lý hình ảnh
 Phục hồi hình ảnh/video
 Thực tế ảo
 Các ứng dụng khác

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:

11
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ập
trì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,
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,
… 
12
+ 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.

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 giao
diện GUI tương tác với người dùng sau đây :

13
 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
14
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.

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

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

 Hàm đọc mã vạch từ hình ảnh đơn hoặc tệp hình ảnh
def __decode_file(self, filename):
self.__init_params()
#Lấy các thiết lập hiện tại và lưu vào đối tượng settings
settings = self._reader.get_runtime_settings()
#Cài đặt kết quả hiển thị là hình ảnh gốc
settings.intermediate_result_types = EnumIntermediateResultType.IRT_ORIGINAL_IMAGE
#Chỉ định lưu kết quả trong bộ nhớ

16
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
error = self._reader.update_runtime_settings(settings)
#Lấy thời gian bắt dầu xử lý
start = time.time()
#Đọc tên file
results = self._reader.decode_file(filename)
end = time.time()
#trả về các kết quả trung gian có chứa hình ảnh gốc, ảnh cụm màu, Hình ảnh binarized, đường viền,...
intermediate_results = self._reader.get_all_intermediate_results()
#Lấy tất cả các thuộc tính của ảnh
imageData = intermediate_results[0].results[0]
buffer = imageData.bytes
width = imageData.width
height = imageData.height
stride = imageData.stride
format = imageData.image_pixel_format
channel = 3

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
reader = BarcodeReader()
# Lấy các thiết lập hiện tại và lưu vào đối tượng settings
settings = reader.get_runtime_settings()
# Cập nhật các cài đặt hiện tại
reader.update_runtime_settings(settings)

while True:
results = None

try:
frame = frameQueue.get(False, 10)
if type(frame) is str:
break
except:
time.sleep(0.01)
continue

start, end = 0, 0
try:

17
#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)
except:
pass

 Hàm xử lý nhiều mã vạch.


def create_barcode_process(self):
self.destroy_barcode_process()
#Tạo nhiều luồng xử lý
self.initQueue()
#Xử lý đa luồng
self.barcodeScanning = Process(target=process_barcode_frame, args=(self._license, self.frameQueue,
self.resultQueue, self._template, self._types, self._types2))
#Xử lý và trả về kết quả
self.barcodeScanning.start()

18
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN
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
- 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 động
bở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ến
sau đây:
+ Sử dụng camera chuyên dụng.
+ Thiết lập môi trường ổn định xung quanh để làm tăng độ chính xác của ảnh
chụp ( xác định 1 vị trí cố định để chụp ảnh).
+ Thu thập nhiều mẫu ký tự để tăng tập mẫu qua đó tăng độ chính xác của
chương trình.
+ Tìm hiểu thêm nhiều kiến thức để cải thiện đề tài 1 cách tối ưu và tốt hơn…

21

You might also like