Tổng quan về xử lý ảnh và đọc mã QR code

Một phần của tài liệu phan_loai_san_pham_ma_qr (Trang 20 - 24)

CHƯƠNG 2. TỔNG QUAN GIẢI PHÁP CÔNG NGHỆ

2.4. Tổng quan về xử lý ảnh và đọc mã QR code

OpenCV là tên viết tắt của open source computer vision library – có thể được hiểu là một thư viện nguồn mở cho máy tính. Cụ thể hơn OpenCV là kho lưu trữ các mã nguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gian thực.

OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động real time.

Nó còn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thị giác máy tính hay các learning machine khác.

OpenCV sở hữu giao diện thiên thiện với mọi loại ngôn ngữ lập trình, ví dụ như C+

+, C, Python hay Java… Ngoài ra, nó cũng dễ dàng tương thích với các hệ điều hành khác nhau, bao gồm từ Windows, Linux, Mac OS, iOS cho đến cả Android.

Thư viện Ooencv được ứng dụng vào rất nhiều trường hợp khác nhau. Như các phần mềm định vị, bản đồ nói chung, nhà cung cấp dữ liệu hình ảnh cho các app về Map, khởi tạo ra những hình ảnh 3 chiều phức tạp, tất cả những ứng dụng công nghệ như robot, xe tự lái, bảng cảm ứng thông minh… Thư viện sử dụng nhiều ngôn ngữ lập trình phổ biến như: ngôn ngữ lập trình C+ +/C# ngôn ngữ lập trình Java và Python.

Đặc điểm OpenCV OpenCV Là một thư viện mở nên sử dụng các thuật toán một cách miễn phí, cùng với việc chúng ta cũng có thể đóng góp thêm các thuật toán giúp Thư viện thêm ngày càng phát triển. Các tính năng của thư viện OpenCV:

- Đối với hình ảnh, chúng ta có thể đọc và lưu hay ghi chúng.

- Về Video cũng tương tự như hình ảnh cũng có đọc và ghi.

- Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh.

- Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh.

- Phát hiện các đối tượng xác định được xác định trước như khuôn mặt, mắt, xe trong video hoặc hình ảnh.

- Phân tích video,... ước lượng chuyển động của nó, trừ nền ra và theo dõi các đối tượng trong video.

Và ở đây, ta sử dụng ngôn ngữ lập trình Python cho đề tài. Với phần mềm không quá phức tạp mà thiên hướng gọn nhẹ thì ngôn ngữ Python sẽ là sự lựa chọn chính xác nhất. Nhờ các câu lệnh ngắn gọn cùng thuộc tính đơn giản, Python giúp cho quá trình phát triển phần mềm OpenCV diễn ra dễ dàng hơn. Sử dụng ngôn ngữ Python sẽ là biện pháp tốt nhất cho những người không mạnh mảng lập trình.

2.4.2. Giới thiệu về xử lí ảnh 2.4.2.1. Tổng quan về sử lí ảnh

Xử lý ảnh là một lĩnh vực xử lý tín hiệu với tín hiệu đầu vào là ảnh số và đầu ra là các giá trị, thuộc tính mong muốn. Kỹ thuật này là một tập hợp các phương pháp tính toán và biến đổi để truyền tải hoặc mã hóa các ảnh tự nhiên thu được để làm tăng chất ảnh hoặc nhận dạng ảnh, phán đoán ảnh và đánh giá các nội dung của ảnh.

Đây là một ngành khoa học mới rất phát triển trong những năm gần đây mang lại rất nhiều lợi ích cho cuộc sống con người như:

 Lĩnh vực bảo mật: Nhận dạng vân tay, khuôn mặt…

 Lĩnh vực giao tiếp giữa người và máy: tương tác với vật thể, dò line, tránh vật cản…

 Lĩnh vực giải trí: Trò chơi điện tử thực tế ảo…

 Lĩnh vực y tế: Chụp X-quang, MRI…

2.4.2.2. Quá trình xử lí ảnh

Ảnh số là một tập hợp từ hàng nghìn cho tới hàng triệu điểm ảnh (pixel). Số điểm ảnh xác định độ phân giải của bức ảnh, độ phân giải càng cao thì bức ảnh càng sắc nét và ngược lại. Mỗi điểm ảnh sẽ có hai thuộc tính (x, y) tương ứng là tọa độ theo phương ngang và dọc của chúng trên ảnh. Trong quá trình xử lý ảnh, việc tính toán

thực hiện trực tiếp trên các điểm ảnh. Sau đây là các quá trình trong xử lý ảnh:

- Quá trình thu nhận ảnh: Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor quang hoặc máy scanner… và sau đó các tín hiệu này sẽ được số hóa. Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các thông số quan trọng cần quan tâm là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị.

- Quá trình tiền xử lý ảnh:Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử bóng… nhằm tạo ra chất lượng ảnh tốt hơn nữa tạo thuận lợi cho các bước xử lý phức tạp hơn về sau. Quá trình này thường được thực hiện bởi các bộ lọc.

- Quá trình phân đoạn ảnh: Phân đoạn ảnh là bước then chốt trong xử lý ảnh. Giai đoạn này phân tích ảnh thành những phần chuẩn để xác định vùng liên thông có thể là cùng màu, cùng mức xám… Mục đích của phân đoạn ảnh là để miêu tả tổng hợp về nhiều phần tử khác nhau cấu tạo nên ảnh thô. Thông thường lượng thông tin chứa trong ảnh là rất lớn, trong khi đa số các ứng dụng chỉ cần quan tâm tới một vài đối tượng đặc trưng nào đó. Do vậy cần có một quá trình để chọn lọc thông tin giảm khối lượng thông tin, tăng tốc độ xử lý. Quá trình này bao gồm phân vùng ảnh và trích chọn đặc tính chủ yếu.

- Tách các đặc tính: Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh thô, hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh thuộc về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyển đổi dữ liệu thô này thành một dạng thích hợp hơn cho việc xử lý trong máy tính là rất cần thiết. Để chuyển đổi chúng, câu hỏi đầu tiên cần phải trả lời là nên biểu diễn một vùng ảnh dưới dạng biên hay dưới dạng một vùng hoàn chỉnh gồm tất cả những điểm ảnh thuộc về nó. Biểu diễn dạng biên cho một vùng phù hợp với những ứng dụng chỉ quan tâm chủ yếu đến các đặc trưng hình dạng bên ngoài của đối tượng, ví dụ như các góc cạnh và điểm uốn trên biên. Biểu diễn dạng vùng lại thích hợp cho

những ứng dụng khai thác các tính chất bên trong của đối tượng, ví dụ như vân ảnh hoặc cấu trúc xương của nó. Sự lựa chọn cách biểu diễn thích hợp cho một vùng ảnh chỉ mới là một phần trong việc chuyển đổi dữ liệu ảnh ảnh thô sang một dạng thích hợp hơn cho tính toán. Cần phải đưa ra một phương pháp mô tả dữ liệu đã được chuyển đổi sao cho những tính chất cần quan tâm sẽ được làm nổi bật lên, thuận tiện cho việc xử lý chúng.

- Nhận dạng và giải thích: Đây là bước cuối cùng trong quá trình xử lý ảnh. Nhận dạng ảnh có thể hiểu một cách đơn giản là gán nhãn cho các đối tượng trong ảnh. Ví dụ như chữ viết, các đối tượng trong ảnh cần nhận dạng là các mẫu chữ. Cần tìm cách tách riêng các mẫu chữ đó ra và tìm cách gán đúng các kí tự trong bảng chữ cái cho mẫu chữ thu được trong ảnh. Giải thích là công đoạn gán nghĩa cho một tập các đối tượng đã được nhận biết.

Không phải bất kì một ứng dụng xử lý ảnh nào cũng bắt buộc phải tuân thủ theo tất cả các bước xử lý trên. Một cách tổng quát thì những chức năng xử lý bao gồm cả nhận dạng và giải thích thường chỉ có mặt trong hệ thống phân tích ảnh tự động hoặc bán tự động, được dùng để rút ra những thông tin quan trọng từ ảnh, ví dụ như các ứng dụng nhận dạng kí tự, biển số, …

2.4.3. Xử lí ảnh và đọc mã QR code

Ở đề tài này, thì ta xử lý ảnh để đọc mã QR code như sau:

 Đọc ảnh: Đầu tiên, chúng ta cần đọc và tải ảnh chứa mã QR code. Có nhiều thư viện và công cụ có sẵn để đọc ảnh, ta sử dụng thư viện OpenCV trong Python.

 Chuyển đổi ảnh sang định dạng phù hợp: Sau khi đọc ảnh, chúng ta thường cần chuyển đổi ảnh sang một định dạng phù hợp để phục vụ cho việc xử lý tiếp theo. Trong trường hợp đọc mã QR code, chúng ta thường chuyển đổi ảnh sang định dạng grayscale (ảnh xám) để giảm kích thước dữ liệu và tăng tốc độ xử lý.

 Tìm kiếm mã QR code: Tiếp theo, chúng ta sử dụng các thuật toán như thuật toán xác định vùng (region detection) để tìm kiếm các vùng chứa mã QR code trong ảnh. Mã QR code thường có các đặc điểm như vị trí mẫu, hình dạng hình vuông và các góc vuông. Chúng ta có thể sử dụng các phương pháp như phát hiện cạnh (edge detection) và phân đoạn (segmentation) để tìm và phân loại các vùng thích hợp.

 Giải mã mã QR code: Khi chúng ta đã xác định được vùng chứa mã QR code, chúng ta cần giải mã mã QR code để trích xuất thông tin từ nó.

 Trích xuất dữ liệu: Khi chúng ta đã giải mã mã QR code thành công, chúng ta có thể trích xuất dữ liệu từ nó gửi tín hiệu về PLC để sử dụng phân loại sản phẩm..

Một phần của tài liệu phan_loai_san_pham_ma_qr (Trang 20 - 24)

Tải bản đầy đủ (DOCX)

(119 trang)
w