trang chủ / đề bài / hcm_tst_22_a

Nhận diện gương mặt

Đề bài

Mô tả

Nhận diện gương mặt là một bài toán kinh điển trong lĩnh vực trí tuệ nhân tạo và đang được áp dụng vào nhiều ứng dụng thực tế ngày nay. Một bộ lọc cạnh dùng đặc trưng Haar để nhận diện ra mắt trên mặt người dùng hai hình chữ nhật gọi là vùng trắng w và vùng đen b để quét qua bức ảnh.

Bạn được cho một tấm ảnh hình vuông có kích thước N×N chứa các điểm ảnh có các giá trị p (0≤p≤255) với gốc tọa độ (0;0) ở góc trái trên, trục x hướng từ trái sang phải, trục y hướng từ trên xuống dưới, và T bộ lọc cạnh, bộ lọc thứ i thể hiện bằng hai hình chữ nhật wi và bi (lần lượt là vùng trắng và vùng đen). Mỗi hình chữ nhật thể hiện bằng 4 con số là tọa độ góc trái trên và góc phải dưới của nó khi đặt lên tấm ảnh. Như vậy x là chỉ số cột (đánh số từ 0, từ trái sang phải) và y là chỉ số dòng (đánh số từ 0, từ trên xuống dưới); hình chữ nhật gồm cả các điểm ảnh nằm trên biên của nó.

Đặc trưng Haar thứ k của bộ lọc được tính bằng hiệu của tổng giá trị các điểm ảnh trong vùng trắng thứ k với tổng giá trị các điểm ảnh trong vùng đen thứ k:

Haark=∑pi,j∈(wk)pi,j−∑px,y∈(bk)px,y

Yêu cầu: Cho trước một tấm ảnh và các bộ lọc. Với mỗi bộ lọc, hãy tính đặc trưng Haar tương ứng.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên N và T lần lượt là kích thước của ảnh và số lượng đặc trưng cần phải tính.
  • N dòng tiếp theo, mỗi dòng chứa N số nguyên trong khoảng [0;255] là giá trị các điểm ảnh (dòng thứ y+1 trong số đó ứng với dòng y của ảnh, số thứ x+1 trên dòng ứng với cột x).
  • T dòng tiếp theo, mỗi dòng là một bộ lọc cạnh dùng để tính các đặc trưng. Bộ lọc i được biểu diễn bằng hai hình chữ nhật wi và bi, mỗi hình chữ nhật biểu diễn bằng 4 số nguyên lần lượt là x1,y1,x2,y2 là cặp tọa độ của góc trái trên (x1;y1) và góc phải dưới (x2;y2), 0≤x1≤x2<N, 0≤y1≤y2<N. Như vậy mỗi dòng gồm 8 số: 4 số của wi rồi 4 số của bi.

Dữ liệu ra

In ra T số nguyên, mỗi số trên một dòng, là các đặc trưng Haar tương ứng với các bộ lọc được cho trong dữ liệu vào.

Ràng buộc

  • 1≤N≤103, 1≤T≤2×105.
  • 0≤p≤255.
  • 0≤x1≤x2<N, 0≤y1≤y2<N.

Subtasks

  • Subtask 1 (30% số điểm): 1≤N≤102 và 1≤T≤2×104.
  • Subtask 2 (30% số điểm): 1≤N≤103 và 1≤T≤5×104.
  • Subtask 3 (40% số điểm): 1≤N≤103 và 1≤T≤2×105.

Ví dụ

Input Output Giải thích
5 2
0 0 0 0 0
0 2 2 2 2
0 2 7 6 5
0 2 2 2 2
0 0 0 0 0
1 0 2 2 3 0 4 2
0 1 4 2 0 3 4 4
-2
20
Bộ lọc thứ nhất: vùng trắng gồm các cột 1..2 của các dòng 0..2, tổng là 0+0+2+2+2+7=13; vùng đen gồm các cột 3..4 của các dòng 0..2, tổng là 0+0+2+2+6+5=15. Đặc trưng Haar thứ nhất là 13−15=−2. Bộ lọc thứ hai: vùng trắng là các dòng 1..2 (tổng 28), vùng đen là các dòng 3..4 (tổng 8), đặc trưng là 20.
3 2
1 2 3
4 5 6
7 8 9
0 0 0 0 2 0 2 2
0 1 2 2 1 1 1 1
-17
34
Ví dụ bổ sung. Bộ lọc thứ nhất: vùng trắng là điểm ảnh ở cột 0, dòng 0 (giá trị 1); vùng đen là cột 2 (gồm 3+6+9=18), đặc trưng là 1−18=−17. Bộ lọc thứ hai: vùng trắng là các dòng 1..2 (tổng 39), vùng đen là điểm ảnh ở cột 1, dòng 1 (giá trị 5), đặc trưng là 34.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0