Tiêu đề: Điều Chỉnh Kích Thước Chữ Phù Hợp với Mắt Dựa vào Xác Định Khoảng Cách giữa Mắt và Camera Mô tả: Ứng dụng Điều Chỉnh Kích Thước Chữ Phù Hợp là một ứng dụng sáng tạo giúp tối ưu hóa trải nghiệm đọc cho người dùng, bằng cách điều chỉnh kích thước của văn bản hiển thị dựa trên khoảng cách giữa mắt và camera. Bằng cách sử dụng công nghệ xử lý ảnh và máy học, ứng dụng này cung cấp một phương tiện độc đáo để cải thiện khả năng đọc của người dùng trên các thiết bị di động và máy tính cá nhân. Chức Năng Chính: Xác Định Khoảng Cách: Ứng dụng sử dụng camera trên thiết bị để xác định khoảng cách hiện tại giữa mắt của người dùng và màn hình. Điều này được thực hiện thông qua việc phân tích hình ảnh và đánh giá các đặc trưng không gian của khuôn mặt. Điều Chỉnh Kích Thước Chữ: Dựa trên dữ liệu về khoảng cách đã xác định, ứng dụng điều chỉnh kích thước của văn bản hiển thị trên màn hình. Nó tăng kích thước chữ khi khoảng cách giảm và giảm kích thước chữ khi khoảng cách tăng, nhằm đảm bảo rằng văn bản luôn đủ lớn để đọc một cách thoải mái. Tuỳ Chỉnh và Tùy Biến: Người dùng có thể tuỳ chỉnh các thiết lập để điều chỉnh cách thức ứng dụng phản hồi với các thay đổi trong khoảng cách hoặc tuỳ chỉnh kích thước chữ theo sở thích cá nhân. Giao Diện Thân Thiện: Giao diện người dùng thân thiện và dễ sử dụng, với các tùy chọn cấu hình rõ ràng và hướng dẫn đơn giản, giúp người dùng dễ dàng tận dụng các tính năng của ứng dụng. Công Nghệ và Công Cụ: Sử dụng ngôn ngữ lập trình Python và thư viện xử lý ảnh như OpenCV để xác định kích thước khuôn mặt và khoảng cách từ camera. Áp dụng các kỹ thuật máy học và học sâu để dự đoán và điều chỉnh kích thước chữ dựa trên dữ liệu từ camera. Tương tác với API hoặc framework giao diện người dùng để hiển thị văn bản với kích thước phù hợp. Ứng dụng này sẽ là một công cụ hữu ích cho những người dùng muốn có trải nghiệm đọc thoải mái và tiện lợi trên các thiết bị di động và máy tính cá nhân, đặc biệt là khi sử dụng trong các điều kiện ánh sáng và khoảng cách thay đổi.
KHOA ĐIỆN – ĐIỆN TỬ NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA BÁO CÁO CUỐI KỲ ĐỀ TÀI ĐIỀU CHỈNH CỠ CHỮ PHÙ HỢP VỚI MẮT DỰA VÀO XÁC ĐỊNH KHOẢNG CÁCH GIỮA MẮT VÀ CAMERA NHÓM 04: TRẦN THÀNH ĐĂNG 21151217 NGÔ XUÂN THỨC 21151360 VÕ VĂN TỊNH 2115167 GVHD: TS NGUYỄN VĂN THÁI Tp Hồ Chí Minh, tháng 06 năm 2023 Nhận xét giảng viên …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Chữ Ký Giảng Viên Y MỤC LỤC YI PHẦN MỞ Đ 1.1 Lý chọn đề tài .2 1.2 Mục tiêu nghiên cứu 1.3 Phương pháp nghiên cứu II QUY TRÌNH THỰC HIỆN 2.1 Tìm xác định khuôn mặt 2.1.1 Thư viện Mediapipe 2.1.2 Mô hình FaceMesh 2.2 Xác định khoảng cách từ mắt người đến camera 2.3 Thay đổi kích cỡ chữ 2.4 Lập trình kết .8 2.4.1 Lập trình 2.4.2 Kết 13 III KẾT LUẬN 15 3.1 Kết thực 15 3.2 Hướng phát triển đề tài 15 LỜI CẢM ƠN Đây đề tài nghiên cứu chúng em học mơn Xử lí ảnh, với kiến thức lĩnh hội, chúng em áp dụng vào đề tài Trong trình thực đề tài, nhận giúp đỡ, ủng hộ nhiều từ phía thầy cơ, gia đình bạn bè Qua đó, chúng em xin gửi lời cảm ơn sâu sắc đến người hỗ trợ chúng em hoàn thành đồ án này, đặc biệt thầy T.S Nguyễn Văn Thái, thầy người theo dõi, hướng dẫn, bảo tận tình suốt trình nhóm em thực đề tài Thầy dạy dỗ, trau dồi cung cấp kiến thức, kỹ cần thiết để chúng em hoàn thành tốt đề tài Gia đình bạn bè, người động viên, khích lệ, cổ vũ để chúng em có thêm động lực học tập làm việc Trong đề tài chắn cịn nhiều thiếu sót, mong nhận đóng góp quý báu từ phía q Thầy Cơ bạn đọc để đề tài hoàn thiện I PHẦN MỞ ĐẦU 1.1 Lý chọn đề tài Kích thước chữ hiển thị hình có ảnh hưởng đáng kể đến trải nghiệm người dùng Khi kích thước chữ khơng phù hợp, người dùng gặp khó khăn việc đọc nhận biết thơng tin Bằng cách điều chỉnh cỡ chữ phù hợp với mắt dựa vào khoảng cách mắt camera, đề tài giúp cải thiện trải nghiệm người dùng làm cho việc đọc hình trở nên dễ dàng thoải mái Một kích thước chữ phù hợp giúp tối ưu hóa độ phân giải hình Khi kích thước chữ q nhỏ, người dùng gặp khó khăn việc đọc nhìn rõ chi tiết Ngược lại, kích thước chữ q lớn, khơng gian hình bị lãng phí thơng tin bị che khuất Đề tài giúp điều chỉnh cỡ chữ cho phù hợp, tối ưu hóa độ phân giải hiển thị thơng tin cách rõ ràng dễ nhìn I.2 Mục tiêu nghiên cứu Xác định đo lường khoảng cách mắt camera: Mục tiêu sử dụng phương pháp computer vision xử lý ảnh để xác định khoảng cách xác mắt người dùng camera Việc thực cách sử dụng công cụ thuật tốn nhận diện khn mặt để tìm kiếm xác định điểm đặc trưng khuôn mặt, từ tính tốn khoảng cách mắt camera Điều chỉnh cỡ chữ dựa vào khoảng cách mắt camera: Mục tiêu sử dụng thông tin khoảng cách xác định để điều chỉnh kích thước chữ hình Phương pháp điều chỉnh cỡ chữ dựa tỷ lệ tương quan khoảng cách kích thước chữ, cho người dùng dễ dàng đọc nhìn rõ thơng tin hình 1.3 Phương pháp nghiên cứu Sử dụng phương pháp thực nghiệm khoa học: Là phương pháp nhà khoa học chủ động tác động vào đối tượng trình diễn biến kiện mà đối tượng tham gia để hướng phát triển chúng theo tham vọng dự kiến Sử dụng phương pháp nghiên cứu lý thuyết: Là phương pháp thu thập thông tin khoa học sở nghiên cứu văn bản, tải liệu có thao tác tư logic để rút tóm lại khoa học cần thiết II QUY TRÌNH THỰC HIỆN 2.1.Tìm xác định khn mặt 2.1.1 Thư viện Mediapipe Mediapipe thư viện mã nguồn mở phát triển Google, cung cấp công cụ giải thuật cho việc xử lý liệu đa phương tiện video, âm hình ảnh Mediapipe chủ yếu sử dụng ứng dụng thị giác máy tính trí tuệ nhân tạo Các tính Mediapipe bao gồm: Xử lý liệu video hình ảnh: Mediapipe cung cấp công cụ cho việc xử lý liệu video hình ảnh trích xuất khung hình, phân đoạn hình ảnh, nhận diện đối tượng, theo dõi vị trí, trích xuất đặc trưng từ liệu Xử lý liệu âm thanh: Mediapipe hỗ trợ xử lý liệu âm trích xuất âm đồ, nhận diện tiếng nói, phân tích tín hiệu âm Truyền liệu thời gian thực: Mediapipe cho phép truyền liệu qua đường ống xử lý (pipeline) để thực tác vụ xử lý đa phương tiện thời gian thực Tích hợp phần cứng: Mediapipe hỗ trợ tích hợp phần cứng xử lý đa phương tiện GPU TPU để tăng tốc trình xử lý Cấu trúc module đồ thị xử lý: Mediapipe sử dụng cấu trúc module để xây dựng tổ chức công cụ giải thuật Đồ thị xử lý Mediapipe cho phép xếp kết nối module lại với để tạo thành pipeline xử lý phức tạp Thư viện Mediapipe cung cấp nhiều module công cụ cho việc xử lý liệu đa phương tiện Một số module phổ biến Mediapipe bao gồm nhận diện khuôn mặt (FaceMesh), theo dõi vị trí tay (HandTracking), nhận diện đồ vật (Objectron), nhiều công cụ khác cho tác vụ khác Để sử dụng Mediapipe Python, bạn cần cài đặt thư viện mediapipe lệnh pip install mediapipe 2.1.2 Mơ hình FaceMesh Mơ hình FaceMesh mơ hình nhận diện khn mặt thư viện Mediapipe Nó sử dụng để xác định điểm đặc trưng khuôn mặt người ảnh video FaceMesh sử dụng mạng neural học sâu để dự đoán vị trí điểm đặc trưng khn mặt mắt, mũi, miệng, điểm viền khuôn mặt Cụ thể, mơ hình tạo ma trận điểm 3D (x, y, z) đại diện cho vị trí điểm đặc trưng khuôn mặt Mơ hình FaceMesh Mediapipe huấn luyện lượng lớn liệu ảnh khuôn mặt đa dạng, cho phép nhận diện điểm đặc trưng với độ xác cao ổn định nhiều tình khác Để sử dụng mơ hình FaceMesh Mediapipe, bạn cần import module face_mesh tạo instance class FaceMesh Sau đó, bạn truyền ảnh video vào mơ hình để nhận diện lấy điểm đặc trưng khuôn mặt Dưới ví dụ minh họa cách sử dụng mơ hình FaceMesh Mediapipe: # Khởi tạo mơ hình FaceMesh face_mesh = mp.solutions.face_mesh.FaceMesh() # Đọc ảnh image = cv2.imread('image.jpg') # Chuyển đổi ảnh sang định dạng RGB image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Nhận diện điểm đặc trưng khuôn mặt results = face_mesh.process(image_rgb) # Trích xuất điểm đặc trưng từ kết nhận diện if results.multi_face_landmarks: for face_landmarks in results.multi_face_landmarks: for landmark in face_landmarks.landmark: # Xử lý điểm đặc trưng khuôn mặt # Hiển thị ảnh với điểm đặc trưng vẽ lên cv2.imshow('Face Landmarks', image) cv2.waitKey(0) cv2.destroyAllWindows() Trong ví dụ trên, khởi tạo mơ hình FaceMesh, đọc ảnh, chuyển đổi ảnh sang định dạng RGB để phù hợp với đầu vào mơ hình Sau đó, gửi ảnh vào mơ hình để nhận diện 2.2.Xác định khoảng cách từ mắt người đến camera Camera máy thấu kính hội tụ Có tiêu cự số định Đầu tiên lấy khoảng cách d cố định Giá trị w W xác định cơng thức trước Từ tìm khoảng tiêu cự trung bình camera Từ có tiêu cự ngược lên cơng thức Distance để tìm khoảng cách từ mắt người đến camera máy tính 2.3.Thay đổi kích cỡ chữ Đầu tiên, sau xác định khoảng cách từ mắt đến camera, ta có giá trị khoảng cách cụ thể Tiếp theo, dựa vào giá trị khoảng cách, ta áp dụng quy tắc thuật tốn để điều chỉnh kích cỡ chữ Cách thức cụ thể để thay đổi kích cỡ chữ thực cách tăng giảm kích cỡ dựa tỷ lệ tương quan với khoảng cách Ví dụ, khoảng cách tăng lên, kích cỡ chữ giảm để đảm bảo tính rõ ràng dễ đọc Ngược lại, khoảng cách giảm, kích cỡ chữ tăng để đảm bảo khả đọc tốt Đoạn code chứa hàm tính tốn logic để thực việc điều chỉnh kích cỡ chữ dựa giá trị khoảng cách xác định 2.4.Lập trình kết 2.4.1 Lập trình Các thư viện sử dụng import cv2 import mediapipe as mp import numpy as np import cvzone from cvzone.FaceMeshModule import FaceMeshDetector import tkinter as tk from tkinter import Tk, Frame,Label from PIL import Image,ImageTk cv2: Thư viện OpenCV (Open Source Computer Vision) sử dụng để xử lý hình ảnh video mediapipe: Thư viện Mediapipe phát triển Google, cung cấp công cụ lớp để xử lý thị giác máy tính phân tích liệu hình ảnh numpy (import numpy as np): Thư viện Python hỗ trợ phép tốn cơng cụ cho việc làm việc với mảng nhiều chiều ma trận cvzone: Một thư viện bổ sung cho OpenCV, cung cấp công cụ chức phục vụ cho việc phát triển ứng dụng thị giác máy tính tkinter: Thư viện Python chuẩn để phát triển giao diện người dùng đồ họa PIL (from PIL import Image, ImageTk): Thư viện Pillow, thư viện Python để làm việc với hình ảnh Giao diện Giao diện trang giới thiệu Code tạo nên giao diện window=tk.Tk() window.geometry("1000x750") window.title("nhom4") anh=Image.open("NGÀNH-KỸ-THUẬT-ĐIỀU-KHIỂN-VÀ-TỰ-ĐỘNG (1).jpg") resizeimage=anh.resize((1000,750)) imagebia=ImageTk.PhotoImage(resizeimage) i1=Label(image=imagebia) i1.grid(column=0,row=0) Btn=tk.Button(window,text="build code",font=("times new romen",20),command=hamcon) Btn.grid(column=0 ,row=0) window.mainloop() Hàm tính tốn Khởi tạo đối tượng thiết lập mơ hình: Tạo module mp_face_mesh từ mơ hình FaceMesh thư viện mediapipe Khởi tạo đối tượng face_mesh từ đối tượng mp_face_mesh mp_face_mesh = mp.solutions.face_mesh face_mesh = mp_face_mesh.FaceMesh() Lấy hình ảnh từ camera khởi tạo mảng chứa văn bản: Sử dụng cv2.VideoCapture() để khởi tạo đối tượng cap để chứa hình ảnh từ camera Đặt danh sách chuỗi văn textList để hiển thị hình ảnh cap = cv2.VideoCapture(0) textList = ["tao mot doi tuong", "videocapture de", "lay video tu thiet bi","trong truong hop", "nay la camera voi chi so "] Bắt đầu vòng lặp vơ hạn để xử lý khung hình từ camera: 10 Sử dụng cap.read() để đọc hình ảnh từ camera gán vào biến image Khởi tạo mảng numpy chưa văn hiển thị Lấy kích thước khung hình Chuyển đổi ảnh từ định dạng BGR sang RGB while True: ret,image = cap.read() imgText = np.zeros_like(image,) height,width,_ = image.shape rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) Xử lý khn mặt tính tốn khoảng cách: Sử dụng face_mesh.process() để nhận diện xác định điểm đặc trưng khuôn mặt Lặp qua khn mặt nhận diện trích xuất điểm đặc trưng để tính tốn khoảng cách Qua thực nghiệm ta có khoảng cách trung bình mắt người W=6.3 cm Lấy thơng tin vị trí điểm thứ 145(Mắt trái), 374(Mắt phải), 10( Trán) Sau tính khoảng cách mắt (w đơn vị pixel) cách tính khoảng cách điểm 145 374 Tìm giá trị trung bình f(đơn vị pixel) Thế vào cơng thức tìm khoảng cách mắt camera d (đơn vị cm) In hình giá trị d result = face_mesh.process(rgb_image) if result.multi_face_landmarks: for facial_landmarks in result.multi_face_landmarks: pt1 = facial_landmarks.landmark[145] x1 = int(pt1.x*width) 11 y1 = int(pt1.y*height) pt2 = facial_landmarks.landmark[374] x2 = int(pt2.x*width) y2 = int(pt2.y*height) pt3 = facial_landmarks.landmark[10] x3 = int(pt3.x*width) y3 = int(pt3.y*height) w = np.sqrt((x1-x2)**2+(y1-y2)**2) W = 6.3 f = 840 d = (W * f) / w print(d) Điều chỉnh kích thước chữ hiển thị văn bản: Tính tốn kích thước chữ khoảng cách dòng văn dựa khoảng cách tính tham số khác Sử dụng cv2.putText() để hiển thị văn Khai báo biến sen thay đổi giá trị Giá trị sen điều khiển độ nhạy dòng chữ thay đổi khoảng cách mắt camera sen = 25 for i, text in enumerate(textList): singleHeight = 20 + int((int(d/sen)*sen)/4) scale = 0.4 + (int(d/sen)*sen)/75 cv2.putText(imgText, text, (50, 50 + (i * singleHeight)), cv2.FONT_ITALIC, scale, (255, 255, 255), 2) cv2.putText(image,f'Depth: {int(d)}cm',(x3-100,y3-50),0,1,(0,255,100)) 12 Hiển thị hình ảnh: Sử dụng cvzone.stackImages() để xếp chồng hình ảnh gốc hình ảnh chứa văn Sử dụng cv2.imshow() để hiển thị kết imgStacked = cvzone.stackImages([image, imgText], 2, 1) cv2.imshow("Image",imgStacked) Kết thúc vịng lặp giải phóng liệu: Sử dụng cv2.waitKey() để chờ xử lý thao tác từ bàn phím Giải phóng liệu cách sử dụng cap.release() cv2.destroyAllWindows() 2.4.2 Kết Khi chạy chương trình, camera khởi động bắt đầu đọc khung hình từ camera Sau đó, mơ hình FaceMesh áp dụng để nhận diện xác định điểm đặc trưng khn mặt khung hình Từ đó, khoảng cách từ mắt đến camera tính tốn dựa điểm đặc trưng khuôn mặt Kết hiển thị trực tiếp video Mỗi khung hình có văn cho biết khoảng cách tính từ mắt đến camera Đồng thời, kích thước chữ điều chỉnh phù hợp với khoảng cách Bạn quan sát kết trực tiếp cửa sổ hiển thị 13 14 III KẾT LUẬN 3.1.Kết thực Tóm lại, sau thực đề tài này, chúng em hiểu rõ quy trình nhận diện hình ảnh Để nhận diện xác phụ thuộc vào nhiều yếu tố ánh sáng, môi trường, khoảng cách v.v Đề tài "Điều chỉnh cỡ chữ phù hợp với mắt dựa vào xác định khoảng cách mắt camera" đề tài thú vị có tính ứng dụng cao việc cải thiện trải nghiệm người dùng đọc văn video Tuy nhiên, để đánh giá cải thiện chất lượng chương trình, cần thực thêm thử nghiệm tối ưu hóa tham số, ví dụ cách tính tốn kích thước chữ dựa khoảng cách Cũng cần xem xét việc mở rộng chức ứng dụng chương trình tình thực tế khác 3.2.Hướng phát triển đề tài Có số hướng phát triển tiềm cho đề tài "Điều chỉnh cỡ chữ phù hợp với mắt dựa vào xác định khoảng cách mắt camera" Dưới số ý tưởng: Tăng cường tính năng: Bổ sung tính bổ sung thay đổi màu sắc, kiểu chữ, độ đậm nhạt văn dựa khoảng cách góc nhìn mắt Điều tăng tính tương tác linh hoạt ứng dụng Đa ngôn ngữ: Mở rộng ứng dụng để hỗ trợ nhiều ngôn ngữ khác Điều cho phép người dùng chọn ngơn ngữ mà họ muốn đọc hiển thị văn phù hợp Tối ưu hóa hiệu suất: Nâng cao hiệu suất ứng dụng để xử lý video tính tốn khoảng cách cách nhanh chóng mượt mà Có thể sử dụng kỹ thuật tối ưu hóa mã để giảm thời gian phản hồi tăng tốc độ xử lý 15 Giao diện người dùng cải tiến: Tạo giao diện người dùng đẹp mắt dễ sử dụng, cho phép người dùng tùy chỉnh thiết lập kích thước chữ, màu sắc kiểu chữ Ứng dụng thực tế: Mở rộng ứng dụng để áp dụng vào lĩnh vực cụ thể giáo dục, y tế, cơng nghiệp, nơi việc điều chỉnh kích thước chữ phù hợp với mắt mang lại lợi ích rõ rệt Tương tác thêm: Kết hợp với công nghệ nhận diện cử nhận diện khuôn mặt để tăng tính tương tác điều khiển chức ứng dụng thông qua cử di chuyển mắt 16