Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh Nhận dạng mã vạch dùng xử lý ảnh
TỔNG QUAN
Tổng quan
Mã vạch là một phương pháp quản lý hiệu quả trong lưu trữ và truyền tải thông tin, sử dụng các vạch màu đen và trắng để biểu diễn ký tự và ký số Sự thay đổi độ rộng của các vạch này cho phép máy đọc nhận diện được thông tin, trong đó vạch đen tương ứng với mức logic 1 và vạch trắng với mức logic 0 Tùy thuộc vào sự kết hợp và quy tắc mã hóa của các vạch, ta có thể tạo ra nhiều loại ký tự, ký số và các dạng mã vạch khác nhau.
Phương pháp lưu trữ và truyền đạt thông tin qua mã vạch giúp nhà sản xuất, người tiêu dùng và cơ quan chức năng dễ dàng kiểm tra và quản lý nguồn gốc sản phẩm Sự phổ biến của mã vạch đặt ra yêu cầu cần có công cụ để đọc và xuất thông tin từ mã vạch Tuy nhiên, do mã vạch nằm bên ngoài sản phẩm, chúng dễ bị ảnh hưởng bởi các yếu tố bên ngoài trong quá trình lưu thông, điều này có thể làm giảm khả năng nhận dạng và truy xuất thông tin của máy đọc mã vạch.
Hiện nay, thị trường đang đối mặt với tình trạng hàng gian, hàng giả gia tăng cùng với sự phát triển của các sản phẩm vì lợi ích kinh tế Mặc dù đã có sự quản lý từ các cơ quan chức năng như hiệp hội bảo vệ người tiêu dùng và quản lý thị trường, người tiêu dùng cần phải chủ động xác định nguồn gốc xuất xứ của sản phẩm Việc sử dụng mã vạch để kiểm tra thông tin sản phẩm là một giải pháp cần thiết nhằm bảo vệ quyền lợi của bản thân và cộng đồng.
Để giải quyết vấn đề về nguồn gốc xuất xứ hàng hóa, tác giả đã nghiên cứu mã vạch và thực hiện đề tài “Nhận dạng mã vạch dùng xử lý ảnh” Mục tiêu của nghiên cứu là xác định thông tin liên quan đến nguồn gốc sản phẩm thông qua việc phân tích mã vạch.
Tình hình nghiên cứu trong và ngoài nước
Sự phát triển của các ngành khoa học, đặc biệt là công nghệ cao như điều khiển tự động, an ninh và y tế, đòi hỏi độ chính xác cao, đã làm nổi bật vai trò quan trọng của phần mềm xử lý ảnh trong phân tích và nhận dạng Nhiều nghiên cứu khoa học về xử lý ảnh đã được công bố, và tác giả đã tham khảo một số nghiên cứu liên quan để xây dựng đề tài, từ đó phát triển ý tưởng và phương hướng nghiên cứu.
1.2.1 Tình hình nghiên cứu trong nước
Vào năm 2004, nhóm tác giả Âu Dương Đạt và Lê Thành Nguyên tại trường Đại học Khoa học Tự nhiên đã phát triển ứng dụng "Quản lý phòng máy bằng mã vạch" nhằm mục đích quản lý sinh viên hiệu quả.
Năm 2012, nhóm tác giả Vũ Thành An và Nguyễn Thanh Hải đã giới thiệu một phương pháp xử lý ảnh mới, kết hợp giữa biểu đồ Histogram và giá trị entropy trong ảnh y sinh để phát triển thuật toán tách điểm ảnh Thuật toán này sau đó được áp dụng cùng với biến đổi Wavelet nhằm nâng cao chất lượng của ảnh tách và ảnh gốc.
Năm 2014, nhóm tác giả Đoàn Hòa Minh và Lưu Minh Thái từ Trường Đại học Cần Thơ đã tiến hành nghiên cứu về mã vạch với đề tài “Quét mã vạch trên thẻ bằng điện thoại di động và ứng dụng trong điểm danh”, và kết quả nghiên cứu đã được công bố trên tạp chí khoa học của trường.
Phân đoạn tự động và bán tự động một đối tượng là bước tiền xử lý quan trọng trong nhiều vấn đề, đặc biệt trong y học Nghiên cứu "Phân đoạn ảnh CT/MRI để làm rõ khối u" năm 2016 của nhóm tác giả Nguyễn Thị Nhật Quỳnh và Nguyễn Thanh Hải đã áp dụng thành công thuật toán phân đoạn tự động và bán tự động để xác định rõ ràng các khối u, góp phần nâng cao độ chính xác trong chẩn đoán.
Nhóm tác giả Phạm Ngọc Hương Trà và Nguyễn Thanh Hải đã thực hiện nghiên cứu về tiền xử lý ảnh nhằm tăng cường khả năng chẩn đoán tiền ung thư Họ đã trình bày một phương pháp phân vùng tự động khối u não bằng thuật toán phân ngưỡng Otsu, kết hợp với phân đoạn dựa trên đặc trưng của ảnh y sinh để thu được hình ảnh khối u não rõ ràng vào năm 2016.
1.2.2 Tình hình nghiên cứu nước ngoài
Research on 1D barcode recognition has been conducted internationally The 2013 paper "Robust Angle Invariant 1D Barcode Detection" by Alessandro Zamberletti, Ignazio Gallo, and Simone Albertini utilized Hough Transform for recognizing 1D barcodes at various angles, achieving a success rate of 84% Additionally, another paper titled "Barcode Recognition System" also focuses on barcode identification.
2013 của tác giả N M Z Hashim, N A Ibrahim, N M Sadd, F Sakaguchi và Z Zakaria sử dụng phần mềm Matlab nhận dạng được 3 loại mã vạch EAN 13, Code 39 và Code 128 [7]
In 2016, the article "Robust Algorithm for Developing Barcode Recognition System using Webcam" by authors Sampada S Upasani, Adarsh N Khandate, Ankita U Nikhare, Rupali A Mange, and R V Tomekar focused on identifying and extracting the area containing barcodes for subsequent recognition.
Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu của chúng tôi là nhận diện mã vạch EAN_13 để cung cấp thông tin chính xác về nguồn gốc sản phẩm, bao gồm khả năng nhận dạng các mã vạch không nằm ngang với góc lệch nhỏ hơn 90 độ, mã vạch bị mờ, và khôi phục thông tin từ mã vạch bị hư hỏng Điều này nhằm từng bước tự động hóa quy trình quản lý sản phẩm, giảm thiểu sức lao động của con người mà vẫn đảm bảo hiệu quả công việc.
Trình bày tổng quan về mã vạch, các phương pháp biến đổi ảnh được thực hiện trong luận văn
Tìm góc nghiêng của mã vạch đối với những mã vạch nằm nghiêng theo phương pháp Radon và xoay mã vạch về phương ngang theo góc nghiêng tìm được
Xác định vùng ảnh có chứa mã vạch và tách lấy mã vạch ra khỏi ảnh gốc
Xử lý nâng cao chất lượng ảnh bằng bộ lọc trung bình kết hợp tăng cường ảnh bằng histogram
Xây dựng thuật toán phân vùng ảnh bằng phương pháp ngưỡng tự động dùng thuật toán Otsu
Xây dựng thuật toán khôi phục ảnh mã vạch bị đứt nét
Xây dựng thuật toán nhận dạng mã mã vạch để thu nhận thông tin về nguồn gốc xuất xứ của sản phẩm
Viết chương trình nhận dạng mã vạch trên phần mềm Matlab 2018a
Kết luận, đánh giá và phân tích kết quả đạt được.
Phương pháp và đối tượng nghiên cứu
Phương pháp phân tích: tìm hiểu phân tích và áp dụng các phương pháp xử lý ảnh vào ứng dụng nhận dạng mã vạch
Phương pháp tham khảo tài liệu là quá trình thu thập thông tin từ các tài liệu, sách báo điện tử liên quan đến đề tài nghiên cứu, nhằm tạo ra cơ sở dữ liệu phục vụ cho mục tiêu nghiên cứu Những dữ liệu này không chỉ hỗ trợ xây dựng cơ sở lý thuyết mà còn góp phần vào việc phát triển ứng dụng hiệu quả.
Phương pháp thực nghiệm được áp dụng để kiểm chứng kết quả nghiên cứu ngoài khảo sát lý thuyết Trong đề tài này, hiệu suất kết quả thực nghiệm được khảo sát và đánh giá thông qua phần mềm Matlab R2018a.
1.4.2 Đối tượng nghiên cứu Đề tài nghiên cứu nhận dạng và xử lý mã vạch EAN_13 dạng 1D với tập dữ liệu gồm 260 ảnh có chứa mã vạch trong đó có 50 ảnh thẳng, 50 ảnh nghiêng có các góc nghiêng khác, 50 ảnh nghiêng cùng 1 mã vạch có góc nghiêng nhỏ hơn 90 0 , 60 ảnh cùng một mã vạch có kích thước mã vạch lần lượt là
1 so với khung ảnh, 25 ảnh mã vạch thẳng bị đứt nét, 25 ảnh mã vạch nghiêng bị đứt nét được chụp bằng máy ảnh.
Bố cục của luận văn
Với các yêu cầu và mục tiêu đề ra, thông qua đó đề tài được xây dựng bao gồm các chương sau:
Chương 1 Tổng quan Trình bày khái quát về tình hình nghiên cứu và ứng dụng của mã vạch, từ đó đề cập đến mục đích của đề tài
Chương 2 Cơ sở lý thuyết Trình bày khái quát về mã vạch, những vấn đề cơ bản về xử lý ảnh, các phương pháp xử lý ảnh
Chương 3 Nhận dạng mã vạch: Trình bày quá trình xử lý và nhận dạng, trong đó từng bước cụ thể sẽ được xử lý và hiển thị kết quả
Chương 4 Kết quả và thảo luận: Trình bày các kết quả đạt được và thảo luận các vấn đề liên quan
Chương 5 Kết luận và hướng phát triển: Tổng kết lại kết quả đạt được và hướng phát triển cho tương lai
CƠ SỞ LÝ THUYẾT
Tổng quan về mã vạch
2.1.1 Giới thiệu Ý tưởng về mã vạch được phát triển bởi Norman Joseph Woodland và Bernard Silver Năm 1984 khi đang là sinh viên ở trường Đại Học tổng hợp Drexel, họ đã phát triển ý tưởng này sau khi được biết mong muốn của một vị chủ tịch của một công ty buôn bán đồ ăn yêu cầu nhân viên quản lý là làm sao để có thể tự động kiểm tra toàn bộ quy trình [9]
Mã vạch có nhiều loại khác nhau, được phân loại dựa trên dung lượng và dạng thông tin như ký tự hay ký số Các loại mã vạch phổ biến trên thị trường bao gồm UPC, EAN, Code 39, Codabar và Code 128, phù hợp với từng ngành nghề và lĩnh vực sử dụng.
Bảng 2.1: Mô tả các dạng mã vạch được sử dung trong các ngành nghề
Hình dạng Lĩnh vực Lý do
- Công nghệ thực phẩm, các nhà buôn bán lẽ
- Sử dụng cho các nước Bắc
- Cần mã số, không cần mã chữ, đáng tin cậy
- Cần mã kiểm tra lỗi
- Như là UPC, được sử dụng cho các nước không thuộc Bắc
- Cần mã số, không cần mã chữ, đáng tin cậy
- Cần mã kiểm tra lỗi
- Cần mã hóa cả số lẫn chữ, an toàn, không cần mã kiểm tra
- Cần dung lượng 128 ký tự
2.1.3 Các phương pháp đọc mã vạch
Hiện nay, có nhiều thiết bị nhận dạng mã vạch với các phương pháp khác nhau, tất cả đều có khả năng nhận diện mã vạch Tuy nhiên, không có phương pháp nào được coi là tốt nhất, vì mỗi phương pháp đều có những ưu điểm và nhược điểm riêng Các phương pháp này cũng luôn được nghiên cứu và phát triển để cải thiện hiệu quả nhận dạng.
Máy quét CCD được thiết kế với một dãy đèn LED, tạo ra vệt sáng thẳng theo chiều ngang để quét qua bề mặt mã vạch Ánh sáng phản xạ từ mã vạch được thu nhận bởi ống kính CCD, giúp chuyển đổi tín hiệu ánh sáng thành tín hiệu số Một trong những ưu điểm nổi bật của máy quét CCD là giá thành rẻ, phù hợp với nhiều nhu cầu sử dụng.
Nhược điểm: Loại này chỉ quét được mã vạch trên bề mặt phẳng với cự li gần, không quét được mã vạch theo chiều cong
Máy quét Laser hoạt động bằng cách sử dụng một mắt đọc phát ra tia laser đỏ và kính phản xạ để tạo ra vệt sáng quét qua bề mặt mã vạch, không cần tròng thu ánh sáng Ưu điểm của thiết bị này bao gồm độ nhạy cao khi quét, khả năng đọc mã vạch với độ chính xác cao, khả năng quét trên bề mặt cong và khoảng cách quét xa.
Nhược điểm: Mắt đọc không bền, sau một thời gian có thể bị yếu đi do hiện tượng “kén mã vạch”
Đọc mã vạch bằng phần mềm Camera
Việc sử dụng camera trong các ứng dụng trên điện thoại thông minh ngày càng phổ biến, đặc biệt trong việc xử lý nhiều mã vạch cùng lúc Camera có độ phân giải cao và khả năng lấy nét tự động giúp thu nhận hình ảnh đầu vào chính xác, từ đó phần mềm có thể xử lý hiệu quả Ưu điểm của việc này là mang lại trải nghiệm trực quan cho người dùng khi đọc mã vạch, đồng thời cho phép xử lý nhiều mã vạch một cách nhanh chóng Hơn nữa, tính di động cao của các thiết bị nhỏ gọn giúp việc ứng dụng camera trở nên thuận tiện hơn.
Nhược điểm của công nghệ này bao gồm sự ảnh hưởng từ ánh sáng môi trường, yêu cầu về độ phân giải và khả năng lấy nét của camera cần phải cao và phù hợp Thêm vào đó, khả năng đọc mã vạch trên bề mặt cong và ở khoảng cách gần hoặc xa cũng là một thách thức.
Mã vạch EAN-13
2.2.1 Cấu trúc thông tin của mã vạch EAN 13
Mã vạch EAN 13 bao gồm 13 chữ số thập phân, được chia thành bốn phần chính, nhằm lưu trữ và truyền đạt thông tin sản phẩm đến người tiêu dùng, nhà phân phối và nhà quản lý Thông tin này bao gồm nơi sản xuất, nhà sản xuất và mã sản phẩm.
Mã quốc gia là ba chữ số đầu tiên của EAN-13 dùng để xác định thành viên của tổ chức GS1 mà nhà sản xuất đã tham gia
Mã nhà sản xuất là mã độc nhất do cơ quan GS1 cấp cho từng nhà sản xuất, giúp xác định nguồn gốc sản phẩm Mọi sản phẩm từ một công ty sẽ sử dụng chung mã này, đảm bảo tính nhất quán và dễ dàng nhận diện.
Mã sản phẩm được quy định bởi nhà sản xuất và nằm ngay sau mã nhà sản xuất Tổng chiều dài của mã nhà sản xuất và mã sản phẩm phải đạt 9 hoặc 10 chữ số, tùy thuộc vào độ dài của mã quốc gia (2-3 chữ số).
Số kiểm tra là một chữ số bổ sung dùng để xác minh tính chính xác của mã vạch đã được quét Nó được tính toán theo quy tắc modulo 10, trong đó trọng số trong phép tính kiểm tra lần lượt là 3 và 1.
Hình 2.1: Cấu trúc thông tin mã vạch EAN_13
2.2.2 Quy tắc mã hóa EAN_13 dạng mã nhị phân Để mã hóa EAN_13 gồm mười ba chữ số thì các chữ số được chia thành 3 nhóm: nhóm một là chữ số đầu tiên, nhóm thứ hai là sáu chữ số tiếp theo, nhóm thứ ba là sáu chữ số cuối Nhóm thứ hai được mã hóa bằng cách sử dụng một mẫu mà mỗi chữ số có hai cách để mã hóa, một mang tính chẵn “ký hiệu là chữ G” và một mang tính lẻ “ký hiệu bằng chữ L” Nhóm thứ ba sáu chữ số cuối được mã hóa bằng một mẫu mà mỗi chữ số chỉ có duy nhất một cách để mã hóa “ký hiệu bằng chữ R”
Nhóm một chữ số đầu tiên trong mã vạch EAN_13 không được mã hóa trực tiếp bằng các vạch màu đen hoặc trắng, mà được mã hóa gián tiếp dựa vào tính chẵn hay lẻ của sáu chữ số trong nhóm thứ hai, theo quy định chung của mã vạch EAN_13.
Hình 2.2: Các nhóm chữ số trong mã vạch EAN-13
Bảng 2.2: Quy tắc mã hóa chữ số đầu tiên của mã vạch EAN-13
Hình 2.3: Tính chẳn, lẻ của mã vạch EAN_13
Bảng 2.3: Quy luật mã hóa số thập phân tương ứng mã nhị phân EAN 13
Trong mã R, chuỗi nhị phân bao gồm các bit bổ sung (toán tử logic phủ định) từ chuỗi nhị phân trong mã L Đồng thời, chuỗi nhị phân trong mã G được tạo ra bằng cách đảo ngược thứ tự các bit của chuỗi nhị phân trong mã R.
Theo quy tắc mã hóa và giải mã trong mã vạch EAN-13, mỗi chữ số thập phân được chuyển đổi thành mã nhị phân dựa trên vị trí của nó trong mã Các chữ số được chia thành hai nhóm: nhóm sáu chữ số đầu và nhóm sáu chữ số sau (mã R) Trong nhóm đầu tiên, mã hóa sẽ tuân theo hai quy tắc: mã G cho các chữ số mang tính chẵn và mã L cho các chữ số mang tính lẻ.
Hình 2.4: Mã nhị phân của EAN_13 (mã L)
Hình 2.5: Mã nhị phân của EAN_13 (mã G)
Hình 2.6: Mã nhị phân của EAN_13 (mã R)
2.2.3 Quy tắc mã hóa EAN_13 dạng mã vạch
Mã EAN-13 bao gồm 13 chữ số được phân chia thành ba nhóm: nhóm đầu tiên chứa một chữ số, nhóm thứ hai gồm sáu chữ số tiếp theo, và nhóm cuối cùng với sáu chữ số Mã vạch tương ứng với EAN-13 có 95 vạch được sắp xếp đều nhau.
Ba vạch đầu tiên (hai vạch đen và một vạch trắng) để mã hóa điểm bắt đầu hay còn được xem là điểm bắt đầu
Bốn mươi hai vạch từ vạch thứ tư đến vạch thứ bốn mươi lăm được sử dụng để mã hóa sáu chữ số từ chữ số thứ hai đến chữ số thứ bảy trong mã EAN 13 Các chữ số này bao gồm cả số chẵn và số lẻ, và tập hợp chúng sẽ giúp mã hóa chữ số đầu tiên của mã EAN 13 một cách gián tiếp.
Năm vạch tiếp theo, từ vạch bốn mươi sáu đến vạch năm mươi, bao gồm hai vạch đen và ba vạch trắng ở giữa mã vạch, được sử dụng để mã hóa điểm trung tâm của mã vạch.
Bốn mươi hai vạch từ năm mươi mốt đến chín mươi hai được sử dụng để mã hóa sáu chữ số cuối bên phải, từ chữ số thứ tám đến chữ số thứ mười ba, trong đó chữ số thứ mười ba đóng vai trò là chữ số kiểm tra.
Ba vạch cuối từ vạch chín mươi ba đến vạch chín mươi lăm (hai vạch đen và một vạch trắng) để mã hóa điểm kết thúc
Hình 2.7: Mô tả EAN_13 dạng mã vạch
Mã vạch EAN-13 bao gồm các vạch màu đen (1) và vạch màu trắng (0), với tối đa bốn vạch màu đen hoặc trắng có thể được nhóm lại để tạo thành vạch rộng Điểm bắt đầu và kết thúc của mã vạch được mã hóa là 101, trong khi điểm đánh dấu trung tâm được mã hóa là 01010.
Các chữ số trong nhóm sáu số bên trái được mã hóa để luôn bắt đầu bằng một vạch màu trắng và kết thúc bằng một vạch màu đen Ngược lại, các chữ số trong nhóm bên phải được mã hóa để bắt đầu bằng một vạch màu đen và kết thúc bằng một vạch màu trắng.
Cuối cùng, sự kết hợp của các vạch màu đen và vạch màu trắng có độ rộng thay đổi mà mã hóa được mã vạch EAN-13 [10].
Những khái niệm về ảnh số
2.3.1 Điểm ảnh và ảnh Điểm ảnh: là một phần tử của một ảnh Một điểm ảnh tại tọa độ (x,y) sẽ có cường độ xám hoặc màu nhất định mà 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 Ảnh: Tập hợp tất cả các điểm ảnh được gọi là một ảnh, ảnh được xem là một ma trận các điểm ảnh có dung lượng là M×N với M là số điểm ảnh theo hàng, N là điểm ảnh theo cột và được biểu diễn dưới dạng ma trận như sau:
Mật độ điểm ảnh là yếu tố quyết định độ phân giải của một bức ảnh Độ phân giải cao hơn đồng nghĩa với việc bức ảnh chứa nhiều điểm ảnh hơn, mang lại chi tiết và rõ nét hơn cho nội dung mà ảnh thể hiện Do đó, với cùng một kích thước vật lý, bức ảnh sẽ trở nên sắc nét và chi tiết hơn khi có độ phân giải cao.
Một bức ảnh màu được cấu thành từ nhiều pixel, trong đó mỗi pixel được biểu diễn bởi ba giá trị tương ứng với các kênh màu đỏ (Red), xanh lá (Green) và xanh dương (Blue) tại một vị trí cụ thể Các kênh màu này trong không gian màu RGB là những màu cơ bản, cho phép tạo ra nhiều màu sắc khác nhau thông qua quá trình pha trộn.
Việc tính toán dung lượng của ảnh màu được biểu diễn như sau:
Crgb là dung lượng của ảnh (tính theo byte) m là kích thức chiều ngang của ảnh n là kích thước chiều dọc của ảnh m×n là tổng số pixel của ảnh
Ảnh đen trắng, hay còn gọi là ảnh xám, là một ma trận điểm ảnh, trong đó mỗi điểm ảnh được biểu diễn bằng một giá trị tương ứng với mức xám Các mức xám này nằm trong khoảng từ màu đen đến màu trắng, với giá trị từ 0 đến 255.
2.3.5 Ảnh nhị phân Ảnh nhị phân là ảnh chỉ sử dụng hai trạng thái 0 hoặc 1 để biểu diễn cho một pixcel, trong đó trạng thái 0 tương ứng là màu đen, trạng thái 1 tương ứng là màu trắng Do đó ảnh nhị phân thường không được sử dụng trong thực tế nhưng ảnh nhị phân được ứng dụng nhiều trong xử lý ảnh.
Lọc ảnh
Lọc ảnh là bước quan trọng trong xử lý ảnh, giúp loại bỏ các thành phần không cần thiết và giữ lại những yếu tố chính Tùy theo mục đích và nhu cầu sử dụng, người dùng có thể lựa chọn bộ lọc phù hợp để đạt được kết quả mong muốn.
2.4.1 Lọc trong miền không gian
Lọc không gian tuyến tính cho một ảnh f kích thước M×N với mặt nạ lọc w có kích thước m×n
Một số bộ lọc được biểu diễn dưới dạng toán học
2.4.2 Lọc trong miền tần số
Phép biến đổi Fourier là công cụ phổ biến và dễ sử dụng trong nhiều ứng dụng xử lý trên miền tần số Một trong những ứng dụng quan trọng nhất của nó là lọc tín hiệu trong miền tần số, khi hình ảnh được xem như tín hiệu hai chiều với các thành phần tần số khác nhau Các bước thực hiện lọc trong miền tần số được trình bày rõ ràng trong hình 2.8.
Hình 2.8: Sơ đồ khối các bước thực hiện lọc ảnh trong miền tần số
Bộ lọc thông thấp lý tưởng (Ideal LowPass Filter – ILPF) có hàm truyền như sau:
D0 được xác định là một giá trị không âm, trong khi D(u,v) thể hiện khoảng cách từ điểm (u,v) đến trung tâm bộ lọc Các điểm có giá trị D(u,v) = D0 tạo thành quỹ đạo hình tròn, nhưng bộ lọc này không thực tiễn do ảnh hưởng của các yếu tố khách quan.
Bộ lọc thông cao được sử dụng để làm sắc nét hình ảnh bằng cách loại bỏ các thành phần tần số thấp thông qua biến đổi Fourier, khác với bộ lọc thông thấp làm mờ ảnh Để tạo ra bộ lọc thông cao từ bộ lọc thông thấp với hàm truyền Hlp(u,v), ta có thể áp dụng công thức đơn giản.
Dò biên
Dò biên là công cụ thiết yếu trong xử lý ảnh, giúp giảm đáng kể khối lượng dữ liệu bằng cách chỉ giữ lại thông tin quan trọng Phát hiện biên của vật thể là một phương pháp hiệu quả để xác định các vùng khác biệt trong ảnh, vì hệ thống thị giác của con người rất nhạy cảm với biên và sự thay đổi gradient.
2.5.1 Tách biên theo đạo hàm bậc 1
Có hai phương pháp chính để tách biên dựa trên đạo hàm bậc một: phương pháp đầu tiên là tính gradient của hai hướng vuông góc trong hình ảnh, trong khi phương pháp thứ hai sử dụng một tập hợp các đạo hàm có hướng.
Gradient biên của một ảnh G(j,k) được biểu diễn theo gradient hàng GR(j,k) và gradient cột GC(j,k) như trong hình Biên độ gradient trong không gian được cho bởi:
𝐺(𝑗, 𝑘) = [[𝐺 𝑅 (𝑗, 𝑘)] 2 + [𝐺 𝐶 (𝑗, 𝑘] 2 ] 1/2 (2.10) Hướng theo không gian của gradient ứng với trục ngang là:
Phương pháp đơn giản nhất để tính gradient trong ảnh rời rạc là tìm sự khác nhau giữa các pixel theo hàng và cột Gradient theo hàng là
Gradient đường chéo có thể tính bằng cách tìm sự khác nhau của các cặp đường chéo Đây là phép toán cơ bản của sai phân chéo Roberts
Tính theo biên độ ta có
Và theo căn bậc hai
𝐺 2 (𝑗, 𝑘) = 𝐹(𝑗, 𝑘 + 1) − 𝐹(𝑗 + 1, 𝑘) (2.17) Hướng của biên ứng với trục ngang
Mặc dù biên dốc xác định được đường biên của đối tượng nhưng phương pháp này cũng còn rất nhạy với sự thay đổi độ chói nhỏ trong ảnh [11]
2.5.2 Tách biên theo đạo hàm bậc 2
Phương pháp phát hiện biên sử dụng đạo hàm bậc hai dựa trên các dạng vi phân bậc hai nhằm làm nổi bật biên Một biên sẽ được đánh dấu khi có sự thay đổi không gian theo đạo hàm bậc hai, trong đó bao gồm các nghiên cứu về Laplace và đạo hàm bậc hai trực tiếp.
Biến đổi Laplace của một ảnh F(x,y) trong miền liên tục được định nghĩa
𝐺(𝑥, 𝑦) = −∇ 2 {𝐹(𝑥, 𝑦)} (2.19) Trong đó, toán tử Laplace là
Dạng Laplace 4 điểm này có thể biển diễn theo phép chập
Phương pháp Laplace 4 điểm được chuẩn hóa nhằm tạo ra độ lợi trung bình đơn vị cho các điểm ảnh có trọng số dương và âm trong ma trận 3×3 của các điểm ảnh liền kề Đáp ứng xung chuẩn hóa độ lợi Laplace được định nghĩa rõ ràng.
Bộ tách biên LOG (Laplacian of Gaussian Detector)
Trong đó, r² = x² + y² và σ đại diện cho độ lệch chuẩn Hàm này có tác dụng làm phẳng, và khi áp dụng lên ảnh, nó sẽ tạo hiệu ứng mờ Mức độ mờ của ảnh được xác định bởi giá trị của độ lệch chuẩn Laplace của hàm này cũng được đề cập.
Việc thực hiện LoG tạo hai hiệu ứng: làm phẳng ảnh và tính Laplace.
Biến đổi Radon
Biến đổi Radon của một bức ảnh là tổng hợp biến đổi Radon của từng pixel, cho phép chuyển đổi các ảnh trong không gian hai chiều với các đường thẳng thành miền Radon Mỗi đường thẳng trong bức ảnh tương ứng với một điểm trong miền Radon, tạo nên một cách tiếp cận hiệu quả để phân tích và xử lý ảnh.
Công thức toán học của biến đổi Radon
Phương trình này mô tả quá trình tính toán tích phân dọc theo đường thẳng s trên ảnh, trong đó ρ đại diện cho khoảng cách từ đường thẳng đến gốc tọa độ O, còn θ là góc lệch so với phương ngang Biến đổi Radon thực hiện việc tính toán tích phân đường hình chiếu của ma trận ảnh theo một hướng xác định, sử dụng các tia song song với các phương khác nhau bằng cách xoay hệ trục tọa độ quanh O với các giá trị θ khác nhau, với chiều rộng của các tia là 1 pixel.
Tăng cường ảnh
2.7.1 Mở rộng độ tương phản Độ tương phản biểu diễn sự thay đổi độ sáng so với nền Những ảnh có độ tương phản thấp là kết quả của quá trình chụp ảnh trong môi trường thiếu ánh sáng, hay chất lượng của thiết bị Mở rộng độ tương phản là quá trình làm tăng khoảng giá trị mức xám trong ảnh nhằm giúp ảnh hiển thị tốt hơn [12]
Cách biến đổi tuyến tính
Với α, β, γ xác định độ tương phản tương đối, L là số mức xám tối đa của một ảnh
2.7.2 Phương pháp cân bằng lược đồ xám
Hàm biến đổi mức xám s=T(r) với 0 ≤ r ≤ L -1 luôn tạo ra giá trị mức xám ngõ ra s tương ứng với mỗi giá trị mức xám ngõ vào r Giả sử hàm T(r) tăng đơn điệu trong khoảng 0 ≤ r ≤ L -1, ta có 0 ≤ T(r) ≤ L -1, từ đó suy ra rằng r = T -1 (s) với 0 ≤ s ≤ L -1 Đặt pr(r) và ps(s) là các hàm mật độ xác suất tương ứng; nếu biết pr(r) và T(r) cùng với T -1 (s) thỏa mãn các điều kiện trên, ta có công thức: dr r ds p s p s ( ) = r ( ).
Hàm chuyển đổi tổng quát được đưa ra có dạng
Từ phương trình trên ta suy ra được
Trong bài viết này, MN đại diện cho tổng số điểm ảnh, nk là số điểm ảnh có giá trị rk giống nhau, và L là số lượng mức xám có thể được biểu diễn Hàm chuyển đổi rời rạc được định nghĩa theo dạng sau:
Phân đoạn ảnh
Trong một bức ảnh, tồn tại nhiều thành phần với các thuộc tính và cường độ mức xám khác nhau Phân đoạn ảnh là quá trình chia tách bức ảnh thành các vùng có thuộc tính tương đồng.
2.8.1 Phương pháp phân đoạn theo biên độ chói
Là phương pháp phân đoạn ảnh dựa trên ngưỡng của độ chói hay các thành phần màu trong ảnh
Giả sử một ảnh f(x,y) đại diện cho một vật thể sáng trên nền tối, giá trị cường độ pixel của vật thể và nền được phân chia thành hai nhóm Một phương pháp để tách biệt vật thể khỏi nền là lựa chọn một ngưỡng T, nhằm phân chia hai nhóm này Do đó, bất kỳ điểm nào (x,y) thỏa mãn điều kiện f(x,y) ≥ T sẽ được xác định là điểm vật thể, trong khi các điểm còn lại sẽ thuộc về nền Từ đó, một ảnh được phân ngưỡng g(x,y) sẽ được định nghĩa.
Các điểm được gán nhãn 1 đại diện cho các vật thể, trong khi nhãn 0 chỉ định cho nền Phương pháp này sử dụng ngưỡng toàn cục, với giá trị ngưỡng T phụ thuộc vào mức xám.
2.8.2 Phương pháp phân đoạn theo vùng
Phương pháp phân đoạn theo vùng dựa trên việc xác định các điểm ảnh không thuộc về một đối tượng cụ thể và không chỉ dựa vào giá trị mức xám Chúng ta sử dụng các cách kết nối giữa các điểm ảnh để xác định xem những điểm ảnh nào có thể được nhóm lại trong cùng một vùng.
Phương pháp phân đoạn theo vùng là một kỹ thuật toán học hệ thống nhằm chia ảnh I thành n vùng khác nhau Trong đó, R đại diện cho vùng ảnh hiện tại, và quá trình phân đoạn ảnh thực chất là việc chia R thành các vùng nhỏ hơn, ký hiệu là R1, R2, ,Rn.
Ri là một vùng kết nối; i = 1, 2, , n
Ri Rj = với mọi i và j sao cho i ≠ j
P(Ri Rj) = FALSE cho bất kỳ vùng liền kề Ri và Rj, trong đó P(Ri) là tiền đề logic định nghĩa trên các điểm trong tập Ri Để phân đoạn hoàn tất, các điểm ảnh phải nằm trong một vùng và có tính kết nối dựa trên các tiêu chí nhất định Bên cạnh đó, các vùng phải không kết nối với nhau, và tính chất trong vùng phân đoạn phải được thỏa mãn, tức là P(Ri) TRUE nếu tất cả các điểm ảnh trong Ri có cùng mức xám Cuối cùng, các vùng liền kề cần phải khác nhau theo tiền đề P.
Phương pháp khôi phục mã vạch bị đứt nét
Một ảnh B(m,n) là ảnh mã vạch dạng nhị phân có kích thước m×n trong đó m là số hàng, n là số côt
Hình 2.10: Biểu diễn vạch số của mã vạch
Ảnh mã vạch A(m,n) có kích thước 7x9 là hình ảnh lý tưởng với các vạch màu trắng và đen được thể hiện rõ ràng, không bị hư hỏng hay đứt nét Hình ảnh này được biểu diễn dưới dạng ma trận như mô tả trong hình 2.12.
Hình 2.11: Ảnh mã vạch lý tưởng
Hình 2.12: Ma trận điểm ảnh tương ứng
Giả sử ảnh mã vạch A (m, n) bị ảnh hưởng bởi các yếu tố chủ quan hoặc khách quan, dẫn đến tình trạng các vạch màu đen và trắng bị lem, nhòe, hoặc đứt nét, như thể hiện trong hình 2.13 Hình ảnh này có dạng ma trận điểm ảnh tương ứng được mô tả trong hình 2.14.
Mã vạch bị đứt nét, như trong hình 2.13, có thể dẫn đến việc nhận dạng và giải mã không chính xác Để đảm bảo kết quả mong muốn, cần khôi phục ảnh mã vạch về trạng thái ban đầu, đồng thời đảm bảo nội dung thông tin của mã vạch được giữ nguyên.
Mã vạch được cấu thành từ các vạch đen và trắng, tương ứng với mã nhị phân gồm bit 0 và bit 1 Để khôi phục thông tin từ mã vạch, cần thực hiện theo các bước cụ thể.
So sánh tỷ lệ bit 0 và bit 1
NHẬN DẠNG MÃ VẠCH
Sơ đồ khối tổng quát nhận dạng mã vạch
Đề tài tập trung vào việc nhận dạng mã vạch từ hình ảnh chụp có chứa mã vạch với nhiều thách thức như mã vạch nằm ngang, ảnh bị mờ, chói do ánh sáng, và mã vạch nghiêng dưới 90 độ Ngoài ra, các mã vạch có kích thước khác nhau và có thể bị hư hỏng, đứt nét cũng được xem xét Phương pháp xử lý ảnh sẽ được áp dụng để xoay mã vạch nghiêng về phương ngang, tăng cường ảnh mờ, khôi phục ảnh bị đứt nét và giải mã thông tin đã được mã hóa trên hàng hóa Đề tài sẽ thực hiện nhận dạng và giải mã thông tin trên mã vạch EAN-13, với hệ thống nhận dạng mã vạch được xây dựng qua các bước cụ thể.
Hình 3.1: Sơ đồ khối các bước nhận dạng mã vạch.
Xây dựng tập dữ liệu
Tập dữ liệu ảnh trong nghiên cứu bao gồm các hình ảnh mã vạch chụp từ máy ảnh trong điều kiện tự nhiên, với mã vạch ở nhiều góc độ khác nhau, bao gồm thẳng và nghiêng với góc nhỏ hơn 90 độ Các mã vạch này có thể bị mờ hoặc đứt nét do ảnh hưởng của yếu tố bên ngoài như quá trình lưu thông, vận chuyển và điều kiện thời tiết.
Để đánh giá hiệu quả của hệ thống nhận dạng, tác giả đã xây dựng một tập dữ liệu gồm 260 ảnh mã vạch, bao gồm 50 ảnh nằm ngang, 50 ảnh nghiêng, 50 ảnh cùng một mã vạch với các góc nghiêng khác nhau, 60 ảnh với kích thước mã vạch đa dạng, 25 ảnh mã vạch thẳng bị đứt nét và 25 ảnh mã vạch nghiêng bị đứt nét cho quá trình thực nghiệm.
Bảng 3.1: Các dạng ảnh mã vạch nằm thẳng được sử dụng trong nhận dạng
Bảng 3.2: Các dạng mã vạch nằm nghiêng được sử dụng
Bảng 3.3: Mã vạch có kích thước khác nhau
Bảng 3.4: Ảnh mã vạch bị đứt nét được sử dụng trong nhận dạng.
Tiền xử lý
Tiền xử lý ảnh là bước quan trọng trong xử lý ảnh, ảnh hưởng trực tiếp đến chất lượng dữ liệu đầu vào cho hệ thống nhận dạng Chất lượng ảnh có thể bị tác động bởi nhiều yếu tố như thiết bị thu thập, điều kiện ánh sáng và con người Nếu không thực hiện tiền xử lý đúng cách, kết quả nhận dạng sẽ không đạt yêu cầu Do đó, việc tối ưu hóa quá trình tiền xử lý ảnh là rất cần thiết để nâng cao độ chính xác trong nhận dạng.
Tác giả đã xây dựng khối tiền xử lý ảnh trong luận văn nhận dạng mã vạch, bao gồm các bước như: thay đổi kích thước ảnh, chuyển đổi ảnh màu sang ảnh đơn sắc, lọc làm mịn ảnh bằng bộ lọc trung bình, áp dụng phương pháp Canny để dò biên ảnh, xác định góc nghiêng của mã vạch qua biến đổi Radon, xoay mã vạch về phương ngang, tách mã vạch khỏi ảnh góc, tăng cường ảnh, phân đoạn ảnh và khôi phục thông tin ảnh mã vạch gốc.
3.3.1 Sơ đồ khối tổng quát tiền xử lý nhận dạng mã vạch Đọc ảnh mã vạch Biến đổi kích thước ảnh Biến đổi ảnh đơn sắc
Xử lý mịn ảnh bằng bộ lọc trung bình
Dò biên theo phương pháp Canny Tìm góc nghiêng và xoay ảnh Tách mã vạch ra khỏi ảnh gốc
Tăng cường ảnh Phân đoạn ảnh theo pp Otsu Khôi phục thông tin ảnh gốc
Hình 3.2: Sơ đồ khối các bước tiền xử lý ảnh
3.3.2 Thay đổi kích thước ảnh
Để tối ưu hóa quy trình nhận dạng hình ảnh, việc định dạng lại kích thước ảnh đầu vào là rất cần thiết, đặc biệt khi ảnh có dung lượng và kích thước lớn Nếu không thực hiện điều này, hệ thống sẽ tiêu tốn nhiều tài nguyên và thời gian để xử lý Do đó, tác giả đã thay đổi kích thước ảnh về dạng mặc định chung là (480×640) mà vẫn đảm bảo không làm mất đi các đặc trưng quan trọng của ảnh, giúp nâng cao hiệu quả xử lý và rút ngắn thời gian thu được kết quả.
Hình 3.3: Ảnh gốc có kích thước
Hình 3.4: Ảnh được thay đổi về kích thước (480×640)
Hình 3.5: Ảnh gốc có kích thước
Hình 3.6: Ảnh được thay đổi về kích thước (480×640)
Hình 3.7: Ảnh gốc có kích thước
Hình 3.8: Ảnh được thay đổi về kích thước (480×640)
Trong không gian màu, mỗi điểm ảnh được tạo thành từ sự kết hợp của ba màu cơ bản: Đỏ (Red), Xanh lá (Green) và Xanh dương (Blue) Cường độ sáng của ba màu này quyết định màu sắc mà chúng ta nhìn thấy Để chuyển đổi một điểm ảnh màu RGB (Imàu) sang ảnh xám (Ixám), ta sử dụng một công thức cụ thể.
Các trọng số α, β, γ được thiết lập tương ứng với các màu đỏ, màu xanh lá, màu xanh dương Theo tiêu chuẩn NTSC chúng ta có các trọng số
Hình 3.9: Ảnh màu có kích thước
Hình 3.10: Ảnh xám có kích thước
Hình 3.11: Ảnh màu có kích thước
Hình 3.12: Ảnh xám có kích thước
3.3.4 Xử lý làm mịn ảnh
Nhiễu là thành phần không mong muốn trong xử lý ảnh, làm giảm độ chính xác của hệ thống Để giảm thiểu nhiễu, các phương pháp lọc ảnh với mặt nạ lọc khác nhau được sử dụng, tùy thuộc vào loại nhiễu và nhu cầu Lọc trung bình là một phương pháp trong đó giá trị mỗi điểm ảnh sau khi lọc là trung bình của các điểm ảnh lân cận, giúp làm mượt ảnh nhưng cũng làm mờ biên ảnh Do đó, việc chọn kích thước cửa sổ lọc phù hợp là cần thiết để giảm nhiễu mà không ảnh hưởng nhiều đến biên ảnh Tác giả đã chọn bộ lọc trung bình 3×3 để đạt được sự cân bằng giữa việc giảm nhiễu và bảo toàn độ sắc nét của biên ảnh.
Lọc trung bình với f(x,y) là ảnh đầu vào và K là số pixcel trong cửa sổ lọc w(x,y) có kích thước N×N được xác định bởi biểu thức sau:
Hình 3.13: Ảnh trước khi qua bộ lọc trung bình
Hình 3.14: Ảnh sau khi qua bộ lọc trung bình
Hình 3.15: Ảnh xám trước khi qua bộ lọc trung bình
Hình 3.16: Ảnh sau khi qua bộ lọc trung bình
3.3.5 Dò biên theo phương pháp Canny
Một điểm ảnh được coi là biên khi có sự thay đổi đột ngột về cường độ mức xám Tập hợp các điểm ảnh biên tạo thành đường biên ảnh, đây là yếu tố quan trọng trong xử lý ảnh Các phương pháp phân đoạn ảnh chủ yếu dựa vào đường biên để xác định các đối tượng trong ảnh Có nhiều phương pháp dò biên như Sobel, Prewitt, Roberts và Canny, và việc lựa chọn phương pháp phù hợp phụ thuộc vào đối tượng xử lý và mục đích sử dụng cụ thể.
Phương pháp dò biên Canny nổi bật với khả năng tối đa hóa tín hiệu trên nền nhiễu, giúp phát hiện biên chính xác hơn Phương pháp này giảm thiểu các điểm không cần thiết trên đường biên, tạo ra đường biên mỏng và rõ ràng Các bước thực hiện dò biên Canny bao gồm nhiều quy trình chi tiết nhằm nâng cao hiệu quả phát hiện biên.
Dùng bộ lọc Gauss để thu được ảnh mịn hơn
Tính toán Gradient cục bộ của biên độ và hướng được tính
Sử dụng phương pháp nonmaximal suppression để xác định điểm ảnh có biên độ lớn nhất Các điểm ảnh đỉnh được phân chia thành hai ngưỡng T1 và T2, với T1 < T2 Những điểm ảnh có giá trị lớn hơn T2 được gọi là ‘strong’, trong khi các điểm ảnh nằm trong khoảng T1 và T2 được gọi là ‘weak’.
Liên kết các điểm’ weak’ có 8 kết nối đến điểm ‘strong’ là đường biên ảnh
Phương pháp dò biên Canny nổi bật với khả năng phát hiện các biên yếu và ít bị ảnh hưởng bởi nhiễu Tuy nhiên, nếu ngưỡng được chọn quá thấp, kết quả sẽ chứa nhiều đường biên giả, trong khi ngưỡng quá cao có thể dẫn đến việc mất các đường biên mờ, gây ra hiện tượng đứt nét.
Hình 3.17: Kết quả dò biên với các ngưỡng khác nhau
Trong hệ thống nhận dạng mã vạch, để xác định đường biên của các vạch màu đen và trắng, tác giả đã chọn ngưỡng mặc định là 0.8 nhằm loại bỏ các thành phần biên không mong muốn.
Hình 3.18: Ảnh xám trước khi dò biên Hình 3.19: Ảnh sau khi dò biên Canny
Hình 3.20: Ảnh xám trước khi dò biên Hình 3.21: Ảnh sau khi dò biên Canny 3.3.6 Xoay mã vạch
Để đảm bảo quá trình nhận dạng mã vạch hiệu quả, các ảnh mã vạch bị nghiêng cần được xoay về phương ngang trước khi tiến hành giải mã Nếu không, kết quả nhận dạng sẽ không chính xác.
Để xoay mã vạch về phương ngang, trước tiên cần xác định góc nghiêng của mã vạch, vì mỗi mã vạch có góc nghiêng khác nhau Tác giả sử dụng phương pháp biến đổi ảnh sang miền Radon để xác định góc nghiêng này.
Biến đổi ảnh sang miền Radon là một quá trình chuyển đổi ảnh trong không gian hai chiều, trong đó mỗi đường thẳng trong ảnh tương ứng với một điểm trong miền Radon.
Công thức toán học của biến đổi Radon
Hình 3.22: Ảnh có mã vạch bị nghiêng bên trái
Hình 3.23: Ảnh có mã vạch được xoay về phương ngang
Hình 3.24: Ảnh có mã vạch bị nghiêng bên phải
Hình 3.25: Ảnh có mã vạch bị xoay về phương ngang
Để xử lý mã vạch từ ảnh gốc, trước tiên cần xác định và tách mã vạch ra Để phát hiện nhanh chóng và chính xác vị trí của mã vạch, tác giả đã thực hiện các bước cần thiết để xác định vị trí của mã vạch.
Dựa vào sự biến thiên của các vạch màu đen và trắng trong mã vạch, chúng ta có thể xác định vị trí chứa mã vạch Ảnh đầu vào được chuyển đổi sang ảnh nhị phân với ngưỡng mặc định, và các thành phần trong ảnh sẽ được đánh dấu theo các điểm đồng mức Cuối cùng, tập hợp các thành phần có diện tích đồng mức lớn nhất sẽ được xác định là vị trí của mã vạch.
Hình 3.26: Các vùng đồng mức b Tách lấy mã vạch
Giải mã mã vạch
Sau khi thực hiện tiền xử lý, ảnh mã vạch được biến đổi kích thước về dạng mặc định, lọc làm mịn bằng bộ lọc trung bình, và xác định góc nghiêng bằng phương pháp chuyển ảnh sang miền Radon Tiếp theo, ảnh được xoay theo góc nghiêng đã tìm được Bằng cách tính toán gradient từ sự thay đổi liên tục giữa các vạch đen và trắng, vùng chứa mã vạch được xác định và tách ra khỏi ảnh gốc Ảnh sau đó được tăng cường qua phương pháp cân bằng Histogram, phân đoạn và khôi phục thông tin, trước khi được đưa vào khối giải mã để nhận dạng mã vạch.
Tiến trình giải mã mã vạch được thực hiện theo các bước sau: Ảnh mã vạch
Xác định chuỗi thông tin
Giải mã chuỗi thông tin
Hình 3.47: Các bước giải mã mã vạch
3.4.1 Xác định chuỗi thông tin Để xác định chuỗi thông tin cần phải xác định được 59 vạch cần thiết của mã vạch gồm 30 vạch màu đen, 29 vạch màu trắng bằng phương pháp zero-crossing, quy trình thực hiện sẽ được tiến hành theo các bước như hình 3.44
Phương pháp Zero-Crossing chỉ thực hiện một lần quét ngang để xác định số lượng vạch đen và trắng trong mã vạch, dẫn đến độ tin cậy và chính xác của kết quả không cao Để cải thiện tính chính xác và độ tin cậy của hệ thống nhận dạng, việc áp dụng quét nhiều đường thay vì chỉ một đường là cần thiết.
Xác định đường cắt ngang trung bình của mã vạch Tìm mã vạch cần xử lý
Xác định số pixcel của một vạch
Hình 3.48: Các bước xác định chuỗi thông tin
Mã vạch EAN-13 được cấu trúc với 3 vạch bắt đầu, 42 vạch cho sáu chữ số bên trái, 5 vạch cho vị trí trung tâm, 42 vạch cho sáu chữ số bên phải, và 3 vạch kết thúc Mỗi chữ số trong mã vạch bao gồm 7 vạch đen hoặc trắng, tương ứng với giá trị nhị phân Để xử lý dữ liệu trong 95 vạch, chỉ cần tập trung vào các vạch quan trọng và loại bỏ những vạch không cần thiết, do đó cần xây dựng một mảng mới để đọc mã vạch hiệu quả.
Sơ đồ của khối đọc mã vạch trong luận văn này như sau:
Hình 3.49: Sơ đồ của khối đọc mã vạch
Nguyên lý của khối đọc mã vạch:
Để xây dựng chuỗi dữ liệu mẫu từ mã vạch EAN 13, cấu trúc bao gồm 3 vạch bắt đầu, 42 vạch cho sáu chữ số bên trái, 5 vạch trung tâm, 42 vạch cho sáu chữ số bên phải và 3 vạch kết thúc Mỗi chữ số trong mã vạch được biểu diễn bằng 7 vạch đen hoặc trắng, tương ứng với một chuỗi giá trị nhị phân Chuỗi nhị phân này chuyển đổi thành giá trị thập phân theo quy định của mã vạch EAN 13 Để xác định chuỗi dữ liệu chứa thông tin mã vạch, phương pháp zero crossing được áp dụng với một lần quét ngang duy nhất, nhằm tính toán số lượng vạch đen và trắng, dựa vào 3 vạch bắt đầu, 5 vạch trung tâm và 3 vạch kết thúc theo quy định của mã EAN 13.
Để xác định mã vạch EAN 13, trước tiên cần xác định số pixel của từng vạch trong tổng số 95 vạch Tiếp theo, xác định vạch đen và vạch trắng tương ứng với mức logic 0 hay 1 Sau đó, so sánh với bảng mẫu theo quy tắc mã hóa EAN 13 để tìm ra các số thập phân tương ứng Cuối cùng, dựa vào tính chẵn lẻ của sáu chữ số đầu, ta có thể xác định chữ số đầu tiên của mã vạch EAN 13.
Quá trình giải mã hoàn thành, xuất thông tin yêu cầu.