CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH 1.1 Khái quát về xử lý ảnh Xử lý ảnh là một lĩnh vực trong xử lý tín hiệu số, tập trung vào việc xử lý các tín hiệu ảnh để trích xuất thông tin hoặc cải
Trang 1TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM
VIỆN ĐÀO TẠO CHẤT LƯỢNG CAO
BÁO CÁO BÀI TẬP LỚN NHẬN DẠNG VÀ XỬ LÝ ẢNH
XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG TÊN HÀNG HOÁ DỰA TRÊN VIỆC NHẬN DẠNG KÝ TỰ
Giảng viên hướng dẫn TS Nguyễn Hữu Tuân
HẢI PHÒNG - 2024
Trang 2MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH 4
1.1 Khái quát về xử lý ảnh 4
1.2 Các vấn đề của xử lý ảnh 5
1.3 Các ứng dụng của xử lý ảnh 6
1.4 Các bước trong quá trình xử lý ảnh 8
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 11
2.1 Ngôn ngữ Python 11
2.2 Thư viện Tkinter 11
2.3 Thư viện PIL 12
PIL đã được phát triển từ năm 1995 và đã trở thành một trong những thư viện phổ biến nhất cho xử lý hình ảnh trong Python 13
2.4 Thư viện Pickle 13
2.5 Thư viện EasyOCR 14
CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ 16
3.1 Quá trình thực hiện 16
3.2 Kết quả 19
KẾT LUẬN 20 TÀI LIỆU SỬ DỤNG 22
Trang 3DANH MỤC HÌNH ẢNH
Hình 1 Ứng dụng của xử lý ảnh trong y tế 6
Hình 2 Ứng dụng xử lý ảnh trong nhận diện 6
Hình 3 Ứng dụng xử lý ảnh trong xe tự hành 7
Hình 4 Ứng dụng xử lý ảnh trong an ninh và giám sát 7
Hình 5 Ứng dụng xử lý ảnh trong giải trí 8
Hình 6 Tiền xử lý ảnh 9
Hình 7 Easy OCR 14
Hình 8 Trang web cài đặt python 16
Hình 9 Cài đặt thư viện 17
Hình 10 Cấu trúc chương trình 17
Hình 11 Xây dựng giao diện bằng thư viện Tkinter 18
Hình 12 Giao diện ban đầu của hệ thống 19
Hình 13 Một số kết quả thực hiện được 19
Trang 4CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH 1.1 Khái quát về xử lý ảnh
Xử lý ảnh là một lĩnh vực trong xử lý tín hiệu số, tập trung vào việc xử lý các tín hiệu ảnh để trích xuất thông tin hoặc cải thiện chất lượng của hình ảnh
Là một phân ngành khoa học mới phát triển mạnh mẽ trong những năm gần đây
Xử lý ảnh tập trung vào việc xử lý các dữ liệu ảnh tự nhiên hoặc được chụp từ các nguồn khác nhau Dữ liệu ảnh thường được biểu diễn dưới dạng tín hiệu có biên độ và dải tần số Mặc dù có sự tương đồng, nhưng xử lý ảnh khác biệt với đồ họa trong việc xử lý dữ liệu không gian, thường tập trung vào việc trích xuất thông tin từ dữ liệu thực tế hơn là tạo ra hình ảnh tạo hình từ dữ liệu
Hệ thống xử lý ảnh thường nhận các khung cảnh hoặc hình ảnh đầu vào
và thực hiện một loạt các phép xử lý để tạo ra hình ảnh đầu ra thỏa mãn các yêu cầu cụ thể, bao gồm cả việc cải thiện chất lượng hoặc trích xuất các đặc trưng quan trọng của ảnh
1.2 Các vấn đề của xử lý ảnh
Xử lý ảnh là một lĩnh vực phức tạp trong khoa học máy tính, tập trung vào việc phân tích, biến đổi và trích xuất thông tin từ dữ liệu hình ảnh Dưới đây là một số vấn đề đáng chú ý mà các nhà nghiên cứu và kỹ sư thường phải đối mặt khi làm việc trong lĩnh vực này:
Độ phân giải: Độ phân giải của ảnh đề cập đến số lượng điểm ảnh trong mỗi chiều, chẳng hạn như chiều rộng và chiều cao Ảnh có độ phân giải thấp có thể gây mất mát thông tin chi tiết, dẫn đến hiện tượng mờ và mất cạnh Ngược lại, ảnh có độ phân giải cao có thể tạo ra tập tin lớn và yêu cầu thời gian xử lý lớn
Màu sắc: Điều chỉnh màu sắc trong xử lý ảnh là một vấn đề quan trọng để đạt được kết quả tốt và chính xác Các vấn đề có thể bao gồm sự không đồng đều của ánh sáng, hiệu ứng màu bị sai lệch, hoặc sai sót trong hiển thị màu sắc
Trang 5Nhiễu và nhiễu hạt: Ảnh thường bị ảnh hưởng bởi nhiễu từ nhiều nguồn khác nhau, bao gồm nhiễu điện từ trong quá trình chụp hoặc điều kiện ánh sáng kém Ngoài ra, các hạt bụi hoặc vết bẩn trên ảnh cũng có thể làm giảm chất lượng và độ chính xác của xử lý
1.3 Các ứng dụng của xử lý ảnh
Xử lý ảnh có ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, đó là một công cụ quan trọng giúp con người hiểu và tận dụng thông tin từ hình ảnh một cách hiệu quả Dưới đây là một số ví dụ cụ thể về ứng dụng của xử lý ảnh:
Y tế và
Hình 1 Ứng dụng của xử lý ảnh trong y tế
Trang 6vực y tế, xử lý ảnh được sử dụng để chẩn đoán bệnh, theo dõi sự tiến triển của bệnh, hướng dẫn phẫu thuật và thiết kế dược phẩm Các kỹ thuật như chụp cắt lớp (CT), cộng hưởng từ hạt nhân (MRI) và siêu âm y tế là các ví dụ điển hình
về sự ứng dụng của xử lý ảnh trong y tế
Nhận dạng khuôn mặt là một công nghệ sử dụng xử lý ảnh để phân tích và nhận diện các đặc điểm của khuôn mặt trong hình ảnh hoặc video Ứng dụng của công nghệ này rất đa dạng và phong phú, từ việc mở khóa điện thoại một cách tiện lợi, nhận dạng tội phạm trong hệ thống an ninh, đến quản lý chấm công hiệu quả và tăng cường bảo mật trong các hệ thống và cơ sở hạ tầng
Hình 2 Ứng dụng xử lý ảnh trong nhận diện
- Ô tô tự hành: Trong lĩnh vực xe tự hành, xử lý ảnh đóng vai trò quan trọng trong việc nhận dạng vật thể, phân tích môi trường đường đi và dự đoán hành vi của các phương tiện xung quanh Các hệ thống nhận dạng biển số xe, nhận diện người đi bộ và phát hiện xe trước là một số ví dụ về ứng dụng của xử
lý ảnh trong ô tô tự hành
Trang 7Hình 3 Ứng dụng xử lý ảnh trong xe tự hành
- An ninh và giám sát: Trong lĩnh vực an ninh và giám sát, xử lý ảnh được
sử dụng để giám sát và phân tích hành vi của con người, nhận dạng khuôn mặt, phát hiện hoạt động đáng ngờ và theo dõi vị trí của các đối tượng quan trọng Các hệ thống camera an ninh và giám sát thông minh thường dựa vào xử lý ảnh
để cung cấp các dữ liệu quan trọng cho việc ra quyết định và can thiệp kịp thời
Hình 4 Ứng dụng xử lý ảnh trong an ninh và giám sát
- Robotics và tự động hóa: Trong lĩnh vực robotics và tự động hóa, xử lý ảnh được sử dụng để hướng dẫn và điều khiển robot trong môi trường phức tạp Các ứng dụng bao gồm nhận dạng và vận chuyển vật thể, kiểm tra chất lượng sản phẩm và dẫn đường trong môi trường không gian hạn chế
Trang 8Hình 5 Ứng dụng trong Robotic và tự động hoá
1.4 Các bước trong quá trình xử lý ảnh
Trong quá trình xử lý ảnh, có nhiều bước khác nhau để tiền xử lý, trích xuất thông tin và áp dụng các thuật toán xử lý Dưới đây là các bước phổ biến trong quá trình xử lý ảnh:
Hình 6 Tiền xử lý ảnh
Tiền xử lý (Preprocessing):
Các công việc tiền xử lý có thể bao gồm:
Chuẩn hóa: Đảm bảo rằng các điểm ảnh có cùng tỷ lệ và phân phối giá trị
để loại bỏ sự biến đổi không mong muốn
Lọc nhiễu: Loại bỏ nhiễu từ ảnh bằng cách sử dụng các kỹ thuật lọc như lọc Gaussian, lọc trung vị, hoặc lọc đường biên
Cân bằng histogram: Điều chỉnh độ tương phản và đồng nhất phân phối màu sắc trong ảnh bằng cách thay đổi histogram
Trang 9Trích xuất đặc trưng (Feature extraction):
Bước này tập trung vào việc trích xuất thông tin quan trọng từ ảnh để sử dụng trong các bước tiếp theo của quá trình xử lý Các kỹ thuật phổ biến bao gồm:
Phát hiện cạnh: Nhận biết và trích xuất các biên giới và ranh giới giữa các đối tượng trong ảnh
Trích xuất đặc điểm: Tìm ra các điểm đặc biệt hoặc vùng quan trọng trong ảnh như các điểm cực trị độ sáng, điểm góc, hoặc các đặc điểm local binary pattern (LBP)
Xử lý ảnh(Image Processing):
Sau khi có được các đặc trưng cần thiết, các phương pháp xử lý ảnh có thể được áp dụng để thực hiện các nhiệm vụ cụ thể, bao gồm:
Phân đoạn ảnh: Tách ảnh thành các phần nhỏ hơn hoặc phân loại các vùng ảnh thành các nhóm dựa trên các đặc trưng đã trích xuất
Biến đổi hình thái học: Thay đổi hình dạng, kích thước và cấu trúc của các vùng ảnh bằng các phép biến đổi như phóng to, thu nhỏ, xoay, gập và biến đổi hình dạng
Phân loại và Nhận dạng (Classification and Recognition):
Bước này nhằm phân loại hoặc nhận dạng các đối tượng hoặc thông tin trong ảnh dựa trên các đặc trưng đã trích xuất Các phương pháp phân loại và nhận dạng bao gồm:
Mạng nơ-ron học sâu (Deep Learning) cho phân loại ảnh
Phương pháp phân loại dựa trên các thuật toán máy học như SVM (Support Vector Machine) hoặc k-nearest neighbors (KNN)
Hệ thống nhận dạng khuôn mặt hoặc đối tượng sử dụng các mô hình đã được huấn luyện
Trang 10CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 2.1 Ngôn ngữ Python
Python là một ngôn ngữ lập trình thông dịch, đa mục đích, và dễ học Được phát triển bởi Guido van Rossum và được ra mắt lần đầu vào năm 1991, Python đã nhanh chóng trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới Dưới đây là một số đặc điểm chính và thông tin cơ bản về Python:
Đặc Điểm:
Dễ Học và Dễ Đọc: Python được thiết kế với cú pháp đơn giản và rõ ràng, giúp cho người mới học lập trình có thể nhanh chóng tiếp cận và làm quen
Đa Mục Đích: Python hỗ trợ nhiều mục đích khác nhau, từ lập trình web, phát triển game, xử lý dữ liệu, đến trí tuệ nhân tạo và tính toán khoa học
Hỗ Trợ Thư Viện Phong Phú: Python có một cộng đồng lớn và năng động, cung cấp hàng ngàn thư viện và module cho nhiều mục đích khác nhau Ví dụ như NumPy, Pandas, TensorFlow, Django, Flask, và nhiều thư viện khác
Tính Bền Vững và Phổ Biến: Python là một ngôn ngữ ổn định với cộng đồng lập trình viên đông đảo và sự hỗ trợ liên tục từ các tổ chức và công
ty lớn
Tính Mở và Miễn Phí: Python là một phần mềm mã nguồn mở và miễn phí, có nghĩa là mọi người có thể sử dụng, sửa đổi và phân phối lại mã nguồn mà không phải trả tiền
Python không chỉ là một ngôn ngữ lập trình mạnh mẽ mà còn là một cộng đồng lớn mạnh với hàng ngàn tài liệu, hướng dẫn và hỗ trợ Điều này khiến Python trở thành một lựa chọn phổ biến cho người mới bắt đầu và những nhà phát triển kinh nghiệm
Trang 112.2 Thư viện Tkinter
Tkinter là một thư viện giao diện người dùng (GUI) mạnh mẽ và dễ sử dụng được tích hợp sẵn trong Python Với Tkinter, bạn có thể tạo ra các ứng dụng đồ họa tương tác trên nền tảng desktop một cách dễ dàng Dưới đây là một
số đặc điểm và chức năng chính của Tkinter:
Đa Nền Tảng và Độ Di Động: Tkinter hỗ trợ trên nhiều hệ điều hành khác nhau như Windows, macOS, và Linux Điều này cho phép bạn phát triển ứng dụng một lần và chạy trên nhiều hệ điều hành mà không cần phải điều chỉnh mã nguồn
Widget Phong Phú: Tkinter cung cấp một loạt các widget như nút, nhãn, ô văn bản, hộp thoại, danh sách, v.v Bạn có thể sắp xếp và tương tác với các widget này để tạo ra giao diện người dùng đa dạng và phong phú
Xử Lý Sự Kiện: Tkinter cho phép bạn gắn kết các hàm xử lý sự kiện với các widget Điều này giúp ứng dụng của bạn có thể phản ứng đúng khi người dùng tương tác với các phần tử trên giao diện
hình dạng, màu sắc và công cụ vẽ cơ bản Điều này cho phép bạn tạo ra các phần tử đồ họa phức tạp trên giao diện người dùng của bạn
Tkinter là một lựa chọn tuyệt vời cho việc phát triển các ứng dụng desktop đơn giản hoặc trung bình, với sự kết hợp giữa tính linh hoạt và sức mạnh của Python
2.3 Thư viện PIL
PIL là viết tắt của Python Imaging Library, là một thư viện Python mạnh
mẽ để xử lý và chỉnh sửa hình ảnh PIL cung cấp nhiều chức năng cho việc tải, lưu, chỉnh sửa, biến đổi và thao tác với hình ảnh trong Python
Dưới đây là một số tính năng chính của thư viện PIL:
Đọc và ghi hình ảnh: PIL hỗ trợ nhiều định dạng hình ảnh như JPEG, PNG, GIF, BMP và TIFF Bạn có thể dễ dàng đọc và ghi hình ảnh từ và đến các tệp tin định dạng này
Trang 12Chỉnh sửa hình ảnh: PIL cho phép bạn thực hiện các phép biến đổi hình ảnh như cắt, xoay, thu phóng, lật và xoay ngược Bạn có thể điều chỉnh kích thước, màu sắc, độ sáng, độ tương phản và nhiều yếu tố khác của hình ảnh
Thao tác pixel: Bạn có thể truy cập và chỉnh sửa từng pixel trong hình ảnh PIL cung cấp các phương thức để lấy giá trị màu sắc của pixel, đặt giá trị màu sắc mới, tìm kiếm và thay thế màu sắc cụ thể, và thực hiện các phép tính toán pixel khác
Xử lý hình ảnh: PIL cung cấp nhiều chức năng xử lý hình ảnh như lọc ảnh (blurring, sharpening), điều chỉnh histogram, chuyển đổi hình ảnh thành ảnh đen trắng, thay đổi chế độ màu sắc và nhiều hơn nữa
PIL đã được phát triển từ năm 1995 và đã trở thành một trong những thư viện phổ biến nhất cho xử lý hình ảnh trong Python
2.4 Thư viện Pickle
Thư viện pickle trong Python là một công cụ mạnh mẽ cho việc serialization và deserialization của các đối tượng Python Trong ngữ cảnh này, serialization đề cập đến quá trình chuyển đổi một đối tượng Python thành một định dạng có thể được lưu trữ hoặc truyền tải, trong khi deserialization là quá trình ngược lại, chuyển đổi dữ liệu đã được serialized thành một đối tượng Python
Thư viện pickle cho phép bạn lưu trữ một loạt các đối tượng Python như danh sách, từ điển, các đối tượng tùy chỉnh và nhiều hơn nữa dưới dạng các tệp tin hoặc dữ liệu nhị phân Điều này rất hữu ích khi bạn muốn lưu trữ dữ liệu tạm thời hoặc truyền dữ liệu giữa các ứng dụng Python khác nhau
Với thư viện pickle, bạn có thể dễ dàng lưu trữ trạng thái của các đối tượng Python và khôi phục chúng sau này mà không mất đi cấu trúc hoặc dữ liệu của chúng Điều này giúp cho việc làm việc với dữ liệu trở nên linh hoạt và thuận tiện hơn trong các dự án Python của bạn
Trang 132.5 Thư viện EasyOCR
Hình 7 Easy OCR
Giới Thiệu: EasyOCR là một thư viện nhận dạng ký tự quang học (OCR)
mã nguồn mở, được phát triển để đơn giản hóa quá trình nhận dạng văn bản từ hình ảnh Với khả năng tích hợp dễ dàng và sự hỗ trợ đa ngôn ngữ, EasyOCR là một công cụ hữu ích cho các ứng dụng và dịch vụ cần xử lý văn bản từ hình ảnh
Tính Năng Chính:
Hỗ trợ nhiều ngôn ngữ: EasyOCR có khả năng nhận dạng văn bản
từ nhiều ngôn ngữ khác nhau, bao gồm cả các ngôn ngữ phổ biến
và ngôn ngữ ít được sử dụng
Đơn giản và dễ sử dụng: Thư viện này được thiết kế để dễ dàng tích hợp vào các ứng dụng và dịch vụ thông qua API hoặc gói cài đặt đơn giản
Hỗ trợ nhiều nguồn dữ liệu: EasyOCR có khả năng nhận dạng văn bản từ ảnh chụp từ nhiều nguồn khác nhau, bao gồm cả văn bản in, chữ viết tay và chữ trên biển số xe
Kiến Trúc và Hoạt Động: EasyOCR sử dụng các mô hình học máy
để nhận dạng ký tự từ hình ảnh Quá trình này bao gồm các bước như tiền xử lý ảnh, trích xuất đặc trưng, và phân loại ký tự
Trang 14EasyOCR cung cấp giao diện lập trình ứng dụng (API) để giao tiếp với các ứng dụng khác và hỗ trợ tích hợp dễ dàng vào các dự án Hiệu Suất và Độ Chính Xác: Hiệu suất và độ chính xác của EasyOCR phụ thuộc vào nhiều yếu tố như chất lượng ảnh đầu vào, ngôn ngữ được nhận dạng,
và điều kiện ánh sáng Tuy nhiên, thư viện này đã được đánh giá là có hiệu suất tốt trong việc nhận dạng văn bản từ hình ảnh
Ưu Điểm:
Dễ dàng tích hợp vào các ứng dụng và dịch vụ
Hỗ trợ nhiều ngôn ngữ
Hiệu suất tốt trong việc nhận dạng văn bản từ hình ảnh
Hạn Chế:
Độ chính xác có thể bị ảnh hưởng bởi chất lượng ảnh đầu vào và điều kiện môi trường
Ứng Dụng và Tiềm Năng:
EasyOCR có thể được áp dụng trong nhiều lĩnh vực như quản lý tài liệu, nhận diện biển số xe, nhận diện chữ viết tay và nhiều ứng dụng khác đòi hỏi xử lý văn bản từ hình ảnh Tiềm năng phát triển của EasyOCR là rất lớn, đặc biệt là với sự phát triển liên tục của các mô hình học máy và công nghệ xử lý hình ảnh
EasyOCR là một công cụ mạnh mẽ và linh hoạt cho việc nhận dạng văn bản từ hình ảnh Với khả năng tích hợp dễ dàng, hỗ trợ nhiều ngôn ngữ và hiệu suất tốt, EasyOCR là lựa chọn phổ biến cho các
dự án cần tính năng OCR
Trang 15CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ
3.1 Quá trình thực hiện
Đầu tiên ta cần cài đặt môi trường cho việc xây dựng chương trình trên nền tảng ngôn ngữ python
Hình 8 Trang web cài đặt python
Sau khi đã cài đặt xong ta sẽ cài đặt các thư viện được giới thiệu ở chương
2 bằng lệnh PIP
PIP là công cụ quản lý gói cho Python, cho phép bạn cài đặt và quản lý các gói thư viện Python PIP được cài đặt sẵn khi cài đặt Python từ phiên bản 2.7.9 và phiên bản 3.4 trở đi
Trước tiên bạn vào đường link https://bootstrap.pypa.io/pip.py -o get-pip.py để tải file get-get-pip.py Sau đó chạy lệnh python get-get-pip.py trên commander
để cài đặt PIP
Sau đó sử dụng các lệnh pip để cài đặt thư viện trên commander lần lượt như sau:
pickle: pip install pickle-mixin
PIL: pip install Pillow
EasyOCR: pip install easyocr