Báo cáo đồ án đồ họa máy tính đề tài ứng dụng opencv camera
Trang 1TRƯỜ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
Trang 2M C L C ỤC LỤC ỤC LỤC
I LÝ DO CHỌN ĐỀ TÀI 4
II MÔ HÌNH THỰC HIỆN: 4
III TIẾN ĐỘ THỰC HIỆN: 5
IV NỘI DUNG THỰC HIỆN 5
A Tìm hiểu sơ lược OpenCV2.1 6
1. Giới thiệu OpenCV: 6
2 Ai sẽ sử dụng OpenCV? 6
3 Sử dụng OpenCV để làm gì? 6
4 Các chức năng cơ bản: 6
5. Tổ chức : 7
6. Cài đặt OpenCV: 7
B NHẬN DIỆN KHUÔN MẶT: 13
1 Thư viện nhận diện: 13
2 Thuật toán Principal Component Analysis (PCA): 14
C CHƯƠNG TRÌNH THỰC HIỆN: 17
1. XỬ LÝ OPEN CAMERA & NHẬN DIỆN KHUÔN MẶT: 17
1.1 Xử lý Open Camera: 17
1.2 Nhận diện khuôn mặt: 17
1.3 Huấn luyện khuôn mặt: 19
2. XỬ LÝ OPEN IMAGES & HIỆU CHỈNH TRÊN HÌNH ẢNH: 21
2.1 Các hàm cơ bản trên OpenCV: 21
2.1.1 Đọc và hiển thị ảnh: 22
Trang 32.1.2 Lưu ảnh ở dạng đuôi khác từ ảnh được chụp từ camera: 22
2.1.3 Load video hay capture từ webcam 23
2.1.4 Phân kênh màu bằng cvSplitPan của ảnh 23
2.1.5 Chuyển ảnh qua hệ màu gray 27
2.1.6 Chuyền ảnh gray qua BlackWhite 28
2.1.7 Chuyển ảnh gray qua nhị phân 29
2.1.8 Căn bằng mức xám (Histogram Equalization) 30
2.1.9 Phát hiện biên của ảnh, ăn mòn, làm mỏng ảnh: 34
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 37
D ĐÁNG GIÁ CHƯƠNG TRÌNH VÀ HƯỚNG PHÁT TRIỂN 40
1 Đánh giá chương trình: 40
+ Ưu điểm: 40
+ Nhược điểm: 40
2 Hướng phát triển chương trình: 41
E TÀI LIỆU THAM KHẢO 41
Trang 4I. 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
OpenCV2.1 + Camera
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,
ăn mòn Lấy biên ảnh, phân kênh màu
Sử dụng sơ đồhistogram giảm bớt độ tương phản
Xuất thông tin ảnh, đối xứng ảnh
Mở Ảnh chụp được
Open video
Nhận diện khuôn mặt
Huấn luyện khuôn mặt
Trang 5III TIẾN ĐỘ THỰC HIỆN:
1 - Tìm hiểu OpenCV
- Chọn đề tài
- Phân công công việc cho mỗi thành viên
2 - 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
3 - Đã 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
4 - 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
5 - 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
Trang 61 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 địnhcấ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 :
Trang 7- 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 :
- 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 giaodiệ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:
Trang 81 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
Trang 95 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:
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.
Trang 108 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
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:
Trang 1111 Cấu hình VC++ Directories:
o Include Directories add: 'C:\OpenCV2.1\include\opencv;'
o Library Directories:
o Debug Builds add: 'C:\OpenCV2.1\build\lib\Debug’, ‘C:\OpenCV2.1\build\bin\Debug’
o Release Builds add: 'C:\OpenCV2.1\build\lib\Release’, ‘C:\OpenCV2.1\build\bin\Release’
o 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;'
o Linker -> Input -> Additional Dependencies
o Debug Builds add: 'cv210d.lib; cxcore210d.lib; highgui210d.lib;'
o Release Builds add: 'cv210.lib; cxcore210.lib; highgui210.lib;'
Trang 1212 Nội dung file OpenCVDemo.cpp:
Trang 13 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:
Trang 14OpenCv 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ữ trongmộ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 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
- Các tính của PCA:
Trang 15 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 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
Trang 16 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 = μivi => AATAvi = μiAvi =>Cavi = μiAvi hoặc Cui= μiui 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: ui= 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
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)
Trang 17Bướ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
- 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()
Dựa vào thuật toán gom nhóm ảnh để tìm ra độ tin tưởng
Hiện thị độ tin tưởng và kết luận lên màng hình
Trang 18 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 );
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
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:
Trang 19 Hàm thực hiện trong chương trình:
// Lưu ảnh huấn luyện vào thư mục LuuTru
sprintf(cstr, "LuuTru/%d_%s%d.jpg" , SoNguoi+1, newHoTen, newNguoi+1);
//Biến đổi ảnh thành các mảng
// Thực hiện viêc biến đổi ảnh đưa vào thành vector và lưu vào dữ liệu
// Thuật giải PCA trong việc biến ảnh thành vector
//Save dữ liệu vào file dữ liệu khuôn mặt
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
Bước 1
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
Sử dụng phím điều khiển theo quy định của chương trình
Bước 2
Phím 'T', thì bắt đầu quá trình huấn luyện
Thực hiện quá trình lưu ảnh huấn luyện vào bộ nhớ
Bước 3
Phím 'Q', kết thúc quá trình lưu ảnh
Thực hiện quá trình xử lý ảnh và lưu dữ liệu mới
Trang 20- Để 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: Sau khi máy học:
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