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

24 128 3
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

Đ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

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 : Vũ Văn Duy Mã sinh viên : 181603057 Lớp : Tự Động Hóa – K59 MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VỀ ĐÊ TÀI 1.1 Lý 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 CHƯƠNG 2: TỔNG QUAN VÀ CÁC VẤN ĐỀ LIÊN QUAN 2.1 Xử lý ảnh vấn đề xử lý ảnh 2.2 Tổng quan mã vạch 2.3 Các dạng mã vạch .4 2.4 Các loại mã vạch thông dụng CHƯƠNG 3: 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 3.1.1 Python ? 3.1.2 Đặc điểm Python 10 3.2 Tổng quan OpenCV 10 3.2.1 OpenCV ? 10 3.2.2 Ứng dụng .11 3.3 Lập trình giao diện Python với PyQt5 Qt Designer .11 3.3.1 Qt Designer ? 11 3.3.2 PyQt5 ? 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 nhận diện từ ảnh 19 5.2 Kết 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ý chọn đề tài Như biết, mã vạch công nghệ nhận dạng thu thập liệu tự động, đưa vào áp dụng đa ngành công nghiệp Trên giới, mã vạch đưa vào áp dụng đại trà từ 30 năm ngành khác như: bán lẻ, quốc phịng, y tế, giao thơng vận tải, thể thao truy tìm nguồn gốc, … Để ứng dụng ưu việt mã vạch vào thực tế thiết bị đọc mã vạch máy đọc mã vạch đời ngày trở lên phổ biến, giá thành máy đọc thường cao sử dụng cho mục đíc đọc mã vạch Trong điều kiện kinh tế phát triển Việt Nam nay, việc tạo sản phẩm có giá thành rẻ để sử dụng lĩnh vực điều cần thiết Hiện nay, công nghệ xử lý ảnh phổ biến công nghiệp, ứng dụng vào thực tế sản xuất Và với Camera thông dụng đủ tốt không đắt tiền xây dựng phần mềm chương trình nhận dạng Camera tiết kiệm giá thành mua máy đọc mã vạch Hơn với Camera sử dụng mục đích khác ngồi việc đọc mã vạch Đó ưu điểm lớn vượt trội xử lý ảnh công nghiệp Vì vậy, em muốn vào nghiên cứu viết chương trình nhận dạng mã vạch ứng dụng cơng nghệ xử lý ảnh, 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 ngôn ngữ Python openCV  Thiết kế thi cơng mơ hình nhận dạng mã vạch  Lưu trữ liệu 1.3 Mục đích đề tài Mục đích đề tài nhằm xây dựng mơt chương trình để đọc mã vạch từ Camera, từ phát triển để ứng dụng vào yêu cầu đọc mã vạch thực tế thư viện, nhà sách, siêu thị … 1.4 Phương pháp nghiên cứu Dựa yêu cầu đề tài em thu thập tài liệu mã vạch cách giải mã mã vạch, tìm hiểu 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 nghiên cứu mã vạch, em tìm hiểu lý thuyết xử lý ảnh, chủ yếu thuật toán tăng cường chất lượng ảnh để Camera nhận dạng tốt Và cuối việc viết chương tình nhận dạng mã vạch từ liệu hình ảnh Camera thu CHƯƠNG 2: TỔNG QUAN VÀ CÁC VẤN ĐỀ LIÊN QUAN 2.1 Xử lý ảnh vấn đề xử lý ảnh Con người thu nhận thông tin qua giác quan, thị giác đóng vai trị quan trọng Những năm trở lại với phát triển phần cứng máy tính, xử lý ảnh đồ họa phát triển cách mạnh mẽ có nhiều ứng dụng sống Xử lý ảnh đồ họa đóng vai trị quan trọng tương tác người – máy Quá trình xử lý ảnh xem trình thao tác ảnh đầu vào nhằm cho kết mong muốn Kết đầu q trình xử lý ảnh ảnh “tốt hơn” kết luận Sơ đồ tổng quát hệ xử lý ảnh: 2.2 Tổng quan mã vạch Mã vạch thể thơng tin dạng nhìn thấy bề mặt mà máy móc đọc Nguyên thủy mã vạch lưu trữ liệu theo bề rộng vạch in song song khoảng trống chúng, ngày chúng in theo mẫu điểm, theo vòng tròn đồng tâm hay chúng ẩn hình ảnh Mã vạch đọc thiết bị quét quang học gọi máy đọc mã vạch hay quét từ hình ảnh phần mềm chuyên biệt Nội dung mã vạch thông tin 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 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 Catalog, giá hàng 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 giới CodaBar Rời rạc Thư viện, ngân hàng máu, vé máy bay Interleaved of Liên tục Bán buôn, thư viện ( Na Uy) Code 39 Rời rạc Đa dạng Code 93 Liên tục Đa dạng Code 128 Liên tục Nhiều Đa dạng Code 11 Rời rạc Đ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 Bưu điện Telepen Liên tục Thư viên  Mã vạch cụm Loại Ghi Codablock Mã vạch cụm 1D Code 16K Dựa Code 128 1D Code 49 Mã vạch cụm 1D từ Intermec Corp PDF417 Mã vạch 2D phổ biến Phạm vi công cộng Micro PDF417  Mã vạch 2D Loại Ghi 3-DI Phát triển Lynn Ltd ArrayTag Từ ArrayTech Systems PDF417 Phạm vi cơng cộng Điểm đen Nó sử dụng vạch đồng tâm 2.4 Code Phạm vi công cộng CP code Từ CP Tron, Inc DataGlyphs Từ Xerox PARC Datamatrix Từ RVSI Acuity CiMatrix Hiện 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 nhiều màu Các loại mã vạch thông dụng  EAN EAN bước phát triển UPC Về cách mã hóa giống hệt UPC dung lượng gồm 13 ký số ký số ký số “mốc”, dùng để biểu thị cho nước xuất xứ Các ký số “mã quốc gia” sản phẩm cấp Tổ chức EAN quốc tế (EAN International Organization) EAN gọi EAN-13 để phân biệt với phiên EAN-8 sau gồm ký số Theo ký hiệu EAN-13 hình vẽ phía trên, phân chia sau: * 893 – Mã quốc gia Việt Nam * 123456789 – ký số phân chia làm cụm: cụm mã nhà sản xuất 4, ký số tùy theo cấp, cụm lại mã mặt hàng *7– Mã kiểm tra tính xác tòan số EAN  Code 39 Code 39 phát triển sau UPC EAN ký hiệu chữ số thơng dụng Nó khơng có chiều dài cố định UPC EAN lưu trữ nhiều lượng thơng tin bên Do tính linh họat vậy, Code 39 ưa chuộng rộng rãi bán lẻ sản xuất Bộ ký tự bao gồm tất chữ hoa, ký số từ đến ký tự đặc biệt khác Nhiều tổ chức chọn dạng thức Code 39 để làm chuẩn cơng nghiệp đáng ý Bộ Quốc Phòng Mỹ lấy Code 39 làm mã gọi LOGMARS  Mã QR Code Loại mã 2D sử dụng nhiều QR Code (Quick Response) QR Code ứng dụng phổ biến 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ụ; chương trình khuyến mãi; tra cứu thơng tin; chí dùng để qt mã toán, giao dịch chuyển tiền số ngân hàng Mã QR Code có nhiều ưu điểm như: kích thước đa dạng, khả đọc liệu nhanh, hỗ trợ mã hóa chế độ khác liệu (Số, chữ, byte, Kanji); bị lỗi dùng đặc biệt loại mã vạch miễn phí sử dụng  Mã ma trận – Data Matrix Mã Data Matrix ứng dụng việc đặt tên hàng hóa văn Tương tự QR Code, loại mã vạch bị lỗi trính sử dụng, khả đọc nhanh Mã AZTEC  Mã vạch PDF417 PDF417 loại mã vạch chiều 2D, chúng dùng ứng dụng yêu cầu lưu trữ lượng liệu khổng lồ, kể đến như: Ảnh kỹ thuật số, dấu vân tay, số đồ họa, chữ ký, Mã vạch PDF417 loại mã vạch thông dụng nước ngồi sử dụng miễn phí 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 ? Python 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 giải thích với ngữ nghĩa động Python với triết lý thiết kế thuận tiện cho việc đọc hiểu code, đơn giản rõ ràng thiết kế Guido van Rossum Thiết kế bắt đầu vào cuối năm 1980 phát hành lần vào tháng năm 1991 Đến cộng đồng người sử dụng ngơn ngữ đông, so sánh từ bảng xếp hạng ngơn ngữ năm 2018 Python leo lên vị trí số bảng xếp hạng ngơn ngữ lập trình phổ biến 3.1.2      Đặc điểm Python Cú pháp tường minh, dễ đọc Các khả tự xét mạnh mẽ Hướng đối tượng trực giác Cách thể tự nhiên mã thủ tục Hồn tồn mơ-đun hóa, hỗ trợ gói theo cấp bậc 10 Xử lý lỗi dựa theo ngoại lệ Kiểu liệu động mức cao Các thư viện chuẩn mơ-đun ngồi bao qt việc Phần mở rộng mô-đun dễ dàng viết C, C++ Có thể nhúng ứng dụng giao diện kịch (scripting interface)  Python mạnh mẽ thực nhanh Tổng quan OpenCV      3.2 3.2.1 OpenCV ? OpenCV (Open Computer Vision) thư viện mã nguồn mở hàng đầu cho xử lý thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết C/C++, có tốc độ tính tốn nhanh, sử dụng với ứng dụng liên quan đến thời gian thực Opencv có interface cho C/C++, Python Java hỗ trợ cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng 47 nghìn người dùng số lượng download vượt triệu lần 3.2.2 Ứng dụng Opencv có 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 11 3.3 Lập trình giao diện Python với PyQt5 Qt Designer 3.3.1 Qt Designer ? Qt Designer cơng cụ để nhanh chóng xây dựng giao diện người dùng đồ họa với widget từ khung Qt GUI Nó cung cấp cho bạn giao diện kéo thả đơn giản để bố trí thành phần nút, trường văn bản, hộp tổ hợp Đây ảnh chụp hình Qt Designer Windows: 3.3.2 PyQt5 ?  Qt Application framework đa tảng viết ngôn ngữ C++ , dùng để phát triển ứng dụng desktop, hệ thống nhúng mobile Hỗ trợ cho platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS số platform khác PyQt Python interface Qt, kết hợp ngôn ngữ lập trình Python thư viện Qt, thư viện bao gồm thành phần giao diện điều khiển (widgets , graphical control elements)  PyQt API bao gồm module bao gồm số lượng lớn với classes functions hỗ trợ cho việc thiết kế giao diện giao tiếp với người dùng phần mềm chức Hỗ trợ với Python 2.x 3.x  Các class PyQt5 chia thành module, bao gồm: + QtCore : module bao gồm phần lõi khơng thuộc chức GUI, ví dụ dùng để làm việc với thời gian, file thư mục, loại liệu, 12 streams, URLs, mime type, threads processes + QtGui : bao gồm class dùng cho việc lập trình giao diện (windowing system integration), event handling, 2D graphics, basic imaging, fonts text + QtWidgets : bao gồm class cho widget, ví dụ : button, hộp thoại, … sử dụng để tạo nên giao diện người dùng + QtMultimedia : thư viện cho việc sử dụng âm thanh, hình ảnh, camera, … + QtBluetooth : bao gồm class giúp tìm kiếm kết nối với thiết bị có giao tiếp với phần mềm + QtNetwork : bao gồm class dùng cho việc lập trình mạng, hỗ trợ lập trình TCP/IP UDP client , server hỗ trợ việc lập trình mạng + QtPositioning : bao gồm class giúp việc hỗ trợ xác định vị + Enginio : module giúp client truy cập Cloud Services Qt + QtWebSockets : cung cấp công cụ cho WebSocket protocol + QtWebKit : cung cấp class dùng cho làm việc với trình duyệt Web , dựa thư viện WebKit2 + QtWebKitWidgets : widget cho WebKit + QtXml : class dùng cho làm việc với XML file + QtSvg : dùng cho hiển thị thành phần SVG file + QtSql : cung cấp class dùng cho việc làm việc với liệu + QtTest : cung cấp công cụ cho phép test đơn vị ứng dụng với PyQt5 13 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 thuộc ngữ chung để gọi chương trình với giao diện cửa sổ  Sau tính tốn xây dựng tính GUI ta giao diện GUI tương tác với người dùng sau : 14  Bằng cách kéo thả đối tượng Button, text box, group box, check box… ta giao diện  Sau tạo xong giao diện, phần mềm xuất cho ta file “design.ui”.Nhiệm vụ ta chuyển đổi file có “.ui” sang file có “.py” để nhúng code xử lý qt mã vạch Sau câu lệnh chuyển đổi terminal: Pyuic5-x design.ui -o design.py FILE_NAME: Là tên file code pyuic5 cài đặt với PyQt5 công cụ chuyển file giao diện *.ui sang *.py render giao diện 15 4.2 Quá trình nhận dạng mã vạch Trong trình nghiên cứu phân tích ưu nhược điểm loại thuật toán đọc mã vạch khác nhau, ta thấy thuật tốn DBR có chức đọc mã vạch ướng dụng đa tảng Các định dạng mã vạch hỗ trợ bao gồm QR Code, Linear(1D), PDF 417, DataMatrix … Các ưu điểm 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 đọc mã vạch chất lượng  Tích hợp xử lý hình ảnh đa Lưu đồ thuật tốn thuật toán đọc mã vạch DBR: 16 4.3 Một số hàm xử lý mã vạch  Hàm đọc mã vạch từ hình ảnh đơn tệp hình ảnh def decode_file(self, filename): self. init_params() #Lấy thiết lập lưu vào đối tượng settings settings = self._reader.get_runtime_settings() #Cài đặt kết hiển thị hình ảnh gốc settings.intermediate_result_types = EnumIntermediateResultType.IRT_ORIGINAL_IMAGE #Chỉ định lưu kết nhớ 17 settings.intermediate_result_saving_mode = EnumIntermediateResultSavingMode.IRSM_MEMORY #Cập nhật cài đặt tại, có lỗi 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ả kết 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 thuộc tính ả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 = frame = np.ndarray((height, width, channel), np.uint8, buffer, 0, (stride, channel, 1)) #trả kết hình ảnh 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 đối tượng nhận dạng mã QR reader = BarcodeReader() # Lấy thiết lập lưu vào đối tượng settings settings = reader.get_runtime_settings() # Cập nhật cài đặt 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, try: 18 #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 trả kết dạng vă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ả kết 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ý trả kết self.barcodeScanning.start() 19 CHƯƠNG 5: KẾT QUẢ THỰC HIỆN 5.1 Kết nhận diện từ ảnh 20 5.2 Kết nhận diện từ video 21 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” em xử lí nhận dạng giải mã mã vạch từ hình ảnh video đầu vào - Đối với thu nhận ảnh từ camera độ xác cịn chưa cao bị tác động yếu tố môi trường ánh sáng , bụi bẩn hay chất lượng camera… - Để giải khó khăn đề tài, người thực xin đề xuất 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 độ xác ảnh chụp ( xác định 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 độ xác chương trình + Tìm hiểu thêm nhiều kiến thức để cải thiện đề tài cách tối ưu tốt hơn… 22 ... trình nhận dạng mã vạch ứng dụng cơng nghệ xử lý ảnh, 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. .. 5.1 Kết nhận diện từ ảnh 20 5.2 Kết nhận diện từ video 21 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” em xử lí nhận dạng giải mã mã vạch từ hình ảnh video... đọ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 nghiên cứu mã vạch, em tìm hiểu lý thuyết xử lý ảnh, chủ yếu thuật toán tăng cường chất lượng ảnh để Camera nhận dạng

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 Xem tại trang 8 của tài liệu.
 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 Xem tại trang 18 của tài liệu.
 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): Xem tại trang 19 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan