TỔNG QUAN
Đặt vấn đề
AI đang ngày càng trở nên phổ biến trong cuộc sống hàng ngày, không chỉ trong các lĩnh vực như y tế, kinh doanh và tài chính ngân hàng, mà còn đóng vai trò quan trọng trong giáo dục.
Việc duy trì sự hiện diện của học sinh và sinh viên một cách công bằng, khách quan và minh bạch là rất quan trọng trong các cơ sở giáo dục Mỗi cơ sở giáo dục áp dụng những phương pháp điểm danh khác nhau, từ hình thức thủ công như đọc tên cho đến việc sử dụng công nghệ hiện đại như vân tay, thẻ từ và mã vạch.
Công tác điểm danh bằng phương pháp thủ công hiện nay gặp nhiều bất cập, như việc đọc tên tốn thời gian và có thể bị ảnh hưởng bởi yếu tố tình cảm Theo nghiên cứu của Trần Thị Linh Đa và Nguyễn Châu Ngân, hệ thống điểm danh sử dụng vi điều khiển ARM kết hợp quẹt thẻ RFID và vân tay Tuy nhiên, việc quét vân tay có nguy cơ lây nhiễm bệnh truyền nhiễm như COVID-19, trong khi quẹt thẻ có thể dẫn đến tình trạng điểm danh hộ giữa các nhân viên.
Nhóm thực hiện đã tham khảo để tài của Lê Hoàng Thành, Hồ Đình Vương,
Hệ thống bảo mật ứng dụng xử lý ảnh đã áp dụng công nghệ nhận diện khuôn mặt để mở cửa, tuy nhiên, vẫn gặp phải tình trạng nhận diện sai, dẫn đến hiệu quả bảo mật chưa cao Do đó, việc kết hợp nhiều lớp bảo mật khác nhau với công nghệ nhận diện khuôn mặt là cần thiết nhằm nâng cao tính chính xác và đảm bảo an toàn hơn cho hệ thống.
Trong những năm gần đây, công nghệ nhận diện khuôn mặt đã trở nên phổ biến trong các cơ sở giáo dục, giúp việc điểm danh trở nên dễ dàng và tiết kiệm thời gian Hệ thống này sử dụng máy học và các phương pháp trích xuất đặc trưng để nhận dạng khuôn mặt từ hình ảnh đầu vào, từ đó dự đoán và xác định danh tính.
Dựa trên các khảo sát và kiến thức đã được trang bị, chúng tôi thực hiện đề tài thiết kế hệ thống điểm danh bằng nhận diện khuôn mặt Hệ thống này sẽ tương tác với các thiết bị bên ngoài, sử dụng thêm camera và màn hình để người dùng dễ dàng thao tác hơn Đề tài mang tên “Thiết kế và thi công hệ thống điểm danh bằng nhận diện khuôn mặt kết hợp mã QR và mã vạch trên Raspberry”.
Pi 4 sẽ khắc phục những hạn chế của các phương pháp điểm danh truyền thống Nhóm thực hiện cũng sẽ tích hợp thêm các phương pháp điểm danh khác như QR code và Barcode, nhằm đa dạng hóa hình thức điểm danh trong cùng một hệ thống, đồng thời nâng cao tính chính xác và bảo mật tuyệt đối.
Mục tiêu
Hệ thống điểm danh bằng nhận diện khuôn mặt được thiết kế nhằm quản lý học sinh, sinh viên một cách chính xác, công bằng và minh bạch Hệ thống này dễ dàng sử dụng và theo dõi đối tượng, áp dụng các thuật toán máy học và kỹ thuật xử lý hình ảnh trong nhận diện khuôn mặt Ngoài công nghệ nhận diện khuôn mặt, hệ thống còn tích hợp thêm các phương thức điểm danh khác như mã QR code và mã vạch, nhằm tăng cường tính chính xác, bảo mật và đa dạng hóa cách thức điểm danh trên cùng một nền tảng.
Nội dung nghiên cứu
Trong quá trình thực hiện Đồ án tốt nghiệp với đề tài Thiết kế hệ thống bằng công nghệ nhận diện khuôn mặt, nhóm thực hiện đã tập trung vào việc giải quyết và hoàn thành các nội dung quan trọng liên quan đến hệ thống này.
Trong bài viết này, chúng ta sẽ khám phá các lý thuyết, phương pháp và thuật toán liên quan đến bài toán nhận dạng đối tượng Đồng thời, chúng ta cũng sẽ tìm hiểu về xử lý ảnh và ứng dụng của máy học trong lĩnh vực này.
- Nội dung 2: Nghiên cứu và xử lý hình ảnh từ camera
- Nội dung 3: Nghiên cứu về trích xuất đặc trưng của khuôn mặt
- Nội dung 4: Nghiên cứu thiết kế giao diện giao tiếp với người dùng
- Nội dung 5: Nghiên cứu kết hợp với các phương thức điểm danh khác
- Nội dung 6: Nghiên cứu về cách thức quản lý dữ liệu
- Nội dung 7: Thực hiện quá trình lập trình
- Nội dung 8: Thiết kế hệ thống
- Nội dung 9: Kiểm thử, chỉnh sửa và hoàn thiện hệ thống ĐỒ ÁN TỐT NGHIỆP 3
- Nội dung 10: Viết báo cáo thực hiện
- Nội dung 11: Bảo vệ luận văn.
Giới hạn đề tài
Các thông số giới hạn của đề tài bao gồm:
- Dùng camera để phát hiện và nhận dạng khuôn mặt
- Cách thức thức nhận dạng sử dụng các phương pháp, kỹ thuật như Haar cascade, Local Binary Patterns Histogram
- Mô hình dừng lại ở việc điểm danh một lớp từ 20-30 học sinh/sinh viên/nhân viên
- Camera nhận dạng kém chính xác trong điều kiện có ánh sáng cường độ mạnh hoặc quá yếu, bức xạ nhiệt lớn
- Sử dụng framework, thư viện, cấu trúc đã được công bố
- Camera nhận diện và phát hiện khuôn mặt tốt ở khoản cách vừa phải (0,8m - 1m) không quá xa cững như quá gần
- Hệ thống điểm danh chỉ kết hợp tối đa 3 phương thức điểm danh là nhận diện khuôn mặt, QR code và mã vạch (Barcode).
Bố cục đề tài
Trong chương này, nhóm nghiên cứu các vấn đề cơ bản liên quan đến việc hình thành đề tài, bao gồm nội dung thực hiện, mục tiêu và giới hạn mà nhóm đã đề ra cho dự án.
❖ Chương 2: Cơ sở lý thuyết
Chương này cung cấp kiến thức về xử lý ảnh và máy học, bao gồm các phương pháp nhận diện khuôn mặt Bên cạnh đó, nó cũng đề cập đến ngôn ngữ lập trình Python và các ứng dụng của nó, cùng với trình thiết kế giao diện Ngoài ra, chương còn giới thiệu một số kiến thức liên quan đến Barcode, QR code và camera, cũng như các thư viện được sử dụng trong đề tài.
❖ Chương 3: Thiết kế hệ thống
Chương này tập trung vào việc lựa chọn linh kiện phù hợp cho hệ thống, bao gồm thiết kế sơ đồ khối và phân tích chức năng của từng khối trong hệ thống Bên cạnh đó, nội dung cũng đề cập đến việc phát triển các giải thuật và hoàn thiện các khâu còn lại để xây dựng một hệ thống điểm danh hiệu quả, cũng như thiết kế giao diện người dùng và các phím chức năng cần thiết trong hệ thống.
❖ Chương 4: Thi công hệ thống
Chương này trình bày quá trình thiết kế phần cứng cho hệ thống, bao gồm việc phát triển chương trình điểm danh sử dụng công nghệ nhận diện khuôn mặt kết hợp với mã QR và mã vạch Đồng thời, chúng tôi cũng tạo ra cơ sở dữ liệu để lưu trữ thông tin và xây dựng giao diện người dùng thân thiện Cuối cùng, chúng tôi tiến hành chế tạo giá đỡ cho màn hình để đảm bảo tính ổn định và thẩm mỹ cho hệ thống.
❖ Chương 5: Kết quả, nhận xét và đánh giá
Sau khi hoàn thành xây dựng hệ thống, cần đánh giá xem kết quả đạt được có phù hợp với yêu cầu ban đầu hay không Cần nhận xét về hiệu suất hoạt động của hệ thống, chỉ ra các ưu điểm và nhược điểm đã được phát hiện Đánh giá tổng thể mọi khía cạnh mà hệ thống mang lại, đặc biệt chú trọng đến tỷ lệ chính xác trong việc thực hiện điểm danh.
❖ Chương 6: Kết luận và hướng phát triển
Hệ thống điểm danh đã đạt được nhiều kết quả tích cực trong thực tế, tuy nhiên vẫn còn một số hạn chế cần khắc phục Kết luận cho thấy hiệu quả của hệ thống này trong việc quản lý và theo dõi sự hiện diện của người dùng Để nâng cao hiệu quả và tính năng của hệ thống, cần đề xuất các hướng phát triển phù hợp trong tương lai.
CƠ SỞ LÝ THUYẾT
Giới thiệu về xử lý ảnh
Xử lý ảnh là một lĩnh vực quan trọng trong thị giác máy, liên quan đến việc chuyển đổi ảnh gốc thành ảnh mới theo yêu cầu của người dùng Quá trình này bao gồm phân tích, phân lớp đối tượng, cải thiện chất lượng hình ảnh, phân đoạn, tách cạnh, gán nhãn các vùng và biên dịch thông tin hình ảnh.
Xử lý ảnh số là một lĩnh vực quan trọng trong tin học ứng dụng, liên quan đến việc biến đổi và mã hóa các ảnh tự nhiên Nó sử dụng các phương pháp và kỹ thuật để cải thiện chất lượng ảnh, tự động nhận dạng và phân tích nội dung của ảnh Xử lý dữ liệu bằng đồ họa, với các ảnh nhân tạo được tạo ra bởi chương trình, cũng đóng vai trò quan trọng trong việc tạo ra cấu trúc dữ liệu cho các ứng dụng này Mục tiêu chính của xử lý ảnh là nâng cao chất lượng hình ảnh và đánh giá nội dung một cách chính xác.
Xứ lý ảnh được áp dụng vào thực tế, đem lại nhiều hiệu quả trong các lĩnh vực như:
- Lĩnh vực quân sự: xử lý và nhận dạng ảnh quân sự
- Lĩnh vực giao tiếp người máy: nhận dạng ảnh, xử lý âm thanh, đồ họa
- Lĩnh vực an, bảo mật: nhận diện khuôn mặt người, nhận diện vân tay, …
- Lĩnh vực giải trí: trò chơi điện tử
- Lĩnh vực y tế: Xử lý ảnh y sinh, chụp X quang, MRI,…
- Trong công nghiệp: nhận dạng phân loại sản phẩm, trái cây,…
Xử lý ảnh bao gồm các bước cần thiết để chuyển đổi hình ảnh từ camera thành định dạng số, giúp dễ dàng thực hiện các thao tác tiếp theo Trước đây, hình ảnh chỉ là ảnh tương tự, nhưng với sự phát triển của công nghệ, ảnh màu và đen trắng hiện được chuyển đổi trực tiếp sang ảnh số Dưới đây là mô tả chi tiết về quy trình xử lý ảnh.
Hình 2 1: Các bước trong xử lý ảnh ĐỒ ÁN TỐT NGHIỆP 6
2.1.1 Thu nhận ảnh Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình xử lý ảnh Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, máy scan Sau đó các tín hiệu này sẽ được số hóa Các thông số quan trọng ở đây là độ phân giải, chất lượng Màu và tốc độ thu nhận ảnh của các thiết bị Chất lượng của một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh) [4]
2.1.2 Tiền xử lý ảnh Ở bước này, ảnh sẽ được xử lý để cải thiện về độ tương phản, khử nhiễu, với mục đích làm cho chất lượng ảnh trở nên tốt hơn, rõ nét hơn Quá trình này thường được thực hiện bởi các bộ lọc Bộ lọc trung bình được sử dụng chính trong bước tiền xử lý ảnh này, nó là bộ lọc mà mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận nhằm loại bỏ những điểm ảnh biến đổi lớn hơn so với điểm lân cận (hay còn gọi là nhiễu) [4]
Phân vùng ảnh là quá trình tách một bức ảnh thành các vùng thành phần nhằm phục vụ cho việc phân tích và nhận dạng Ví dụ, trong việc nhận dạng chữ hoặc mã vạch trên phong bì thư để phân loại bưu phẩm, cần chia nhỏ các thông tin như địa chỉ và tên thành từng từ, chữ cái, số hoặc vạch riêng biệt Đây là một trong những bước phức tạp và dễ gây lỗi nhất trong xử lý ảnh, ảnh hưởng lớn đến độ chính xác của kết quả nhận dạng.
2.1.4 Biểu diễn và mô tả Đây là phần sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết ở các vùng lân cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng( Feature Extration) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp phận biệt ký tự này với ký tự khác [4] ĐỒ ÁN TỐT NGHIỆP 7
2.1.5 Nhận dạng và nội suy
Nhận dạng ảnh là quá trình xác định và phân tích hình ảnh bằng cách so sánh với các mẫu đã học trước đó Nội suy trong nhận dạng ảnh cho phép chúng ta đưa ra phán đoán dựa trên các đặc điểm đã nhận diện, ví dụ như việc chuyển đổi các nét gạch đứng thành mã Barcode Có nhiều phương pháp phân loại ảnh, trong đó nhận dạng ảnh được chia thành hai loại cơ bản: nhận dạng theo tham số và nhận dạng theo cấu trúc Một số ứng dụng phổ biến trong khoa học và công nghệ hiện nay bao gồm nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản, nhận dạng vân tay, mã vạch và nhận dạng khuôn mặt.
Giới thiệu về trí tuệ nhân tạo AI (Artificial Intelligent)
2.2.1 Trí tuệ nhân tạo AI
Hiện nay, sự phát triển nhanh chóng của công nghệ đã đưa trí tuệ nhân tạo (AI) trở thành một trong những xu hướng hàng đầu trong ngành khoa học máy tính AI không chỉ là bước đà cho sự bùng nổ công nghệ toàn cầu mà còn là lĩnh vực hấp dẫn với tiềm năng lớn trong tương lai Công nghệ AI đang hướng tới việc chế tạo máy móc thông minh, giúp cỗ máy hoạt động giống như con người, mở ra nhiều cơ hội mới cho sự phát triển khoa học công nghệ.
Trí tuệ nhân tạo (AI) là một lĩnh vực của khoa học máy tính, tập trung vào việc tự động hóa các hành vi thông minh Nó nghiên cứu cách để máy tính thực hiện những nhiệm vụ mà con người hiện đang làm rất hiệu quả.
AI là một lĩnh vực trong khoa học máy tính, cho phép chúng ta phát triển những cỗ máy thông minh có khả năng hành xử, suy nghĩ và đưa ra quyết định tương tự như con người.
Giải thích thêm về mục tiêu của trí tuệ nhân tạo, các nhà khoa học đã chỉ ra bao gổm sáu mục tiêu sau:
Lập luận logic cho phép máy tính thực hiện các nhiệm vụ cần trí thông minh của con người, chẳng hạn như chứng minh định lý, lái xe trong giao thông và nhận diện đối tượng chính xác.
- Biểu diễn tri thức: Cho phép máy tính mô tả các đối tượng, con người và ngôn ngữ.
- Lập kế hoạch và điều hướng: Cho phép máy tính đi từ điểm A đến điểm B
- Xử lý ngôn ngữ: Cho phép máy tính hiểu và xử lý ngôn ngữ
- Nhận thức: Cho phép máy tính tương tác với thế giới thông qua thị giác, thính giác, xúc giác và khứu giác
Tự học là quá trình phát triển các hệ thống có khả năng thể hiện hành vi thông minh, cho phép học hỏi những điều mới, đồng thời giải thích và tư vấn cho người dùng một cách hiệu quả.
Khi nhắc đến "trí tuệ nhân tạo", chúng ta thường gặp các thuật ngữ như AI, Machine Learning và Deep Learning, những khái niệm này có mối quan hệ chặt chẽ với nhau, như được thể hiện trong hình ảnh minh họa.
Hình 2 2: Mối quan hệ giữa AI, Machine Learning và Deep Learning
Khi nói về 3 khái niệm trên ta có thể hiểu một cách đơn giản:
Trí tuệ nhân tạo (AI): một cỗ máy có thể bắt chước hành vi và tư duy của con người
Học máy (machine learning): Một tính năng của AI, cho phép các chuyên gia đào tạo cho AI để nó nhận biết các mẫu dữ liệu và dự đoán
Học sâu (deep learning): Một kỹ thuật nhỏ của machine learning, cho phép máy có thể tự đào tạo chính mình ĐỒ ÁN TỐT NGHIỆP 9
Học máy (Machine learning) là một nhánh của trí tuệ nhân tạo (AI), với mục tiêu giúp máy tính trở nên thông minh như con người Theo Arthur Samuel, machine learning được định nghĩa là khả năng tự học của máy mà không cần lập trình Cụ thể, nó liên quan đến việc cải thiện hiệu suất của máy tính qua nhiều lần thực hiện nhiệm vụ Khả năng cơ bản của machine learning là sử dụng thuật toán để phân tích dữ liệu, học hỏi từ đó và đưa ra quyết định hoặc dự đoán Thay vì lập trình chi tiết cho từng hành động, máy tính được "huấn luyện" bằng cách sử dụng dữ liệu và thuật toán để tự động thực hiện nhiệm vụ.
Nếu không có machine learning, AI hiện tại sẽ bị hạn chế khá nhiều vì nó cung cấp sức mạnh cho máy tính để tìm ra mọi thứ mà không được lập trình rõ ràng Một ví dụ về ứng dụng của machine learning là chương trình nhận dạng khuôn mặt trong ảnh Để thực hiện điều này, cần cung cấp cho AI một tập hợp các đặc điểm nhận dạng khuôn mặt, chẳng hạn như hình dáng, kích thước Sau đó, cung cấp một số hình ảnh đã được dán nhãn với tên của khuôn mặt cần nhận dạng, giúp AI học hỏi và tìm ra khuôn mặt đó trong các hình ảnh mới.
Deep learning là một dạng machine learning sử dụng mạng thần kinh sâu để xử lý dữ liệu tương tự như cách mà bộ não con người hoạt động Điểm khác biệt chính là con người không cần phải dạy cho chương trình deep learning nhận diện khuôn mặt, mà chỉ cần cung cấp đủ hình ảnh về khuôn mặt đó Thuật toán sẽ phân tích các đặc điểm chung giữa các bức ảnh, từ các hình dạng lớn đến các chi tiết nhỏ hơn Nếu một hình dạng hoặc đường nét xuất hiện nhiều lần, thuật toán sẽ đánh dấu nó là một đặc tính quan trọng Sau khi phân tích đủ hình ảnh, thuật toán sẽ xác định các mẫu rõ ràng nhất của khuôn mặt, và nhiệm vụ của con người chỉ là cung cấp dữ liệu thô Deep learning yêu cầu nhiều dữ liệu đầu vào và sức mạnh tính toán lớn hơn so với machine learning.
2.3 Thuật toán rút trích đặc trưng LBP (Local Binary Pattern)
LBP, hay Local Binary Pattern, được giới thiệu bởi Ojala vào năm 1996 như một phương pháp đo độ tương phản cục bộ trong ảnh Phiên bản đầu tiên của LBP sử dụng 8 điểm ảnh xung quanh và lấy giá trị của điểm ảnh trung tâm làm ngưỡng Giá trị LBP được tính bằng cách nhân các giá trị ngưỡng với trọng số tương ứng của từng điểm ảnh và sau đó cộng lại Hình ảnh minh họa cách tính độ tương phản trực giao (C) dựa trên sự chênh lệch giữa mức độ xám trung bình của các điểm ảnh lớn hơn hoặc bằng ngưỡng so với các điểm ảnh thấp hơn ngưỡng.
Kể từ khi ra đời, phương pháp này được định nghĩa là bất biến với những thay đổi đơn điệu trong ảnh đen trắng Để cải tiến, phương pháp tương phản trực giao địa phương đã được bổ sung Hình dưới đây minh họa cách tính độ tương phản trực giao (C), được xác định bởi mức xám trung bình của các điểm ảnh lớn hơn hoặc bằng ngưỡng so với các điểm ảnh thấp hơn ngưỡng Phân phối hai chiều của mã LBP và độ tương phản cục bộ được sử dụng làm đặc trưng, gọi là LBP/C.
Local Binary Pattern (LBP) là một thuật toán quan trọng trong việc mô tả cấu trúc bề mặt của hình ảnh Ý tưởng cốt lõi của LBP là phân tích cấu trúc cục bộ bằng cách so sánh giá trị của mỗi pixel với các pixel lân cận Cụ thể, một pixel được chọn làm trung tâm và sẽ được so sánh với các pixel xung quanh; nếu giá trị pixel trung tâm lớn hơn hoặc bằng pixel lân cận, nó sẽ được gán giá trị 1, ngược lại sẽ là 0 Ví dụ, khi xem xét 8 pixel lân cận, LBP có thể tạo ra chuỗi nhị phân như 11001111, và để dễ dàng hơn trong việc xử lý, chuỗi này có thể được chuyển đổi thành giá trị thập phân, trong trường hợp này là 207.
Hình 2 3: Ví dụ về LBP và độ tương phản cục bộ C
Dãy LBP được Ojala trình bày vào năm 2002 Định nghĩa một cấu trúc điểm ảnh
T là một phân phối đại số của cấp độ xám của P +1 (P > 0) điểm ảnh
Màu sắc gc tương ứng với cấp độ xám của điểm ảnh trung tâm Ptt, trong khi gp (p = 0,…,1) đại diện cho P điểm ảnh xung quanh nằm trên đường tròn có bán kính R, với tâm là Ptt.
Hình 2 4: Tập hợp các điểm xung quanh Ptt
Không mất thông tin, có thể trừ gp đi một lượng là gc
T = t(gc,g0 – gc ,…,gp – gc) Giả sử sự sai số giữa gp và gc là độc lập với gc, ta có thể nhân tử hóa gc như sau:
T = t(gc)t(g0 - gc,…,gp-1 - gc) cho thấy rằng t(gc) biểu thị xu hướng độ sáng tối tổng thể của bức ảnh, không ảnh hưởng đến kết cấu cục bộ của ảnh Do đó, t(gc) có thể được xem xét một cách độc lập và không cần thiết phải giữ lại trong quá trình phân tích.
T~t((g0 – gc),…,(gp-1 – gc)) ĐỒ ÁN TỐT NGHIỆP 12
Mặc dù tính bất biến trái ngược với sự thay đổi của tỷ lệ xám của điểm ảnh, sự khác biệt vẫn bị ảnh hưởng bởi tỷ lệ Để đạt được đặc điểm bất biến trước mọi sự thay đổi của ảnh đen trắng, chỉ cần quan tâm đến dấu hiệu của độ lệch.
Trọng số 2p được dùng cho các hàm dấu, s(gp – gc) để chuyển sự khác biệt giữa các điểm ảnh bên cạnh về một giá trị duy nhất
Với P pixel thì có 2p giá trị LBPP,R trong khoảng [0,2p-1 ] nhưng để đơn giản ta có thể chọn một số giá trị trong 2p giá trị ký hiệu là: LBPP,R u2
Đặc trưng Haar – Like
Đặc trưng Haar-like, được giới thiệu bởi Viola và Jones, là một phương pháp quan trọng trong nhận dạng đối tượng trong ảnh số Nó bao gồm bốn đặc trưng cơ bản để xác định đối tượng, với mỗi đặc trưng là sự kết hợp của hai hoặc ba khối chữ nhật mang giá trị “đen” hoặc “trắng” Những khối chữ nhật này thể hiện mối quan hệ tương quan giữa các bộ phận trong ảnh, điều mà các giá trị pixel đơn lẻ không thể diễn đạt.
Hình 2 8: Đặc trưng theo cạnh
Hình 2 9: Đặc trưng theo đường
Hình 2 10: Đặc trưng theo xung quanh tâm
Hình 2 11: Đặc trưng theo đường chéo ĐỒ ÁN TỐT NGHIỆP 17
Giá trị của đặc trưng Haar-like được xác định dựa trên sự chênh lệch giữa tổng số pixel của các vùng đen và tổng số pixel của các vùng trắng.
Dưới đây là công thức tính giá trị đặc trưng Haar-like:
Để tính giá trị đặc trưng Haar-like, cần thực hiện tính toán tổng các vùng pixel trên ảnh, điều này làm tăng chi phí tính toán và không đáp ứng được yêu cầu thời gian thực Để giải quyết vấn đề này, Viola và Jones đã giới thiệu khái niệm “Integral Image”, giúp giảm thiểu chi phí tính toán cho đặc trưng Haar-like Tính “Integral Image” được thực hiện bằng cách sử dụng mảng 2 chiều có kích thước tương ứng với ảnh cần tính Giá trị tại vị trí (x, y) được tính bằng tổng các giá trị pixel từ vị trí (0,0) đến (x−1, y−1), cho phép tối ưu hóa tốc độ thực hiện thông qua phép cộng số nguyên đơn giản.
Hình 2 12: Cách tính Integral Image của ảnh
𝑃(𝑥, 𝑦) = ∑ 𝑥 ′ ≤𝑥 , 𝑦′≤𝑦𝑖(𝑥 ′ , 𝑦′) Kết quả có được sau khi tính Integral Image, việc tính tổng giá trị pixel trong vùng cần tính thực hiện như sau:
Gọi vùng cần tính tổng các giá trị pixel là vùng “A4”
Ta được: 𝐴4 = 𝑃4 + 𝑃1 − 𝑃2 − 𝑃3 ĐỒ ÁN TỐT NGHIỆP 18
Hình 2 13: Cách tính tổng giá trị pixel vùng cần tính
Giải thuật AdaBoost
AdaBoost là một bộ phân loại phi tuyến mạnh mẽ, được phát triển từ phương pháp boosting bởi Freund và Schapire vào năm 1995 Phương pháp này kết hợp các "weak classifiers" theo cách tuyến tính để tạo ra một "strong classifier" hiệu quả.
AdaBoost là một cải tiến của phương pháp boosting, sử dụng trọng số để đánh dấu các mẫu khó nhận dạng Trong quá trình huấn luyện, mỗi "weak classifier" được xây dựng sẽ cập nhật lại trọng số: tăng trọng số cho các mẫu bị nhận dạng sai và giảm cho các mẫu nhận dạng đúng Nhờ đó, "weak classifier" tiếp theo có thể tập trung vào những mẫu mà các "weak classifiers" trước đó chưa xử lý tốt Cuối cùng, các "weak classifiers" sẽ được kết hợp theo hiệu suất của chúng để tạo ra một "strong classifier".
Viola và Jones đã phát triển một phương pháp sử dụng AdaBoost để kết hợp các bộ phân loại yếu, dựa trên các đặc trưng Haar-like Phương pháp này được tổ chức theo mô hình phân tầng (cascade), giúp nâng cao hiệu suất trong việc nhận diện đối tượng.
Hình 2 14: Mô hình phân tầng kết hợp các bộ phân loại yếu
Hình 2 15: Sơ đồ nhận diện khuôn mặt
Hệ thống xử lý ảnh bắt đầu bằng cách chia ảnh gốc thành nhiều tỉ lệ nhỏ để tính toán các đặc trưng qua hàm Haar-like Sau khi thu được một lượng lớn đặc trưng, thuật toán Adaboost được sử dụng để chọn lọc và kết hợp các vùng trọng số yếu thành trọng số mạnh Cuối cùng, các vùng đã được chọn sẽ được đưa vào 20 bộ phân loại trong “Cascade of classifier” để loại bỏ các vùng không phải khuôn mặt và xác định chính xác khuôn mặt, từ đó đưa ra kết quả cuối cùng.
Ngôn ngữ lập trình Python
2.5.1 Giới thiệu về ngôn ngữ lập trình Python[4]
Python là ngôn ngữ lập trình bậc cao, hướng đối tượng, được sử dụng rộng rãi trong phát triển website và nhiều ứng dụng khác Được sáng lập bởi Guido van Rossum, Python phát triển thông qua dự án mã nguồn mở.
Python là một ngôn ngữ lập trình mạnh mẽ với cấu trúc dữ liệu cấp cao và cách tiếp cận đơn giản, hiệu quả cho lập trình hướng đối tượng Cú pháp rõ ràng và dễ hiểu của Python, cùng với tính linh hoạt trong việc gõ lệnh, giúp ngôn ngữ này nhanh chóng trở thành lựa chọn lý tưởng cho việc viết script và phát triển ứng dụng trên nhiều nền tảng khác nhau.
Các tính năng chính của Python
Python là một ngôn ngữ lập trình đơn giản và dễ học, với cú pháp rõ ràng và dễ đọc So với các ngôn ngữ lập trình khác như C++, Java hay C#, Python giúp người dùng dễ dàng viết mã hơn Điều này làm cho quá trình lập trình trở nên thú vị hơn, cho phép lập trình viên tập trung vào việc tìm kiếm giải pháp thay vì lo lắng về cú pháp.
Phần mềm Python hoàn toàn miễn phí và mã nguồn mở, cho phép người dùng không chỉ sử dụng mà còn tùy chỉnh mã nguồn theo nhu cầu của mình.
Python có khả năng di chuyển linh hoạt giữa các nền tảng khác nhau mà không cần thay đổi mã nguồn Chương trình Python có thể hoạt động mượt mà trên hầu hết các hệ điều hành như Windows, macOS và Linux.
✓ Khả năng mở rộng và có thể nhúng: Bạn có thể kết hợp các phần code bằng C,
C++ và những ngôn ngữ khác vào code Python
Ngôn ngữ Python là một ngôn ngữ thông dịch cấp cao, cho phép lập trình viên không phải lo lắng về các nhiệm vụ phức tạp như quản lý bộ nhớ hay dọn dẹp dữ liệu không cần thiết Khi chạy mã Python, ngôn ngữ này tự động chuyển đổi mã thành ngôn ngữ máy tính, giúp người dùng tập trung vào việc phát triển ứng dụng mà không cần quan tâm đến các hoạt động ở cấp thấp.
Python sở hữu một kho thư viện tiêu chuẩn phong phú, giúp công việc lập trình trở nên dễ dàng hơn Nhờ vào sự hỗ trợ từ các thư viện này, lập trình viên không cần phải viết toàn bộ mã từ đầu, tiết kiệm thời gian và công sức.
Lập trình hướng đối tượng (OOP) trong Python cho phép người dùng giải quyết các vấn đề phức tạp một cách trực quan bằng cách chia nhỏ chúng thành những phần dễ quản lý hơn thông qua việc tạo ra các đối tượng Tất cả mọi thứ trong Python đều mang tính chất hướng đối tượng, giúp tối ưu hóa quá trình lập trình và tăng cường khả năng tái sử dụng mã nguồn.
2.5.2 Giới thiệu thư viện OpenCV [4]
OpenCV, or Open Source Computer Vision, is a free and open-source library released under the BSD license, making it accessible for both academic and commercial use It offers interfaces in C++, C, Python, and Java, and is compatible with Windows, Linux, and Mac operating systems.
OS, iOS và Android ĐỒ ÁN TỐT NGHIỆP 22
OpenCV được phát triển để tối ưu hóa hiệu suất và tập trung vào các ứng dụng thời gian thực, sử dụng ngôn ngữ C/C++ để tận dụng xử lý đa lõi Với hơn 47.000 người dùng và hơn 6 triệu lượt tải, OpenCV đã trở thành một công cụ phổ biến trên toàn cầu Thư viện này được áp dụng trong nhiều lĩnh vực, từ nghệ thuật tương tác đến khai thác mỏ, bản đồ trên web và công nghệ robot OpenCV hiện đang được sử dụng rộng rãi trong nhiều ứng dụng khác nhau.
✓ Kiểm tra và Giám sát tự động
✓ Robot và xe hơi tự lái
✓ Phân tích hình ảnh y tế
✓ Tìm kiếm và phục hồi Hình ảnh/Video
✓ Phim – cấu trúc 3D tự chuyển động
✓ Nghệ thuật sắp đặt tương tác
2.5.3 Giới thiệu thư viện Tkinter
Tkinter là bộ công cụ widget mã nguồn mở, đa nền tảng, giúp các nhà phát triển tạo giao diện người dùng (GUI) cơ bản thông qua phát triển dựa trên widget Được phát hành lần đầu vào năm 1991, Tkinter có thư viện gốc viết bằng C và đã hỗ trợ nhiều ngôn ngữ lập trình khác nhau như Haskell, Ruby, Perl và Python.
Tkinter là thư viện kết nối Python với Tk, được sử dụng phổ biến để tạo giao diện người dùng (GUI) bằng Python Mặc dù Tkinter là tiêu chuẩn trong lĩnh vực này, còn nhiều lựa chọn thay thế khác như PyQt, PySide, PyGame, wxPython và PyGTK.
✓ Cửa sổ: Khu vực hình chữ nhật chung được hiển thị trên màn hình của người dùng, tất cả các thành phần khác được đặt trong Cửa sổ
Khung là một khu vực hình chữ nhật, được sử dụng để phân chia cửa sổ trong các bố cục phức tạp, và được xem là widget cơ bản nhất trong thiết kế giao diện.
✓ Widget: Một thuật ngữ chung cho bất kỳ khối xây dựng nào tạo nên GUI ĐỒ ÁN TỐT NGHIỆP 23
2.5.4 Đọc mã Barcode, QR Code
2.5.4.1 Tổng quan mã vạch và mã QR code
Mã Barcode: mã hóa, biểu diễn dữ liệu bằng các vạch đen và vạch trắng có độ rộng khác nhau tùy theo từng bảng mã
Một số chuẩn phổ biến: UPC, Code 39, Code 128, EAN-8, EAN-13,…
Hình 2 18: Mã Barcode với MSSV: 16141251
Mã QR Code (Quick Response Code) là một loại mã vạch hai chiều, có khả năng lưu trữ đa dạng các ký tự như số, chữ cái và ký tự Kanji trong tiếng Nhật Để tìm hiểu chi tiết, bạn có thể tham khảo tiêu chuẩn mã QR phổ biến nhất theo chuẩn ISO18004.
QR code có nhiều ưu điểm vượt trội so với mã Barcode như khả năng lưu trữ được lượng dữ liệu lớn, khả năng tự sửa lỗi [10]
Mã QR Code với MSSV: 16141251 chứa các thông tin quan trọng cho việc dò tìm, nhận dạng và giải mã Một trong những thông tin đáng chú ý là ĐỒ ÁN TỐT NGHIỆP 24.
Hình 2 20: Format định dạng cho mã QR Code
✓ Position Detection Patterns: giúp nhận diện vùng chứa mã QR code
✓ Format Information & Version Information: nhận diện phiên bản và format chuẩn để giải mã
✓ Timing Patterns: canh khung để tách các vùng dữ liệu và mã sửa lỗi
✓ Alignment Patterns: giúp căn chỉnh, hiệu chỉnh mã QR code trong các trường hợp bị xoay, méo
✓ Data and Error Correction Codewords: chứa dữ liệu và các mã sửa lỗi
THIẾT KẾ HỆ THỐNG
Giới thiệu
Để giảm thiểu sai sót trong quá trình thi công mô hình theo ý tưởng đã đề ra, việc tính toán và thiết kế là rất cần thiết Đề tài “Thiết kế và thi công hệ thống điểm danh bằng nhận diện khuôn mặt kết hợp mã QR và mã vạch trên Raspberry Pi 4” nhằm mục tiêu nhận dạng và điểm danh khuôn mặt Thiết kế sẽ bao gồm những bước cụ thể để thực hiện hiệu quả hệ thống này.
- Thiết kế sơ đồ khối của hệ thống
- Tính toán, thiết kế từng khối của hệ thống:
+ Khối lập trình và xử lý dữ liệu đầu vào
+ Các thiết bị ngoại vi khác: chuột, bàn phím,…
Hình 3 1: Sơ đồ khối hệ thống
Khối nguồn có vai trò cung cấp điện và dòng cho các khối khác, đảm bảo hoạt động ổn định và ngăn chặn hiện tượng sụt áp.
Khối xử lý trung tâm nhận tín hiệu từ các khối khác, xử lý tín hiệu và hình ảnh, sau đó thực hiện các điều khiển theo chương trình đã được lập trình Kết quả được truyền đến khối ngõ ra và hiển thị trên khối hiển thị.
Khối hiển thị: Hiển thị thông tin, giao tiếp với người sử dụng ĐỒ ÁN TỐT NGHIỆP 27
Khối xử lý ảnh có nhiệm vụ thu thập tín hiệu hình ảnh từ thực tế, chuyển đổi chúng thành dữ liệu và gửi đến khối xử lý trung tâm.
Chọn và giới thiệu từng loại linh kiện của từng khối
Để hệ thống nhận dạng khuôn mặt hoạt động hiệu quả, cần lựa chọn camera có khả năng chụp ảnh màu và độ phân giải cao Để duy trì chất lượng hình ảnh ổn định bất chấp tác động từ môi trường bên ngoài, bên trong khối xử lý ảnh cần được trang bị một nguồn sáng không đổi, giúp quá trình thu thập và xử lý ảnh diễn ra một cách ổn định.
Dựa vào yêu cầu trên ta chọn Webcam Logitech C270
Hình 3 2: Hình ảnh Webcam Logitech C270
Webcam Logitech C270 cung cấp video chất lượng cao với độ phân giải lên đến 1280 x 720 pixel và tốc độ 30 khung hình/giây, mang lại hình ảnh mượt mà và sắc nét Công nghệ RightLight giúp webcam điều chỉnh ánh sáng, tạo ra hình ảnh tươi sáng và có độ tương phản tốt ngay cả trong điều kiện ánh sáng yếu Bên cạnh đó, micrô tích hợp với công nghệ RightSound đáp ứng nhu cầu chat voice hiệu quả Thiết kế nhỏ gọn, linh hoạt và dễ dàng kết nối qua USB, C270 là lựa chọn hoàn hảo cho việc giao tiếp trực tuyến.
+ Độ phân giải tối đa: 720p/30fps
+ Loại tiêu cự: Lấy nét cố định
+ Công nghệ thấu kính: tiêu chuẩn
+ Micrô tích hợp: đơn âm
+ Kẹp phổ dụng phù hợp với máy tính xách tay, LCD hoặc màn hình
❖ Phần mềm: Python 3.7 và thư viện OpenCV
3.2.2 Khối xử lý trung tâm
Hệ thống yêu cầu một bộ điều khiển mạnh mẽ để xử lý hình ảnh và chạy chương trình huấn luyện mạng nơ-ron nhằm nhận dạng khuôn mặt chính xác Điều này đòi hỏi vi điều khiển phải có bộ nhớ lớn và tốc độ xử lý tương đương với các dòng PC Laptop tầm trung hiện nay.
Hiện nay, trên thị trường Raspberry được khá ưa chuộng trong lĩnh vực điều khiển (giống một máy tính thu nhỏ) vì những ưu điểm sau:
+ Tốc độ xử lí nhanh, GPU mạnh
+ Tích hợp với các module có sẵn như camera, màn hình
+ Có thể hoạt động liên tục không ngừng nghỉ
+ Dễ tiếp cận và làm việc
Dựa vào yêu cầu trên, ta chọn bộ điều khiển Raspberry Pi 4 Model B với những tính năng vượt trội hơn so với dòng raspberry cũ:
+ Tốc độ xử lí RAM nhanh gấp nhiều lần so với dòng cũ
+ Tích hợp các module mới như: Ethernet, Audio, USB, HDMI,…
+ Hỗ trợ bộ nhớ cao giúp lưu trữ dữ liệu
+ Giá thành rẽ và nhỏ gọn
+ Tiêu thụ năng lượng thấp giúp tiết kiệm điện ĐỒ ÁN TỐT NGHIỆP 29
* Tổng quan và Raspberry Pi:
Raspberry Pi được ra mắt lần đầu vào năm 2012, ban đầu là một thẻ card cắm trên bo mạch máy tính do các nhà phát triển tại Anh thiết kế Sau đó, Raspberry Pi đã được phát triển thành một bo mạch đơn, hoạt động như một máy tính mini phục vụ cho việc giảng dạy tại các trường trung học Dự án này được thực hiện bởi Raspberry Pi Foundation, một tổ chức phi lợi nhuận với mục tiêu xây dựng hệ thống dễ tiếp cận cho nhiều người, phục vụ cho các công việc tùy biến khác nhau.
Pi sản xuất bởi 3 OEM: Sony,Qsida, Egoman Và được phân phối chính bởi Element14,
Mặc dù không nhanh bằng các dòng laptop hiện đại, Raspberry Pi vẫn được coi là một máy tính Linux hoàn chỉnh với khả năng đáp ứng nhu cầu người dùng và tiêu thụ năng lượng thấp Qua nhiều phiên bản, mỗi phiên bản đều có sự cải tiến đáng kể Hiện tại, Raspberry Pi Foundation đã giới thiệu phiên bản mới nhất, Raspberry Pi 4 Model B, được tối ưu hóa với nhiều tính năng hấp dẫn cho người sử dụng.
Hình 3 3: Raspberry Pi 4 model B thực tế
* Giới thiệu về Raspberry Pi 4 Model B:
Raspberry Pi 4 Model B, ra mắt vào tháng 6 năm 2019, là thế hệ thứ 4 và mới nhất của hệ thống Raspberry Pi Phiên bản này có nhiều cải tiến đáng kể về cấu hình, bao gồm 10 phần chính, mang lại hiệu suất tốt hơn cho người dùng.
Chip SOC Broadcom BCM 2711 hoạt động với tốc độ 1.5 GHz, mang lại sự nâng cấp đáng kể so với các thế hệ trước Chip này tương đương với nhiều loại chip được sử dụng trong smartphone phổ thông hiện nay và hỗ trợ hệ điều hành Linux Đặc biệt, chip tích hợp GPU Broadcom VideoCore VI 500MHz, đủ mạnh để chơi một số game phổ thông và phát video chuẩn full HD hoặc 4K.
Raspberry Pi 40 ngõ GPIO (General Purpose Input Output) tương tự như phiên bản Pi 3B, cho phép xuất tín hiệu cho LED và thiết bị khác, cũng như đọc tín hiệu từ nút nhấn, công tắc và cảm biến Ngoài ra, các IO này còn tích hợp các chuẩn truyền dữ liệu như UART, I2C và SPI.
Cổng HDMI: Dùng để kết nối Pi với màn hình máy tính hay tivi Pi 4 Model B trang bị hai cổng Micro HDMI
Cổng DSI (Display Serial Interface): Cổng này dùng để kết nối với LCD hoặc màn hình OLED
Ngõ audio 3.5mm cho phép kết nối dễ dàng với loa ngoài hoặc headphone Đối với tivi có cổng HDMI, âm thanh được truyền tải qua tín hiệu HDMI, do đó không cần sử dụng ngõ audio 3.5mm.
Cổng USB: Một khác biệt của Pi 4 là tích hợp 2 cổng USB 3.0 và 2 cổng USB 2.0 Đủ để cắm các ngoại vi cần thiết như chuột, bàn phím,
Cổng Ethernet giúp kết nối Internet một cách dễ dàng; chỉ cần cắm dây mạng vào Raspberry Pi và kết nối với màn hình máy tính hoặc tivi cùng với bàn phím và chuột, bạn có thể lướt web một cách thuận tiện.
Raspberry Pi không có ổ cứng mà sử dụng thẻ nhớ SD để lưu trữ dữ liệu Hệ điều hành Linux sẽ hoạt động hoàn toàn trên thẻ SD, vì vậy kích thước tối thiểu của thẻ nhớ cần phải là 4GB.
Cổng CSI (Camera Serial Interface) được sử dụng để kết nối với module camera riêng của Raspberry Pi, cho phép thu được hình ảnh chất lượng lên đến 1080p Ngoài ra, thiết bị còn hỗ trợ jack nguồn micro USB 5V, 3A, đảm bảo hiệu suất hoạt động ổn định.
Raspberry Pi 4 nổi bật
Hình 3 4: Các cổng giao tiếp ngoại vi Raspberry Pi 4 Model B, RAM 4GB
Để tối ưu hóa khối hiển thị trong hệ thống, việc nghiên cứu cần đảm bảo khả năng giao tiếp và lập trình dễ dàng với Raspberry Khối hiển thị màn hình tích hợp sẵn trong Raspberry không chỉ giúp hệ thống trở nên tiện dụng mà còn nhỏ gọn, đồng thời có khả năng thu nhận tín hiệu từ khối xử lý.
Nhóm thực hiện đã quyết định lựa chọn màn hình cảm ứng điện dung kích thước 7 inch, sử dụng công nghệ LCD 7″ HDMI với tấm nền IPS Sản phẩm này được nhập khẩu chính hãng từ nhà cung cấp linh kiện máy tính nổi tiếng thế giới.
Cài đặt hệ điều hành cho Raspberry Pi 4
3.3.1 Thiết bị cần đề cài đặt
• Thẻ nhớ Micro SD dung lượng 32GB, class 10
• Đầu đọc thẻ nhớ Micro SD
3.3.2 Cài đặt hệ điều hành Raspian
Bước 1: Tải bản cài đặt về máy tính và giải nén ĐỒ ÁN TỐT NGHIỆP 37
Chúng ta vào trang www.raspberrypi.org và tải phiên bản mới nhất đó là hệ điều hành Raspbian Buster
Hình 3 10: Tải phiên bản Raspbian Buster mới nhất
Bước 2: Tải phần mềm SD Card Formatter và cài đặt
Chúng ta dùng phần mềm SD Card Formatter để định dạng thẻ nhớ SD Sau khi đã cài đặt hoàn thành, ta mở phần mềm và định dạng thẻ
Hình 3 11: Cài đặt phần mềm SD Card Formatter
Bước 3: Tải phần mềm win32diskimager và cài đặt
Sau khi tải và cài đặt thành công phần mềm Win32DiskImager, hãy mở phần mềm và chọn đường dẫn đến file hệ điều hành Raspbian Buster Tiếp theo, chọn Write và chờ đến khi thông báo "ĐỒ ÁN TỐT NGHIỆP 38" hoàn thành, điều này có nghĩa là hệ điều hành đã được cài đặt thành công vào thẻ nhớ Cuối cùng, gắn thẻ nhớ vào Raspberry Pi 4 để khởi động hệ điều hành.
Hình 3 12: Phần mềm Win32DiskImager.
Cài đặt thư viện cho Raspberry Pi 4
3.4.1 Cài đặt thư viện OpenCV
Bước 1: Mở rộng hệ thống tệp tin
Sau khi khởi động lại, cần mở rộng hệ thống tập tin để sử dụng toàn bộ không gian có sẵn trên thẻ nhớ micro-SD Để xác minh rằng đĩa đã được mở rộng thành công, hãy thực hiện lệnh df -h và kiểm tra kết quả đầu ra.
OpenCV và các phụ thuộc của nó yêu cầu một vài gigabyte không gian trong quá trình biên dịch, vì vậy bạn nên xóa các công cụ Wolfram để giải phóng dung lượng trên Raspberry Pi.
$ Sudo apt-get purge wolfram-engine ĐỒ ÁN TỐT NGHIỆP 39
Sau khi gỡ bỏ Wolfram Engine, có thể phục hồi gần 700MB
Bước 2: Những cài đặt ràng buộc
Sau đó chúng ta cần phải cài đặt một số công cụ phát triển, bao gồm cả CMake, giúp cấu hình quá trình xây dựng OpenCV:
$ sudo apt-get install build-essential cmake pkg-config
Để tải các định dạng tệp hình ảnh khác nhau từ đĩa, chúng ta cần cài đặt một số gói ảnh I/O Ví dụ về các định dạng tệp bao gồm JPEG, PNG, và TIFF.
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Cũng như các gói I/O hình ảnh, việc sử dụng các gói I/O video là cần thiết Những thư viện này cho phép người dùng đọc nhiều định dạng tệp video khác nhau từ đĩa và làm việc trực tiếp với các luồng video.
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
Thư viện OpenCV bao gồm một mô đun phụ gọi là highgui, có chức năng hiển thị hình ảnh trên màn hình và tạo ra các giao diện người dùng cơ bản Để biên dịch mô đun highgui, người dùng cần cài đặt thư viện phát triển GTK.
$ sudo apt-get install libgtk2.0-dev
Nhiều hoạt động trong OpenCV, đặc biệt là các thao tác liên quan đến ma trận, có thể được tối ưu hóa hiệu quả hơn khi cài đặt một số phụ thuộc nhất định.
$ sudo apt-get install libatlas-base-dev gfortran ĐỒ ÁN TỐT NGHIỆP 40
Những thư viện tối ưu hóa này rất quan trọng đối với các thiết bị hạn chế nguồn lực như Raspberry Pi
Cuối cùng, cài đặt Python 3.7 để biên dịch OpenCV với các ràng buộc Python:
$ sudo apt-get install python3.7-dev
Bước 3: Tải mã nguồn OpenCV
Bây giờ chúng ta cài đặt OpenCV 3.1.0 và giải nén:
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
Chúng ta sẽ tiến hành cài đặt OpenCV 3 đầy đủ để truy cập các tính năng như SIFT và SURF, đồng thời cần tải về tập tin chứa opencv_contrib.
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
Trước khi biên dịch OpenCV trên Raspberry Pi 4, chúng ta cần phải cài đặt pip, một trình quản lý gói Python:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
Cài đặt môi trường ảo là một bước quan trọng giúp quản lý các phụ thuộc của dự án Python một cách hiệu quả Môi trường ảo cho phép tạo ra các không gian độc lập cho từng dự án, giữ cho các yêu cầu không bị xung đột và dễ dàng quản lý Việc sử dụng môi trường ảo không chỉ tiện lợi mà còn cần thiết cho việc phát triển phần mềm.
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~ / cache / pip ĐỒ ÁN TỐT NGHIỆP 41
Mở một thiết bị đầu cuối mới
Tiếp theo, chúng ta hãy tạo ra môi trường ảo Python mà chúng ta sẽ sử dụng để phát triển tầm nhìn máy tính:
Lệnh này sẽ tạo một môi trường ảo Python mới có tên cv bằng Python 3.7
Môi trường ảo CV Python hoàn toàn độc lập với phiên bản Python mặc định của Raspbian Buster, giúp tránh nhầm lẫn Các gói Python trong thư mục gói toàn cầu sẽ không khả dụng cho môi trường ảo CV, và ngược lại, gói Python cài đặt trong môi trường ảo CV cũng không thể sử dụng cho cài đặt toàn cầu.
Cài đặt NumPy trên Raspberry Pi
Cài đặt NumPy trong môi trường ảo cv:
Bước 5: Biên dịch và cài đặt OpenCV
Một khi đảm bảo rằng đang ở trong môi trường ảo cv, chúng ta thiết lập xây dựng bằng cách sử dụng CMake:
$ cmake -D CMAKE_BUILD_TYPE = RELEASE \
-D CMAKE_INSTALL_PREFIX = / usr / local \
-D OPENCV_EXTRA_MODULES_PATH = ~ / opencv_contrib-3.1.0 / modules \ -D BUILD_EXAMPLES = ON ĐỒ ÁN TỐT NGHIỆP 42
Cuối cùng, chúng ta biên dịch OpenCV:
- D CMAKE_INSTALL_PREFIX = / usr / local \
- D OPENCV_EXTRA_MODULES_PATH = ~ / opencv_contrib-3.1.0 / modules \
Cuối cùng, chúng ta biên dịch OpenCV:
Bước 5 kết thúc mà không có lỗi, OpenCV nên được cài đặt trong / usr/local/lib/python2.7/site-pacakges, xác minh điều này bằng lệnh ls:
$ ls -l /usr/local/lib/python2.7/site-packages/ total 1852
-rw-r r 1 root staff 1895772 Mar 20 20:00 cv2.so
Cuối cùng là liên kết OpenCV vào môi trường ảo cv cho Python 3.7:
$ cd ~ / virtualenvs / cv / lib / python2.7 / site-packages /
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
Bước 6: Kiểm tra cài đặt OpenCV 3
Mở một thiết bị đầu cuối mới, thực hiện lệnh nguồn và workon, và cuối cùng là cố gắng nhập các ràng buộc Python + OpenCV:
3.4.2 Cài đặt thư viện Pyzbar Đầu tiên, chúng ta cần Download mã nguồn thư viện zbar tại mã nguồn: http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download (Phiên bản hiện tại là 0.10)
Tiếp theo, chúng ta tiến hành giải nén file mã nguồn, chuyển đường dẫn tới thư mục chứa mã nguồn và tiến hành biên dịch thư viện này:
/configure without-qt without-gtk without-python without- imagemagick make sudo make install
/configure without-qt without-gtk without-python without- imagemagick CC=arm-linux-gcc host=arm-linux prefix=/opt/zbar.arm - -with-x=no make sudo make install
Sau khi hoàn tất quá trình biên dịch, hãy sao chép các tệp trong thư mục /opt/zbar.arm/include vào thư mục /usr/include và các tệp trong thư mục /opt/zbar.arm/lib vào thư mục /usr/lib trên KIT.
3.4.3 Cài đặt thư viện Pandas Để cài đặt thư viện Pandas:
✓ Đối với Windown: Chúng ta vào Command gõ: pip install pandas
✓ Đối với Raspian: Chúng ta vào Terminal gõ: sudo apt-get install pandas
Sau khi cài đặt xong, bạn cần khai báo `import pandas` trong Python để sử dụng các hàm của thư viện này Thường thì, để tiết kiệm thời gian, người dùng thường viết gọn là `import pandas as pd` Mặc dù bạn có thể thay thế `pd` bằng các từ khác, nhưng nên giữ nguyên để dễ dàng theo dõi tài liệu hướng dẫn, vì đây là quy ước chung.
3.4.4 Thiết kế hộp chứa linh kiện hệ thống
Hệ thống điểm danh sinh viên dùng Raspberry Pi 4 gồm các thiết bị chính như Pi
Nhóm thực hiện đã phát triển một hệ thống thiết kế hiện đại với màn hình cảm ứng, camera và các thiết bị ngoại vi khác, nhằm tạo ra một giải pháp cố định, dễ dàng kết nối và đạt tính thẩm mỹ cao Ý tưởng thiết kế hộp chứa kết hợp với giá đỡ di động mang lại sự tiện lợi tối ưu cho người dùng.
Hình 3 13: Mô phỏng vị trí Pi 4 và camera ĐỒ ÁN TỐT NGHIỆP 45
Hình 3 14: Thiết kế hộp chứa và kết nối thiết bị hoàn chỉnh
Hình 3 15: Xuất file cắt mica ĐỒ ÁN TỐT NGHIỆP 46