Báo cáo đồ án đồ họa máy tính đề tài ứng dụng opencv camera

38 4.2K 10
Báo cáo đồ án đồ họa máy tính đề tài ứng dụng opencv camera

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo đồ án đồ họa máy tính đề tài ứng dụng opencv camera

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH ------o0o------ BÁO CÁO ĐỒ ÁN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI ỨNG DỤNG OPENCV & CAMERA Giảng viên hướng dẫn: Mai Tiến Dũng TP Hồ Chí Minh, ngày 21 tháng 12 năm 2012 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA MỤC LỤC Page 2 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA I. LÝ DO CHỌN ĐỀ TÀI Ngày nay vấn đề an ninh được đặt lên hàng đầu và việc ứng dụng công nghệ thông tin trong quản công tác giám xác và theo dõi được coi trọng. Vì vậy các phần mềm liên quan cũng được ra đời và trở nên quan trong. Một trong những phần mềm đó là theo dõi là nhận diện khôn mặt người thông qua các đặc trưng. Chính vì vậy nhóm em đã chọn đề tài nghiên cứu là ứng dụng OpenCV trong giám sát và quản lý bắng thuật giải PCA (Principal Component Analysis- phân tích thành phấn chinh) kèm theo phân xử lý ảnh đầu vào được thu từ camera để giúp quá trình xử lý cũng như máy học được thực hiện nhanh hơn. Tuy nhiên thời gian còn hạn chế nên chúng em chưa tìm hiểu sâu về phần máy học giúp máy tính có thể nhận biết đối tượng nên ứng dụng chỉ mang tính tương đối. Và cuối cùng chúng em cảm ơn thầy đã hướng dẫn và định hướng cho chúng em trong suốt quá trình thực hiện đề tài này. II. MÔ HÌNH THỰC HIỆN: OpenCV2.1 + Camera Open video Chụp Ảnh Xử lý trên Ảnh Chuyển Ảnh Sang Hệ Màu Nhị Phân, trắng đen. Zoom ảnh, lập ảnh, làm dày, Sử dụng sơ đồ ăn mòn. Lấy biên ảnh, phân histogram giảm bớt độ tương kênh màu phản Page 3 Mở Ảnh Nhận diện Huấn luyện chụp được khuôn mặt khuôn mặt Xuất thông tin ảnh, đối xứng ảnh Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA III. TIẾN ĐỘ THỰC HIỆN: Tuần 1 2 3 4 5 IV. Nội dung - Tìm hiểu OpenCV - Chọn đề tài - Phân công công việc cho mỗi thành viên - Thực hiện được 1 số chức năng cơ bản của đề tài + Kết nối Webcam với chương trình C++ thông qua OpenCV + Chụp lại ảnh thu được từ webcam. + Mở một ảnh bằng OpenCV. + Nhận diện được khuôn mặt trên video, webcam, trên ảnh. - Tiếp tục tìm hiểu về thuật toán nhận diện khuôn mặt và xử lý ảnh + Tìm hiểu về cách: máy nhận diện được khuôn mặt đã có và ‘học tiếp’ khuôn mặt mới. + Tìm hiểu về cách xử lý trên ảnh để hỗ trợ cho nhận diện khuôn mặt và hỗ trợ tìm ra đặc trưng của ảnh. - Đã hoàn thành thêm ứng dụng nhận diện các khuôn mặt có trong dữ liệu có trước. - Chưa hoàn thực hiện được nhận diện trên khuôn mặt mới. - Chưa hoàn thành xử lý trên ảnh. - Hoàn thành việc nhận diện và máy ‘học’ một khuôn mặt mới, tìm ra được độ tin tưởng của khuôn mặt cần kiểm tra với dữ liệu có trước. - Hoàn thành chức năng xử lý, biến đổi trên ảnh: + zoom ảnh. + lấy thông tin các tham số ảnh( kích thước, hệ màu, ...) + Các hiệu ứng trên ảnh + Xoay ảnh + Tạo ảnh đối xứng. + Phân kênh màu ảnh. + Histogramequalization + lấy biên của ảnh + Chuyển ảnh màu sang ảnh trắng đen + Chuyển ảnh sang hệ màu nhị phân - Hoàn thành chức năng nhận dạng ảnh, và chức năng máy ‘học’ được nhiều khuôn mặt mới. - Hoàn thành báo cáo Đồ Án. NỘI DUNG THỰC HIỆN A. Tìm hiểu sơ lược OpenCV2.1 Page 4 Ghi chú Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 1. Giới thiệu OpenCV: OpenCV là mã nguồn mở do Intel sáng chế. OpenCV là thư viện mã nguồn phục vụ cho nghiên cứu và ‘thị giác’ máy tính. OpenCV giúp việc xây dựng các ứng dụng về xử lý ảnh, thị giác máy tính một cách nhanh chóng. OpenCV có khoảng hơn 500 hàm, phục vụ cho nhiều công việc khác nhau: xử lý hình ảnh, an ninh, camera quan sát, nhận diện, robots... Tối ưu hóa và xử lí các ứng dụng trong thời gian thực. 2. Ai sẽ sử dụng OpenCV? • Đầu tiên chúng ta phải hiểu: OpenCV là mã nguồn mở và chúng ta không phải trả bất cứ một đồng nào cho nó. • Tất cả chúng ta đều có thể sử dụng OpenCV tùy theo việc chúng ta sử dụng nó nhưthế nào vào việc gì. • Xử lí ảnh, quan sát, an ninh, robots, ... Tất cả những gì mà bạn nghĩ rằng liên quan đến thị giác máy tính thì bạn có thể sử dụng OpenCV để làm. 3. Sử dụng OpenCV để làm gì? • Xử lí ảnh, quan sát, an ninh, robots, ... Tất cả những gì mà bạn nghĩ rằng liên quanđến thị giác máy tính thì bạn có thể sử dụng OpenCV để làm. • Thay vì lập trình cho các thuật toán xử lí ảnh thì bạn đã có sẵn trong tay một thư việnvề các hàm đó. Công việc của bạn chỉ là sử dụng nó. Và bạn có thể lập trình cho cácthiết bị máy móc để cho nó có thể “nhìn” 4. Các chức năng cơ bản: 4.1 General computer-vision and image-processing algorithms: Sử dụng interface để thể hiện ‘thị giác’ của máy tính, thông qua các hàm có sẵn để thể hiện các cạnh, đường, phát hiện góc hình elip, ... 4.2 High-level computer-vision modules: Ngoài các tính năng nhận diện, theo dõi , OpenCv còn bao gồm dòng chảy quang học ( sử dụng máy ảnh chuyển động để xác định cấu trúc 3D). 4.3 AI and machine-learning methods: OpenCV kết hợp với các phương pháp trí tuệ nhân tạo khác để nâng cao hiệu quả trong thuật toán, cũng như nâng cao khả năng ‘học hỏi’ của máy tính. 4.4 Methods for creating and analyzing binary (two-valued) images: Ảnh nhị phân thường được sử dụng trong các hệ thống kiểm tra mà quét phát hiện các khuyết tật hoặc trong các bộ đếm. Ảnh nhị phân cũng thuận tiện khi định vị trí một đối tượng để nắm bắt. 4.5 Graphics: Interface này cho phép người lập trình có thể viết hay vẽ trên hình ảnh. Ứng dụng này rất hữu ích cho việc chú thích, tạo nhãn, đánh dầu vị trí trên hình ảnh. 4.6 GUI methods: Page 5 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA OpenCV bao gồm các interface windown riêng của nó. Trong khi đây là những hạn chế so với những gì có thể được thực hiện trên các nền tảng khác, họ cung cấp một đơn giản, đa nền tảng API để hiển thị hình ảnh, chấp nhận đầu vào người dùng thông qua con chuột hoặc bàn phím, và thực hiện kiểm soát thanh trượt. 5. Tổ chức : + CV bao gồm xử lý hình ảnh và các phương pháp hiệu chỉnh máy ảnh. Các chức năng tính toán hình học cũng nằm ở đây. + CXCORE chứa các định nghĩa kiểu dữ liệu cơ bản. Ví dụ, cấu trúc dữ liệu điểm cho hình ảnh, hình chữ nhật và được quy định tại cxtypes.h. + CVAUX được mô tả trong tài liệu hướng dẫn của OpenCV có chứa mã thử nghiệm và thực nghiệm.Tuy nhiên, các giao diện đơn giản nhất để nhận dạng khuôn mặt trong mô-đun này. + ML chứa machine-learning interfaces. + Các chức năng còn lại được chứa trong HighGUI và CVCAM. Cả hai đều nằm trong một thư mục có tên là "otherlibs. Nó chứa các cửa sổ đa nền tảng, đa chức năng. + CVCAM chứa các giao diện để truy cập video thông qua DirectX trên nền tảng Windows 32-bit. Tuy nhiên, HighGUI cũng chứa các giao diện video. 6. Cài đặt OpenCV: • Cài đặt OpenCV trên Visual Studio 2010: Ở bài báo cáo này em sử dụng phiên bản OpenCV 2.1 cài đặt và chạy các ứng dụng trên Visual Studio 2010 của Win 7 32 bit để cài đặt nó thì chúng ta phải download : a. Thư viện OpenCV 2.1 trên trang: opencv.org, hiện nay thì đã bản mới nhất của OpenCV 2.4.3 được cập nhật thêm rất nhiều tính năng mới về xử lý ảnh số và thị giác máy tính… b. CMake: phiên bản OpenCV 2.x chỉ cung cấp mã nguồn chứ không tích hợp tập thực thi và cấu hình dự án cho từng mội trường phát triển. Vì thế ta sử dụng CMake để tạo, cấu hình dự án cho phù hợp với môi trường phát triển, cụ thể ở đây là tạo project để build file .dll và .lib để sử dụng OpenCV trong Visual Studio 2010 trên Windows x32. Download file cài đặt trên trang: http://www.cmake.org/cmake/resources/software.html Các bước cài đặt OpenCV: 1. Chạy file OpenCV-2.1.0-win32-vs2008.exe để cài đặt OpenCV. Lưu ý khi cài đặt lựa chọn: Add OpenCV to the system PATH. Đường dẫn mặc định của chương trình là: C:\OpenCV2.1 Page 6 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2. Cài đặt CMake. 3. Tiếp theo, ta sẽ sử dụng CMake tạo project để build file thư viện OpenCV phù hợp với Visual Studio 2010. Vào C:\OpenCV2.1, tạo thư mục build để chứa project. 4. Click nút Configure để lựa chọn môi trường phát triển, ở đây lựa chọn Visual Studio 10 Win32. Click Finish. 5. Nhấn chọn tiếp nút Configure lần nữa, sau đó nhấn nút Generate để hoàn tất việc tạo project: Page 7 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 6. Vào C:\OpenCV2.1\build, mở file OpenCV.sln vừa tạo: 7. Khi biên dịch file .dll và .lib cho OpenCV, nên lưu ý chế độ của project là debug hay release. Riêng trong trường hợp này, biên dịch để sử dụng trong Visual Studio 2010 trên Windows 7 x32, để tránh xảy ra lỗi : the application was unable to start correctly 0xc0150002 về sau, nên để chế độ là release. 8. Biên dịch chương trình, sau khi biên dịch, ta sẽ có các file OpenCV dll trong C:\OpenCV2.1\build\bin\Release và OpenCV lib trong C:\OpenCV2.1\build\lib\Release. Ngoài ra, các tập tin header .h nằm ở địa chỉ: C:\OpenCV2.1\include\opencv Page 8 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o 9. Tiếp theo, ta sẽ tạo thử một project chạy thử sử dụng thư viện vừa biên dịch trên. Tạo mới Project, đặt tên là OpenCV Demo: 10. Cấu hình Visual Studio 2010 để reference các đường dẫn đến các file .h, .dll, .lib. Với phiên bản cũ hơn, chẳng hạn như Visual Studio 2008, khi cấu hình sẽ vào Tools-> Options-> VC++ Directories để cấu hình cho tất cả các project, tuy nhiên, ở Visual Studio 2010 thì chỉ cho phép cấu hình riêng với từng project. Click chuột phải vào project, chọn Properties: 11. Cấu hình VC++ Directories: Page 9 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o o o o o o o o Include Directories... add: 'C:\OpenCV2.1\include\opencv;' Library Directories: Debug Builds.. add: 'C:\OpenCV2.1\build\lib\Debug’, ‘C:\OpenCV2.1\build\bin\Debug’ Release Builds.. add: 'C:\OpenCV2.1\build\lib\Release’, ‘C:\OpenCV2.1\build\bin\Release’ Source Directories... add: 'C:\OpenCV2.1\src\cv; C:\OpenCV2.1\src\cvaux; C:\OpenCV2.1\src\cxcore; C:\OpenCV2.1\src\highgui; C:\OpenCV2.1\src\ml;' Linker -> Input -> Additional Dependencies... Debug Builds.. add: 'cv210d.lib; cxcore210d.lib; highgui210d.lib;' Release Builds.. add: 'cv210.lib; cxcore210.lib; highgui210.lib;' Page 10 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 12. Nội dung file OpenCVDemo.cpp: #include "stdafx.h" #include #include #include int _tmain(int argc, _TCHAR* argv[]) { IplImage *img = cvLoadImage("test.jpg"); cvNamedWindow("Image:",1); cvShowImage("Image:",img); cvWaitKey(); cvDestroyWindow("Image:"); cvReleaseImage(&img); return 0; } Page 11 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA  Ghi chú: Trong phần cài đặt OpenCV ở các bản về sau ta không cần download thêm phần CMake để tạo và cấu hình phù hợp với môi trường máy nữa mà chỉ cần download thư viện trên opencv.org về giải nén và đặt vào thư mục mặc định của mình. Khi sử dụng chỉ cần tham chiếu tới thư mục đó, trong thư mục của OpenCV mà ta giải nén thì có chứa thư mục bin ta sao chép toàn bộ vào thư mục hệ thống system32. Và nên nhớ các địa chỉ phải thật chính xác. B. NHẬN DIỆN KHUÔN MẶT: 1. Thư viện nhận diện: 1.1 Các thư viện: OpenCv sử dụng thư viên Haar Cascade để nhận diện. Trong thư viện này có nhiều thư viện con để phục vụ theo từng mục đích sử dụng như: thư viện nhận dạng mắt HaarCascade_eye.xml, thư viện nhận dạng khuôn mặt HaarCascade_frontalface, hay các thư viện khác như : HaarCascade_fullbody, haarcascade_mcs_nose, haarcascade_mcs_mouth, haarcascade_profileface, haarcascade_upperbody,... 1.2 Thư viện HaarCascade_frontalface: Đây là thư viện mô phỏng mô hình khuôn mặt được định dạng dưới dạng các vector dựa trên các pixels của ảnh đưa vào. Thư viện này cho phép người dùng có thể nhận biết được đâu là khuôn mặt trong ảnh, mặc dù ảnh đó là lớn hay nhỏ. Thư viện này giúp người sử dụng có thể phân loại, phát hiện khuôn mặt trên quy mô lớn. Cơ chế phân loại này được sử dụng các dữ liệu lưu trữ trong một tập tin XML để quyết định làm thế nào để phân loại từng vị trí hình ảnh. OpenCv bao gồm bốn loại dữ liệu XML nhận diện Page 12 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA khuôn mặt phía trước, và một cho khuôn mặt hồ sơ cá nhân. Và cũng bao gồm ba file phát hiện khuôn mặt dạng XML -một cho phát hiện cơ thể , một cho phần trên cơ thể, và một cho cơ thể thấp hơn. VD: 2. Thuật toán Principal Component Analysis (PCA): 2.1 Giới thiệu: PCA( Phân tích thành phần chính) là một trong các phương pháp phân tích dữ liệu nhiều biến đơn giản nhất. Như trong thống kê, người ta thường xử lý dữ liệu trên dữ liệu có sô chiều lớn, rất khó biến đổi dữ liệu thành các dữ liệu nhỏ hơn trong không gian 2 chiều hay 3 chiều. Thuật toán PCA được ra đời, giúp giải quyết vấn đề này. Các tính của PCA: • Giảm số chiều của dữ liệu. • PCA xây dựng một không gian mới dựa trên không gian cũ để biểu diễn dữ liệu tốt hơn. • Khi không gian mới ra sinh ra, các liên kết tiềm ẩn cũng được sinh ra, mà ở không gian cũ khó phát hiện được. 2.2 Ứng dụng PCA trong nhận diện: Theo đánh giá PCA là kỹ thuật thành công nhất trong giải quyết vấn đề nhận dạng hình ảnh và nén hình. Dự trên đặc trưng của PCA là giảm thiểu số chiều lớn của không gian tính năng, nên PCA sẽ thực hiện công việc dự đoán , loại bỏ dư thừa , khai thác tính năng nén dữ liệu.... Và nhận diện khuôn mặt có nhiều điểm có thể áp dụng PCA. PCA có thể phân tích, phân loại vào nhận diện khuôn mặt, hoặc xác định giới tính. PCA được sử dụng theo ý tưởng là: sử dụng PCA nhận dạng khuôn mặt là thể hiện vector 1-D lớn các điểm ảnh xậy Page 13 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA dựng từ 2-D hình ảnh khuôn mặt vào các thành phần chủ yếu nhỏ gọn của khoảng tính năng. Điều này có thể được gọi là eigenspace. Eigenspace được tính bằng cách xác định các vector riêng của ma trận hiệp phương sai bắt nguồn từ một tập hợp các hình ảnh trên khuôn mặt. 2.3 Thuật toán PCA: • Bước 1: ta có tập hợp các hình ảnh mẫu là : I1, I2, I3, ....,IM. • Bước 2: Biến đổi mỗi hình mẫu thành một vector. Ii ---> Vi. N 2x1 vector NxN • Bước 3: Ta tính vector trung bình: • Bước 4: Tính vector lệch của mỗi bức ảnh so với vector trung bình • Bước 5: Tính ma trận hiệp phương sai: • Bước 6: Tính vector riêng ui của ma trận hiệp phương sai AAT. Do ma trận hiệp phương sai có kích thước lớn nên ta không tính trực tiếp đươc mà thông qua ma trận đảo của ma trận hiệp phương sai là: ATA. Tính vector riêng vi của ma trận ATA. ATAvi = => AATAvi = =>Cavi = hoặc Cui= khi ui= Avi. Bổ sung: Ma trận AAT có NxN trị riêng và vector riêng. Ma trận ATA có M trị riêng và vector riêng. Bước 7: Giữ lại K vector riêng( là vector có giá trị riêng lớn nhất được tính theo công thức: u i= Av). Bước 8: Mỗi ảnh sau khi trừ đi giá trị trung bình sẽ là một sự kết hợp tuyến tính của K vector riêng tốt nhất. Minh họa: Ảnh đưa vào: Page 14 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA Ảnh Sau khi xử lý để lưu vào dữ liệu: 2.4 Giải thuật phân nhóm khuôn mặt: Khi ta đưa một số ảnh vào để nhận diện( ảnh có khuôn mặt người). Bước 1: Đưa từng khuôn mặt vào nhận diện so với ảnh gốc. Bước 2: Dựa trên phân tích PCA đối với các khuôn mặt mẫu,so sánh với khuôn mặt đưa vào nhận diện. Bước 3: Tìm ra khuôn mặt gần giống với khuôn mặt mẫu nhất, để đưa ra nhận định( dựa vào độ tim cậy khi tính toán). Bước 4: Sau khi phân nhóm xong tiếp tục đưa ảnh tiếp theo vào, quay lại bước 3. Bước 5: Đưa ra kết luận cuối cùng. C. CHƯƠNG TRÌNH THỰC HIỆN: 1. XỬ LÝ OPEN CAMERA & NHẬN DIỆN KHUÔN MẶT: 1.1 Xử lý Open Camera: • Phương pháp: Hình ảnh hiện thị từ camera ( webcam) lên màng hình được xử lý theo phương pháp lấy từng frame từ ảnh camera nhận được. • Hàm trong chương trình: IplImage* getCameraFrame(void) • Thực hiện: - Mở camera bằng hàm cvCaptureFromCAM(). - Tạo cửa sổ sẽ hiện thị video bằng hàm cvSetCaptureProperty(). - Thực hiện lấy frame bằng hàm cvQueryFrame(). 1.2 Nhận diện khuôn mặt: • Sơ đồ thực hiện: Page 15 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA • Xử lý ảnh thu được từ camera hay webcam • Biến đổi ảnh đưa vào thành ảnh nhị phân. Bước 1 1 Bước • Kiểm tra ảnh đưa vào có khuôn mặt hay không., nếu có thì tếp tục thực hiện • Hiệu chỉnh ảnh lại : crop lấy khuôn mặt, resize ảnh với size 120x90. • Đỉnh lại độ sáng và độ tương phản cho ảnh. Bước 2 2 Bước • Dựa vào thuật toán gom nhóm ảnh để tm ra độ tn tưởng. • Hiện thị độ tn tưởng và kết luận lên màng hình. Bước 3 3 Bước • Hàm thực hiện trong chương trình: //Hàm chuyển ảnh sang hệ màu nhị phân IplImage* ChuyenMauAnh(const IplImage *CMA); //Hàm xác định có khuôn mặt trong ảnh hay không CvRect ViTriKhuonMat(const IplImage *AnhDaChuyen, const CvHaarClassifierCascade* cascade ); // Cân bằng lại hình khi độ sáng or tương phản quá thấp. equalizedImg = cvCreateImage(cvGetSize(sizedImg), 8, 1); cvEqualizeHist(sizedImg, equalizedImg); //Hàm chỉnh kích thước hình ảnh IplImage* resizeImage(const IplImage *origImg, int newWidth, int newHeight); //Hàm cắt crop vi trí khuôn mặt IplImage* cropImage(const IplImage *img, const CvRect region); //Hàm kiểm tra người có khả năng gần giống với người cần nhận dạng trước int NguoiGanGiongNhat(float * sprojectedTestFace); //Hàm đưa ra độ tin tưởng float KiemTraGiongKhuonMat(float * projectedTestFace, float *SuThat); Page 16 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA • Thực hiện: - Sau khi đã thu được ảnh (có khuôn mặt) từ camera và biến đổi theo ảnh quy định là ảnh có hệ màu nhị phân ,chỉ lấy vị trí có khuôn mặt, và kích thước 120x90. Ta tiếp tục thực hiện đến công đoạn so sánh ảnh mẫu với dữ liệu có trước. - Sử dụng hàm int NguoiGanGiongNhat(float * sprojectedTestFace) , bằng cách tính khoảng cách từ ảnh đưa vào đến ảnh có trong dữ liệu qua công thức tính khoảng cách Euchile, ta sẽ tìm được ảnh nào trong dữ liệu gần giống nhất với ảnh đang kiểm tra. - Sử dụng hàm float KiemTraGiongKhuonMat(float * projectedTestFace, float *SuThat); đã sẽ tìm được độ tin tưởng giữa ảnh đang kiểm tra và ảnh mẫu. Độ tin tưởng này được tính dựa vào kết quả phân tích theo thuật toán PCA. - Dựa vào độ tin tưởng, ta sẽ đưa ra được kết luận phù hợp. 1.3 Huấn luyện khuôn mặt: • Sơ đồ thực hiện: Bước 11 Bước Thực hiện quá trình lưu ảnh huấn luyện vào bộ nhớ. Phím 'T', thì bắt đầu quá trình huấn luyện. Bước 22 Bước Thực hiện quá trình xử lý ảnh và lưu dữ liệu mới. Phím 'Q', kết thúc quá trình lưu ảnh. Bước 33 Bước //Biến đổi ảnh thành các mảng int loadFaceImgArray(char * filename); // Thực hiện viêc biến đổi ảnh đưa vào thành vector và lưu vào dữ liệu void MayHoc(char *zfiletrain); Page 17 • • Nếu không tìm thấy khuôn mặt nào trong cơ sở dữ liệu, thì tiến hành huấn luyện khuôn mặt mới. sprintf(cstr, "LuuTru/%d_%s%d.jpg", SoNguoi+1, newHoTen, newNguoi+1); • • Sử dụng phím điều khiển theo quy định của chương trình. Hàm thực hiện trong chương trình: // Lưu ảnh huấn luyện vào thư mục LuuTru • • • Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA // Thuật giải PCA trong việc biến ảnh thành vector void thuatgiaiPCA(); //Save dữ liệu vào file dữ liệu khuôn mặt void SaveFaceData(); • Thực hiện: Khi không tìm thấy khuôn mặt nào hợp với dữ liệu thì người dùng bấm phím ‘T’ để bắt đầu qua trình huấn luyện. Lúc này yêu cầu nhập tên của Người chuẩn bị huấn luyện. Và biến cờ hiệu cho phép quá trình huấn luyện ảnh được kích hoạt . saveNextFaces = TRUE. Lúc này thì hàm sprintf được thực hiện và bắt đầu quá trình chụp ảnh của người cần huấn luyện để lưu vào thư mục LuuTru. (ảnh được lưu vào đã qua quá trình thực hiện có bước hiệu chỉnh ảnh như ở qua trình nhận diện) . Để kết thúc qua trình ấn phím ‘Q’, lúc này biến cờ hiệu . saveNextFaces =FALSE kết thúc quá trình lưu ảnh vào CSDL, tiếp tục thực hiện tới quá trinh Huấn Luyện Ảnh. Trong qua trình huấn luyện ảnh áp dụng phương pháp PCA để thu được ảnh theo yêu cầu, sau đó chuyển các ảnh thu được thành các vector và lưu vào file DuLieuKhuonMat. ** Kết quả: Trước khi máy học: Page 18 Sau khi máy học: Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2. XỬ LÝ OPEN IMAGES & HIỆU CHỈNH TRÊN HÌNH ẢNH: Ở phần này em xin trình bày phần xử lý và hiệu chình hình ảnh góp phần vào việc phục vụ cho quá trình máy học được thực hiện nhanh chóng với các phép biến đổi như: thay đổi kích cỡ ảnh cho phù hợp với ảnh khuôn mặt mà lúc máy chụp lưu vào cơ sở dữ liệu, chuyển ảnh từ ảnh màu sang ảnh màu xám 8bit để dễ phù hợp với thuật giải, ngoài ra thêm cần bằng mức xám (Histogram Equalization) giúp cân bằng sáng tối, giảm bớt độ tương phản ảnh bằng lược đồ Histogram. Mặt khác thì trong phần xử lý ảnh kèm theo một số chứ năng phụ như: o Xuất thông tin của ảnh khi load vào giúp người dùng hiểu rỏ hơn cấu trúc ảnh o Các thao tác cơ bản trên ảnh như:  Phóng to, thu nhỏ  Lập hình nếu hình bị lệch 1800  Chuyển hình ảnh đối xứng  Phân kênh màu của ảnh RGB thành 3 kênh : R, G, B  Chuyển ảnh xám sang dạng nhi phân  Chuyển ảnh xám sang dạng trắng đen  Phát hiện biên ảnh, ăn mòn, làm mỏng ảnh 2.1 Các hàm cơ bản trên OpenCV: 2.1.1 Đọc và hiển thị ảnh: Chúng ta sử dụng hàm cvLoadImage() trong module HighGui: Sử dụng cvReleaseImage() để giải phóng bộ nhớ khi không sử dụng để tiết kiệm tài nguyên hệ thống VD: IplImage *img = cvLoadImage("Hinh1.jpg",);// “Hinh1.jpg” là ten của file được trữ trong chương trình có thể là một đường dẫn thay thế. cvNamedWindow("Hinh Anh",1);//tạo cửa sổ có tên là “Hinh Anh” để hiện thị ảnh vừa đọc. cvShowImage("Hinh Anh", img);//hiển thị ảnh trên cửa sổ vừa tạo cvReleaseImage(&img); Page 19 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.2 Lưu ảnh ở dạng đuôi khác từ ảnh được chụp từ camera: Ở đây lưu ảnh chúng ta dùng hàm cvSaveImage() trong module HighGui. Cú pháp để lưu ảnh gốc load vào dưới một đuôi khác vd như: IplImage *img = cvLoadImage("Hinh1.jpg"); cvSaveImage(“Hinh1.png”,img); ta chỉ cần đổi trực tiếp tên đuôi của hình mà ta load là được. Tuy nhiên OpenCV hỗ trợ rất ít đuôi hình ảnh như: JPG, BMP, PNG. Nên việc chuyển đổi hay load hình còn hạn chế. 2.1.3 Load video hay capture từ webcam Load video thì chúng ta dùng con trỏ kiểu cvCapture *capture và tương tự lệnh load hình ảnh ta củng phải cho con trỏ trỏ đến cái video hay webcam bằng lệnh. cvCaptureFromCAM ( webcam), cvCaptureFromFile, cvCaptureFromAVI ( file video). Bạn sẽ lưu trữ con trỏ để sử dụng cvQueryFrame () để lấy frame. Khi bạn hoàn tất bằng cách sử dụng đầu vào video, gọi cvReleaseCapture() để giải phóng tài nguyên. Với cvReleaseImage(), bạn thông qua địa chỉ của con trỏ CvCapture để cvReleaseCapture(). Ảnh (IplImage) bạn nhận được từ cvQueryFrame()! Nếu bạn cần phải sửa đổi dữ liệu hình ảnh, tạo một bản sao để làm việc : Sao chép các khung hình video: IplImage * pImgToChange = cvCloneImage (pVideoFrame); Page 20 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA /Chèn mã xử lý hình ảnh của bạn ở đây ... / / sao chép sau khi sử dụng cvReleaseImage (& pImgToChange ); 2.1.4 Phân kênh màu bằng cvSplitPan của ảnh Đầu tiên ta nhận thấy tấm hình của mình đưa vào thường theo hệ màu RGB, ta khai báo 3 biến con trỏ để lưu trữ hình với từng kênh màu như mgred , mggreen, mgblue tương ứng với kênh màu red, green, blue. Bằng câu lệnh cvCreateImage() trong đó có hàm cvGetSize() dùng để lấy kích thước của ảnh nguồn. Và các ảnh này là ảnh 8bit và có số kênh là 1. mgred=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); mggreen=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); mgblue=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); Sau đó thì chúng ta chia kênh màu bằng hàm được dựng sẵn trong OpenCV là cvSplit() cvSplit(src,mgblue,mggreen,mgred,0); Hình ảnh minh họa a.Hệ RGB Page 21 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA b. Hệ R c.Hệ G Page 22 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA d. Hệ B Page 23 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.5 Chuyển ảnh qua hệ màu gray Để chuyển từ ảnh bình thường sang ảnh xám để giúp quá trình xử lý bớt phức tạp hơn ta dùng lệnh cvCreateImage() đề tạo ảnh có kích cỡ của ảnh nguồn (gồm chiều rộng, chiểu cao) thông qua con trỏ chứa địa chỉ ảnh nguồn. và ảnh này cũng có 8bit và số kênh là 1. Sau đó ta dùng thêm hàm cvCvtcolor(ảnh nguồn, ảnh đích, chế độ chuyển) trong trường hợp nảy ta dùng CV_RGB2GRAY để chuyển sang ảnh xám. Nó đóng vai trò quan trọng trong chuyển đổi vì nó chứa kết quả trả về. Hình minh họa Page 24 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.6 Chuyền ảnh gray qua BlackWhite Việc chuyển đổi sang dạng trắng đen dường như tương tự như trong chuyển đổi ảnh xám tuy nhiên để thực hiện việc chuyển đổi từ ảnh màu sang ảnh trắng đen cần phải có giai đoạn trung gian chuyển tiếp từ ảnh màu  ảnh xám  ảnh trắng đen. Trong đó việc chuyển đổi từ ảnh xám sang trắng đen được thực hiện bởi hàm chính cvAdaptiveThreshold(ảnh xám, ảnh trắng đen,0xFF); Hình minh họa Page 25 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.7 Chuyển ảnh gray qua nhị phân Việc chuyển đổi sang dạng trắng đen dường như tương tự như trong chuyển đổi ảnh xám tuy nhiên để thực hiện việc chuyển đổi từ ảnh màu sang ảnh trắng đen cần phải có giai đoạn trung gian chuyển tiếp từ ảnh màu  ảnh xám  ảnh nhị phân. Trong đó việc chuyển đổi từ ảnh xám sang ảnh nhị phân ta được thực hiện qua hàm cvThreshold(ảnh xám,ảnh nhị phân,100,250,CV_THRESH_BINARY); Hình minh họa Page 26 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.8 Căn bằng mức xám (Histogram Equalization). Cân bằng mức xám (Histogram equalization) là phương pháp dùng để giảm bớt độ tương phản của ảnh dựa vào lược đồ Histogram của ảnh. Page 27 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA Cân bằng Histogram Đối với ảnh là ảnh xám, việc cân bằng histogram là đơn giản, ta chỉ vần gọi hàm cvEqualizeHist(src, dst), trong đó src là ảnh xám nguồn và dst là ảnh xám đích có cùng kích thước. Tuy nhiên đối với trường hợp ảnh là ảnh mầu, đầu tiên ta phải chuyển đổi sang không gian màu hsv, sau đó cân bằng mức xám ở kênh màu V (value, tức là kênh về giá trị cường độ sáng), cuối cùng là hợp các kênh này lại dùng hàm cvMergeđể được kết quả IplImage *hsv=cvCloneImage(src);//copy anh goc Chuyển ảnh sang ảnh xám cvCvtColor(src,gray,CV_BGR2GRAY); Chuyển ảnh màu sang hệ HSV cvCvtColor(src,hsv,CV_RGB2HSV); Phân kênh H, S, V IplImage *h,*s, *v; h=cvCreateImage(cvGetSize(src),8,1); s=cvCreateImage(cvGetSize(src),8,1); v=cvCreateImage(cvGetSize(src),8,1); cvSplit(hsv,h,s,v,NULL); //chia hsv -> h , s , v Hiển thị Page 28 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA cvNamedWindow("anh luc dau",CV_WINDOW_NORMAL); cvNamedWindow("anh gray",CV_WINDOW_NORMAL); cvShowImage("anh luc dau",src); cvShowImage("anh gray", gray); Giai đoạn cân bằng-> giảm độ tương phản cho ảnh Đối với ảnh xám thì chỉ cần dùng hàm cvEqualizehist() để giảm bớt tương phản cvEqualizeHist(gray,gray); Đối với ảnh màu thì phải chuyển sang chế độ màu hsv, sau đó cân bằng ở kênh V (giá trị cường độ sáng). Cuối cùng nối tất cả lại bằng cvMerge(). cvEqualizeHist(v,v); cvMerge(h,s,v,NULL,hsv); cvCvtColor(hsv,src,CV_HSV2RGB); Hình minh họa o ảnh lúc đầu: o Ảnh màu sau khi cân bằng: Page 29 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o Ảnh xám o Ảnh xám sau khi cân bằng: Page 30 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.9 Phát hiện biên của ảnh, ăn mòn, làm mỏng ảnh: Phát hiện biên của ảnh trong trưởng hợp này là chỉ áp dụng với ảnh xám tức là ảnh màu muốn lấy biên thì chỉ còn cách chuyển sang xám và lấy biên. Ta cũng sử dụng lệnh cvCreateImage(). Trong đó ảnh kết quả lấy biên có kích cỡ tử ảnh xám chia đôi. Ngoài ra việc thực hiện chức năng chính lấy biên là của 2 hàm: cvPyrDown() và cvCanny(). out=cvCreateImage(cvSize(gray->width/2,gray->height/2),gray->depth,gray->nChannels); cvPyrDown(gray,out); cvCanny(out,out,10,100,3); Hình minh họa: Page 31 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA Ăn mòn và làm mỏng ảnh trước tiên để thực hiện thì ta phải sao chép hình gốc để thực hiện xử lý trên hình sao chép bằng câu lệnh cvCloneImage(). dst= cvCloneImage(src); Để làm mòn ảnh ta sử dụng hàm cvDilate() cvDilate(src,dst,NULL,2); Để làm dày ảnh ta sử dụng hàm cvErode() cvErode(src,dst,NULL,2); Hình minh họa: o Làm mòn ảnh: Page 32 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o Làm dày ảnh: Page 33 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.10 Thay đổi kích thước ảnh(phóng to, thu nhỏ), lập ảnh, đối xứng ảnh, thông tin chi tiết về hình Ở chức năng thay đổi kích thước ảnh ta sử dụng hàm cvResize(),cvResize(ảnh nguổn, ảnh đích,CV_INTER_CUBIC); Còn phóng to hay thu nhỏ là do chúng ta tăng hay giảm kích cỡ tương ứng của chiều dài, chiều rộng của ảnh nguồn trong hàm cvCreateImage(). Mục đích chính của hàm này để thay đổi kích cỡ cho phù hợp với yêu cầu của thuât giải giúp đồng bộ các ảnh khi lưu trữ và tìm ra các đặc trưng để nhận dạng. Lập ảnh (xoay ảnh nếu ảnh bị ngược 1800) để giúp cho quá trình xử lý của thuật giải ta sử dụng hảm cvFlip() trong đó tham số cuối là IM_HORIZONAL có giá trị mặc định là 0. cvFlip(ảnh nguồn, ảnh đích,0); Đối xứng ảnh để giúp cho quá trình xử lý của thuật giải ta sử dụng hảm cvFlip() trong đó tham số cuối là IM_VERTICAL có giá trị mặc định là 1. Page 34 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA cvFlip(ảnh nguồn, ảnh đích,1); Thông tin chi tiết về hình ảnh nguồn của người dùng load vào chương trình cho biết tất cả các thành phần như: kích cỡ, hệ màu, chiều dài, chiều rộng, số kênh, alphachannel… Hình minh họa: o ảnh ban đầu: Page 35 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o ảnh đối xứng: o thông tin chi tiết ảnh: Page 36 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA D. ĐÁNG GIÁ CHƯƠNG TRÌNH VÀ HƯỚNG PHÁT TRIỂN 1. Đánh giá chương trình: + Ưu điểm: - Khi chạy chương trình xuất ra thông tin của từng frame và độ tin tưởng của frame đó so với CSDL, nên mức độ tin tưởng từ phía người dùng đối với chương trình là do người dùng tự nhận định, từ đó sẽ có được kết luận chính xác về thông tin mình cần có. - Các chức năng của chương trình dễ dùng, đầy đủ với yêu cầu cơ bản của xử lý ,tạo hiệu ứng và nhận dạng trên hình ảnh và video. + Nhược điểm: - Chương trình viết trên console nên giao diện chương trình không đẹp. - Dữ liệu lưu trữ trong file DuLieuKhuonMat.xml lớn, dẫn đến quá trình hoạt động của chương trình chậm. - Tốc độ ‘học’ khuôn mặt mới tốn nhiều thời gian. - Một lần chỉ phát hiện và nhận dạng 1 khuôn mặt - Độ chính xác của chương trình khi nhận dạng khuôn mặt so với khuôn mặt mẫu là 70%. 2. Hướng phát triển chương trình: Page 37 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA - Phát hiện triển chức năng gom nhóm khuôn mặt, để thuận lợi cho quá trình nhận diện. Phát triển chương trình trên winform để đó giao diện thân thiện với người dùng. Tiếp tục cập nhập dữ liệu vào file dữ liệu mẫu. Nâng cao tốc độ đọc và ghi dữ liệu trong quá trình ‘học’ của máy. Phát triển chức năng Một lần thực hiên phát triển được nhiều khuôn mặt. E. TÀI LIỆU THAM KHẢO - Slide Cơ Sở Xử lý ảnh số của ĐH Bách Khoa Hà Nội. - Đề tài nhận dạng của TS.Nguyễn Thị Linh Giang. - Giáo trình xử lý ảnh Ths.Võ Đức Khánh, ĐHQG TP.HCM, ĐH Công Nghệ Thông Tin. - Website: o http://vietopencv.com o http://diendan.congdongcviet.com/showthread.php?t=108020 o http://www.cognotics.com/opencv/servo_2007_series Page 38 [...]... thì chúng ta chia kênh màu bằng hàm được dựng sẵn trong OpenCV là cvSplit() cvSplit(src,mgblue,mggreen,mgred,0); Hình ảnh minh họa a.Hệ RGB Page 21 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA b Hệ R c.Hệ G Page 22 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA d Hệ B Page 23 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.5 Chuyển ảnh qua hệ màu gray Để chuyển từ ảnh... xám,ảnh nhị phân,100,250,CV_THRESH_BINARY); Hình minh họa Page 26 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.8 Căn bằng mức xám (Histogram Equalization) Cân bằng mức xám (Histogram equalization) là phương pháp dùng để giảm bớt độ tương phản của ảnh dựa vào lược đồ Histogram của ảnh Page 27 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA Cân bằng Histogram Đối với ảnh là ảnh xám,... bằng ở kênh V (giá trị cường độ sáng) Cuối cùng nối tất cả lại bằng cvMerge() cvEqualizeHist(v,v); cvMerge(h,s,v,NULL,hsv); cvCvtColor(hsv,src,CV_HSV2RGB); Hình minh họa o ảnh lúc đầu: o Ảnh màu sau khi cân bằng: Page 29 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o Ảnh xám o Ảnh xám sau khi cân bằng: Page 30 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.9 Phát hiện biên của... cvErode(src,dst,NULL,2); Hình minh họa: o Làm mòn ảnh: Page 32 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o Làm dày ảnh: Page 33 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2.1.10 Thay đổi kích thước ảnh(phóng to, thu nhỏ), lập ảnh, đối xứng ảnh, thông tin chi tiết về hình Ở chức năng thay đổi kích thước ảnh ta sử dụng hàm cvResize(),cvResize(ảnh nguổn, ảnh đích,CV_INTER_CUBIC);.. .Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 12 Nội dung file OpenCVDemo.cpp: #include "stdafx.h" #include #include #include int _tmain(int argc, _TCHAR* argv[]) { IplImage *img = cvLoadImage("test.jpg"); cvNamedWindow("Image:",1); cvShowImage("Image:",img); cvWaitKey(); cvDestroyWindow("Image:"); cvReleaseImage(&img); return 0; } Page 11 Báo cáo Đồ Án ĐỒ HỌA... nhận diện khuôn mặt, hoặc xác định giới tính PCA được sử dụng theo ý tưởng là: sử dụng PCA nhận dạng khuôn mặt là thể hiện vector 1-D lớn các điểm ảnh xậy Page 13 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA dựng từ 2-D hình ảnh khuôn mặt vào các thành phần chủ yếu nhỏ gọn của khoảng tính năng Điều này có thể được gọi là eigenspace Eigenspace được tính bằng cách xác định các vector riêng... *SuThat); Page 16 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA • Thực hiện: - Sau khi đã thu được ảnh (có khuôn mặt) từ camera và biến đổi theo ảnh quy định là ảnh có hệ màu nhị phân ,chỉ lấy vị trí có khuôn mặt, và kích thước 120x90 Ta tiếp tục thực hiện đến công đoạn so sánh ảnh mẫu với dữ liệu có trước - Sử dụng hàm int NguoiGanGiongNhat(float * sprojectedTestFace) , bằng cách tính khoảng... Hình minh họa: Page 31 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA Ăn mòn và làm mỏng ảnh trước tiên để thực hiện thì ta phải sao chép hình gốc để thực hiện xử lý trên hình sao chép bằng câu lệnh cvCloneImage() dst= cvCloneImage(src); Để làm mòn ảnh ta sử dụng hàm cvDilate() cvDilate(src,dst,NULL,2); Để làm dày ảnh ta sử dụng hàm cvErode() cvErode(src,dst,NULL,2); Hình minh họa: o Làm... ảnh áp dụng phương pháp PCA để thu được ảnh theo yêu cầu, sau đó chuyển các ảnh thu được thành các vector và lưu vào file DuLieuKhuonMat ** Kết quả: Trước khi máy học: Page 18 Sau khi máy học: Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA 2 XỬ LÝ OPEN IMAGES & HIỆU CHỈNH TRÊN HÌNH ẢNH: Ở phần này em xin trình bày phần xử lý và hiệu chình hình ảnh góp phần vào việc phục vụ cho quá trình máy. .. dù ảnh đó là lớn hay nhỏ Thư viện này giúp người sử dụng có thể phân loại, phát hiện khuôn mặt trên quy mô lớn Cơ chế phân loại này được sử dụng các dữ liệu lưu trữ trong một tập tin XML để quyết định làm thế nào để phân loại từng vị trí hình ảnh OpenCv bao gồm bốn loại dữ liệu XML nhận diện Page 12 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA khuôn mặt phía trước, và một cho khuôn mặt hồ .. .Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA MỤC LỤC Page Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA I LÝ DO CHỌN ĐỀ TÀI Ngày vấn đề an ninh đặt lên hàng đầu việc ứng. .. minh họa: o ảnh ban đầu: Page 35 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA o ảnh đối xứng: o thông tin chi tiết ảnh: Page 36 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA. .. sẵn OpenCV cvSplit() cvSplit(src,mgblue,mggreen,mgred,0); Hình ảnh minh họa a.Hệ RGB Page 21 Báo cáo Đồ Án ĐỒ HỌA MÁY TÍNH - ỨNG DỤNG OPENCV & CAMERA b Hệ R c.Hệ G Page 22 Báo cáo Đồ Án ĐỒ HỌA MÁY

Ngày đăng: 17/10/2015, 11:32

Từ khóa liên quan

Mục lục

  • I. LÝ DO CHỌN ĐỀ TÀI

  • II. MÔ HÌNH THỰC HIỆN:

  • III. TIẾN ĐỘ THỰC HIỆN:

  • IV. NỘI DUNG THỰC HIỆN

    • A. Tìm hiểu sơ lược OpenCV2.1

      • 1. Giới thiệu OpenCV:

      • 2. Ai sẽ sử dụng OpenCV?

      • 3. Sử dụng OpenCV để làm gì?

      • 4. Các chức năng cơ bản:

        • 4.1 General computer-vision and image-processing algorithms:

        • 4.2 High-level computer-vision modules:

        • 4.3 AI and machine-learning methods:

        • 4.4 Methods for creating and analyzing binary (two-valued) images:

        • 4.5 Graphics:

        • 4.6 GUI methods:

        • 5. Tổ chức :

        • 6. Cài đặt OpenCV:

        • B. NHẬN DIỆN KHUÔN MẶT:

          • 1. Thư viện nhận diện:

            • 1.1 Các thư viện:

            • 2. Thuật toán Principal Component Analysis (PCA):

              • 2.1 Giới thiệu:

              • 2.2 Ứng dụng PCA trong nhận diện:

              • 2.3 Thuật toán PCA:

              • 2.4 Giải thuật phân nhóm khuôn mặt:

              • C. CHƯƠNG TRÌNH THỰC HIỆN:

                • 1. XỬ LÝ OPEN CAMERA & NHẬN DIỆN KHUÔN MẶT:

Tài liệu cùng người dùng

Tài liệu liên quan