Thuật toán NCC (Normalized Cross-Correlation) là một phương pháp trong xử lý ảnh được sử dụng để tìm sự tương đồng giữa hai hình ảnh. NCC đo lường độ tương đồng giữa hai phần của hình ảnh bằng cách so sánh giá trị tại mỗi điểm ảnh và tính toán tổng của tích chúng. Sau đó, kết quả được chuẩn hóa để có giá trị trong khoảng [-1, 1], giảm ảnh hưởng của độ lớn của hình ảnh.
Mô hình toán học của Normalized Cross-Correlation (NCC) mô tả cách tính sự tương đồng giữa hai hình ảnh. Giả sử có hai ma trận 2D và A và B có kích thước M×N và m×n tương ứng. Dưới đây là mô hình toán học của NCC:
1. Trung bình cục bộ:
Tính giá trị trung bình của từng ma trận A và B theo công thức:
[imath] \bar{A} = \frac{1}{MN} \sum_{i=1}^{M} \sum_{j=1}^{N} A(i,j) [/imath]
[imath] \bar{B} = \frac{1}{mn} \sum_{i=1}^{m} \sum_{j=1}^{n} B(i,j)[/imath]
2. Chuẩn hóa ma trận:
[imath]\tilde{B}(i,j) = B(i,j) - \bar{B}[/imath]
3. Tương quan chéo:
Tính toán cross-correlation giữa [imath]\tilde{A}[/imath] và [imath]B[/imath] bằng cách sử dụng công thức:
[imath]C(i,j) = \sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{A}(i+u-1,j+v-1) \cdot \tilde{B}(u,v)[/imath]
4. Chuẩn hóa tương quan chéo (cross-correlation):
Chuẩn hóa giá trị tương quan chéo để có giá trị nằm trong khoảng [-1, 1]:
[imath]\text{NCC}(i,j) = \frac{C(i,j)}{\sqrt{\sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{A}(i+u-1,j+v-1)^2 \cdot \sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{B}(u,v)^2}}[/imath]
Trong đó:
Dưới đây là một ví dụ về nhận dạng đối tượng sử dụng NCC với thư viện OpenCV:
Mô hình toán học của Normalized Cross-Correlation (NCC) mô tả cách tính sự tương đồng giữa hai hình ảnh. Giả sử có hai ma trận 2D và A và B có kích thước M×N và m×n tương ứng. Dưới đây là mô hình toán học của NCC:
1. Trung bình cục bộ:
Tính giá trị trung bình của từng ma trận A và B theo công thức:
[imath] \bar{A} = \frac{1}{MN} \sum_{i=1}^{M} \sum_{j=1}^{N} A(i,j) [/imath]
[imath] \bar{B} = \frac{1}{mn} \sum_{i=1}^{m} \sum_{j=1}^{n} B(i,j)[/imath]
2. Chuẩn hóa ma trận:
- Chuẩn hóa từng ma trận A và B bằng cách trừ giá trị trung bình từ từng phần tử:
[imath]\tilde{B}(i,j) = B(i,j) - \bar{B}[/imath]
3. Tương quan chéo:
Tính toán cross-correlation giữa [imath]\tilde{A}[/imath] và [imath]B[/imath] bằng cách sử dụng công thức:
[imath]C(i,j) = \sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{A}(i+u-1,j+v-1) \cdot \tilde{B}(u,v)[/imath]
4. Chuẩn hóa tương quan chéo (cross-correlation):
Chuẩn hóa giá trị tương quan chéo để có giá trị nằm trong khoảng [-1, 1]:
[imath]\text{NCC}(i,j) = \frac{C(i,j)}{\sqrt{\sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{A}(i+u-1,j+v-1)^2 \cdot \sum_{u=1}^{m} \sum_{v=1}^{n} \tilde{B}(u,v)^2}}[/imath]
Trong đó:
- [imath] [/imath]
- [imath] \bar{A}[/imath] và [imath]\bar{B} [/imath] là giá trị trung bình của ma trận A và B tương ứng
- là giá trị trung bình của ma trận �A và �B tương ứng.
- [imath]\tilde{A} [/imath] và [imath] \tilde{B}[/imath] là ma trận đã được chuẩn hóa.
- C là ma trận tương quan chéo.
- NCCNCC là giá trị chuẩn hóa tương quan chéo.
Dưới đây là một ví dụ về nhận dạng đối tượng sử dụng NCC với thư viện OpenCV:
Sửa lần cuối bởi điều hành viên: