Bộ lọc phân vùng 1 Mục đích

Một phần của tài liệu Đồ án tốt nghiệp: Xử lý ảnh phát hiện khuôn mặt người (Trang 83)

CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH VÀ MỘT SỐ KẾT QUẢ MINH HỌA

4.5.4. Bộ lọc phân vùng 1 Mục đích

4.5.4.1. Mục đích

Mục đích xây dựng lớp này là để xác định các vùng trắng trong ảnh nhị phân. Các vùng trắng được xác định bằng thuật toán phân vùng nâng cao. Trong lớp này cũng cài đặt cả thuật toán phân vùng bình thường. Tên trong chương trình của nó là: BoLocPhanVung.

4.5.4.2. Các thuộc tính

Lớp có 2 thuộc tính là:

• int ChieuDaiCua: dùng để thiết lập ngưỡng kích thước của liên kết yếu.

• ArrayList DSVung: dùng trả về danh sách vùng trắng đã tìm được

trong ảnh. Mỗi phần tử trong danh sách này là 1 đối tượng của lớp VungTrang.

4.5.4.3. Các phương thức

* BoLocPhanVung()

• Hàm tạo không đối.

• Dùng gán các giá trị mặc định cho các biến.

* unsafe void XDVungNC(byte* p0, int x, int y)

• Dùng xác định 1 vùng trắng khi phát hiện ra nó và thêm vùng trắng này vào danh sách vùng trắng.

• Thuật toán phân vùng được áp dụng là phân vùng nâng cao, tức là có cài đặt để loại bỏ các liên kết yếu.

• p0 là con trỏ đến điểm đầu tiên trong ảnh (điểm có tọa độ (0,0)). x, y là tọa độ của điểm bắt đầu vùng trắng này.

* unsafe void KT_HangXomNC(byte* p0, int x2, int y2,

• Dùng kiểm tra xem hàng xóm của điểm đang xét có thỏa mãn điều kiện để đưa vào vùng trắng đang xây dựng không. Khi ta lấy 1 điểm ra khỏi hàng đợi, ta sẽ phải duyệt qua các hàng xóm của nó (4 hàng xóm trên, dưới, trái, phải). Với mỗi hàng xóm, ta phải xác định xem có thể đưa nó vào vùng trắng đang xây dựng không. Điều kiện để đưa vào là: là điểm trắng, chưa gán nhãn và không nằm trên liên kết yếu. Phương thức này sẽ giúp ta thực hiện điều đó.

* unsafe void XDVung(byte* p0, int x, int y)

• Phương thức này tương tự phương thức XDVungNC như ở trên. Chỉ khác ở chỗ nó bỏ qua việc kiểm tra điều kiện liên kết yếu.

* unsafe void KT_HangXom(byte* p0, int x2, int y2,

VungTrang vt)

• Cũng như KT_HangXomNC, khác ở chỗ, trong các điều kiện kiểm tra hàng xóm không có điều kiên kiểm tra có thuộc liên kết yếu không, chỉ kiểm tra xem có phải là điểm trắng và đã gán nhãn chưa thôi.

• Việc giảm bớt điều kiện kiểm tra sẽ tăng tốc xử lý.

* unsafe void XetCuaNgang(byte* p0, int x, int y)

• Phương thức kiểm tra liên kết yếu theo phương ngang.

• Quá trình thực hiện của phương thức này như trình bày trong thuật toán xác định liên kết yếu được trình bày trong chương 2.

* unsafe void XetCuaDoc(byte* p0, int x, int y)

• Phương thức kiểm tra liên kết yếu theo phương thẳng đứng. * void Apply(Bitmap anh)

• Phương thức thực hiện duyệt trên 1 ảnh nhị phân vào, để tìm ra các vùng trắng.

• Thuật toán phân vùng được cài đặt trong phương thức này là thuật toán phân vùng nâng cao (loại bỏ liên kết yêu).

• Nội dung thuật toán phân vùng nâng cao được trình bày trong chương 2.

4.5.4.4. Vị trí

* NameSpace: PhatHienMatNguoi

* DLL: lớp này được xây dựng trong chương trình nên không nằm trong dll nào cả.

Một phần của tài liệu Đồ án tốt nghiệp: Xử lý ảnh phát hiện khuôn mặt người (Trang 83)