Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
372,91 KB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA KĨ THUẬT ĐIỆN TỬ =====o0o===== BÁO CÁO BÀI TẬP LỚN ĐỀ TÀI: THUẬT TỐN PHÁT HIỆN KHN MẶT Giảng viên hướng dẫn : Vũ Hữu Tiến Môn học : Truyền thơng đa phương tiện Nhóm mơn học : 01 Nhóm tập lớn : 09 Sinh viên thực : Đào Duy Khánh B18DCDT108 Trần Long Thành B18DCDT236 Phạm Phú Phúc B18DCDT187 HÀ NỘI, 2022 -⁃⁃⁃⁃‹‹‹﴾֍﴿›››⁃⁃⁃⁃ - Phát khuôn mặt lĩnh vực xử lý ảnh Và ngày sử dụng rộng rãi nhiều lĩnh vực đời sống nhận dạng lĩnh vực thương mại, hay phát lĩnh vực an ninh, hay xử lý video, hình ảnh Với phát triển không ngừng khoa học công nghệ, đặc biệt với điện thoại thông minh (smartphone) ngày đại sử dụng phổ biến đời sống người làm cho lượng thơng tin thu hình ảnh ngày tăng Theo đó, lĩnh vực xử lý ảnh trọng phát triển, ứng dụng rộng rãi đời sống xã hội đại Không dừng lại việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh giải tốn nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khuôn mặt Một toán nhiều người quan tâm lĩnh vực xử lý ảnh nhận dạng khn mặt (Face Recognition) Như biết, khn mặt đóng vai trị quan trọng trình giao tiếp người với người, mang lượng thơng tin giàu có, chẳng hạn từ khn mặt xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt xác định mối quan hệ với đối tượng (có quen biết hay khơng) Do đó, tốn nhận dạng khn mặt đóng vai trị quan trọng nhiều lĩnh vực đời sống ngày người hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin người tiếng, đặc biệt an ninh, bảo mật Có nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất nhiên dù hay nhiều phương pháp vấp phải thử thách độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng tham số mơi trường THUẬT TỐN PHÁT HIỆN KHN MẶT Chức app - Vẽ đồ thị điểm ảnh - Phát khuôn mặt - Lưu ảnh - Nhận diện khuôn mặt (đang cập nhật bổ sung) Sơ đồ thuật toán a, Nguyên lý hoạt động: Bộ phân loại Haar Cascade OpenCV hoạt động phương pháp tiếp cận cửa sổ trượt Trong phương pháp này, cửa sổ (kích thước mặc định 20 x 20 pixel) trượt hình ảnh (từng hàng) để tìm đặc điểm khn mặt Sau lần lặp, hình ảnh thu nhỏ (thay đổi kích thước) theo yếu tố định (được xác định tham số ' scaleFactor ') Kết đầu lần lặp lưu trữ thao tác trượt lặp lại hình ảnh nhỏ hơn, thay đổi kích thước Có thể có kết dương tính giả lần lặp thảo luận chi tiết phần sau viết Quá trình thu nhỏ mở rộng cửa sổ tiếp tục hình ảnh nhỏ so với cửa sổ trượt Giá trị scaleFactor nhỏ độ xác lớn chi phí tính tốn cao b, Dò biên (Phương pháp canny): ● Giảm nhiễu: Làm mờ ảnh, giảm nhiễu dùng lọc Gaussian kích thước 5x5 Kích thước 5x5 thường hoạt động tốt cho giải thuật Canny Dĩ nhiên bạn thay đổi kích thước lọc làm mờ cho phù hợp Tham khảo viết: ● Tính Gradient hướng gradient: ta dùng lọc Sobel X Sobel Y (3x3) để tính ảnh đạo hàm Gx Gy Tham khảo viết giải thích gradient Sau đó, ta tiếp tục tính ảnh Gradient góc Gradient theo công thức Ảnh đạo hàm Gx Gy ma trận (ví dụ: 640x640), kết tính ảnh đạo hàm Edge Gradient ma trận (640x640), pixel ma trận thể độ lớn biến đổi mức sáng vị trí tương ứng ảnh gốc Tương tự, ma trận Angle có kích thước (640x640), pixel Angle thể góc, hay nói cách khác hướng cạnh Ví dụ dễ hiểu, góc gradient độ, cạnh ta ảnh đường thẳng đứng (tức tạo góc 90 độ so với trục hồnh) (vng góc hướng gradient) Khi tính tốn, giá trị hướng gradient nằm đoạn [-180, 180] độ, ta không giữ nguyên góc mà gom giá trị bin đại diện cho hướng: hướng ngang (0 độ), hướng chéo bên phải (45 độ), hướng dọc (90 độ) hướng chéo trái (135 độ) ● Non-maximum Suppression (viết tắt NMS): loại bỏ pixel vị trí khơng phải cực đại tồn cục Ở bước này, ta dùng filter 3x3 chạy qua pixel ảnh gradient Trong trình lọc, ta xem xét xem độ lớn gradient pixel trung tâm có phải cực đại (lớn cục - local maximum) so với gradient pixel xung quanh Nếu cực đại, ta ghi nhận giữ pixel lại Cịn pixel khơng phải cực đại lân cận, ta set độ lớn gradient zero Ta so sánh pixel trung tâm với pixel lân cận theo hướng gradient Ví dụ: hướng gradient độ, ta so pixel trung tâm với pixel liền trái liền phải Trường hợp khác hướng gradient 45 độ, ta so sánh với pixel hàng xóm góc bên phải góc bên trái pixel trung tâm Tương tự cho trường hợp hướng gradient lại Kết thúc bước ta mặt nạ nhị phân ● Lọc ngưỡng: ta xét pixel dương mặt nạ nhị phân kết bước trước Nếu giá trị gradient vượt ngưỡng max_val thì pixel đó chắc chắn cạnh Các pixel có độ lớn gradient nhỏ ngưỡng min_val sẽ bị loại bỏ Còn pixel nằm khoảng ngưỡng xem xét có nằm liền kề với pixel cho "chắc chắn cạnh" hay không Nếu liền kề ta giữ, cịn khơng liền kề pixel cạnh ta loại Sau bước ta áp dụng thêm bước hậu xử lý loại bỏ nhiễu (tức pixel cạnh rời rạc hay cạnh ngắn) muốn. c, Làm mịn ảnh (Bộ lọc Bilateral): cv.bilateralFilter() : Là lọc hiệu cao công việc loại bỏ nhiễu mà giữ lại đường viền (cạnh) ảnh Như theo biết, lọc Gauss định giá trị điểm ảnh cách lấy trung bình thap hàm Gauss giá trị điểm ảnh xung quanh điểm Hàm trọng số Gauss phụ thuộc vào khoảng cách không gian so với trung tâm điểm ảnh, không quan tâm đến tương quan mức xám điểm trung tâm với điểm xung quanh Nó khơng quan tâm điểm ảnh trung tâm có nằm đường biên ảnh khơng, làm nhòe đường biên ảnh Bộ lọc Bilater sử dụng lọc Gauss với khoảng cách đến điểm trung tâm, đảm bảo có điểm gần vào giá trị điểm trung tâm Tuy sử dụng thêm hàm Gauss cho mức xám , đảm bảo điểm ảnh có mức xám tương đồng với điểm ảnh trung tâm tham gia vào trình làm mịn Vì lọc mức xám rõ ràng Hơn nữa, thay hoạt động kênh màu cách riêng lẻ lọc trung bình hay lọc Gauss, lọc Bilater thi hành việc đo đạc màu sắc có chủ đích khơng gian màu CIE – Lab, làm mượt màu bảo toàn biên theo hướng phù hợp với nhận thức người d, Code Python from tkinter import * from tkinter.ttk import * from tkinter import messagebox import tkinter import cv2 import PIL.Image, PIL.ImageTk from time import sleep from threading import Thread import utils cap = cv2.VideoCapture(0) window = Tk() window.title("Face Detection OpenCV") video = cv2.VideoCapture(0) canvas_w = video.get(cv2.CAP_PROP_FRAME_WIDTH) canvas_h = video.get(cv2.CAP_PROP_FRAME_HEIGHT) canvas = Canvas(window, width = canvas_w, height= canvas_h , bg= "white") canvas.pack() bw = def handleBW(): global bw bw = - bw def saveImg(): ret, frame = video.read() if bw!=0: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) frame = utils.FaceRec(frame) utils.WriteFace(frame) button = Button(window,text = "Black & White", command=handleBW) button.pack(side=RIGHT) buttonSave = Button(window,text = "Save", command=saveImg) buttonSave.pack(side=LEFT, pady=5) photo = None count = #nhan dien khuon mat(dang cap nhat) def send_to_server(): sleep(5) return def update_frame(): global canvas, photo, bw, count # Doc tu camera ret, frame = video.read() # Ressize frame = cv2.resize(frame, dsize=None, fx=1, fy=1) # Chuyen he mau if bw==0: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) else: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) frame = utils.FaceRec(frame) # Convert hanh image TK photo = PIL.ImageTk.PhotoImage(image=PIL.Image.fromarray(frame)) # Show canvas.create_image(0,0, image = photo, anchor=tkinter.NW) count = count +1 if count%10==0: #send_to_server() thread = Thread(target=send_to_server) thread.start() window.after(15, update_frame) update_frame() window.mainloop() e, Demo: LỜI CÁM ƠN Đầu tiên, em xin gửi lời cảm ơn chân thành đến Học Viện Cơng nghệ Bưu Viễn thơng đưa mơn học Truyền thơng đa phương tiện vào chương trình giảng dạy nhà trường Đặc biệt, em xin gửi lời cảm ơn đến thầy Vũ Hữu Tiến giảng viên môn Truyền thông đa phương tiện, giảng dạy truyền cho bọn em kiến thức đáng quý suốt trình học vừa qua Trong thời gian tham dự lớp học thầy em tiếp thu kiến thức quý báu, bổ ích, học tập làm việc theo tác phong nghiêm túc, có hiệu học tập Đây thực điều đáng quý suốt trình học tập sau làm em Bộ môn Truyền thông đa phương tiện môn học thú vị, vô tốt gắn liền với nhu cầu thực tiễn sinh viên Do thời gian học tập tìm hiểu cịn có hạn, báo cáo chúng em khó tránh khỏi thiếu sót nhiều chỗ chưa chuẩn xác, kính mong thầy bạn xem xét góp ý giúp báo cáo chúng em hoàn thiện Em xin chân thành cảm ơn! Hà Nội, ngày tháng năm 2022 Sinh viên thực Đào Duy Khánh Trần Long Thành Phạm Phú Phúc ... TỐN PHÁT HIỆN KHN MẶT Chức app - Vẽ đồ thị điểm ảnh - Phát khuôn mặt - Lưu ảnh - Nhận diện khuôn mặt (đang cập nhật bổ sung) Sơ đồ thuật toán a, Nguyên lý hoạt động: Bộ phân loại Haar Cascade... dạng khuôn mặt để nâng cao hiệu suất nhiên dù hay nhiều phương pháp vấp phải thử thách độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng tham số mơi trường THUẬT TỐN PHÁT HIỆN KHN MẶT Chức.. .Phát khuôn mặt lĩnh vực xử lý ảnh Và ngày sử dụng rộng rãi nhiều lĩnh vực đời sống nhận dạng lĩnh vực thương mại, hay phát lĩnh vực an ninh, hay xử lý video, hình ảnh Với phát triển