Đến nội dung chính
Thị giác máy tính

Depth Estimation từ hình ảnh

Phân biệt relative depth, metric depth và stereo geometry trước khi dùng bản đồ khoảng cách.

Mức giải thích

Depth map gắn một giá trị khoảng cách hoặc quan hệ chiều sâu với pixel. Màu đẹp trên bản đồ không chứng minh mỗi giá trị đã có đơn vị mét hay đủ chính xác để điều khiển robot.

Mục tiêu học tập

  • Phân biệt độ sâu tương đối và thang đo metric.
  • Giải thích disparity trong stereo rectifié.
  • Nêu các giả định và trường hợp lỗi trước khi dùng depth.

Một ảnh cho biết gì về 3D?

Monocular depth học ánh xạ ảnh sang depth hoặc inverse depth theo mục tiêu cụ thể. Có phương pháp học từ ground-truth depth metric, có phương pháp chỉ được ràng buộc đến một scale hoặc affine ambiguity. Không mặc định mọi mô hình monocular đều không metric hoặc đều metric.

Công trình của Eigen et al. minh họa cách kết hợp thông tin toàn cục và cục bộ cùng sai số liên quan scale. Bài này không tái hiện kiến trúc hay kết quả thực nghiệm của paper.

Hai ảnh và baseline đã biết

Trong stereo rectifié lý tưởng, Z=fB/dZ=fB/d, với focal length f và disparity d tính bằng pixel, baseline B theo mét thì Z theo mét. Cần camera calibration, rectification và correspondence đúng. Z là chiều sâu dọc trục quang học, không phải khoảng cách Euclid từ camera đến mọi điểm ảnh.

Không áp dụng công thức cho disparity bằng 0 hoặc âm khi convention yêu cầu disparity dương. Ví dụ f=500 px, B=0.1 m và d=10 px cho Z=5 m trong mô hình pinhole lý tưởng; đây là phép tính giả định, không phải số đo camera.

Đánh giá trước khi dùng

Metric depth có thể dùng MAE, RMSE hoặc relative error trên pixel hợp lệ theo protocol. Ghi sensor ground truth, vùng không có nhãn và cách resize output. Kiểm tra cả biên vật thể và vùng xa, nơi lỗi trung bình dễ che khuất.

Workflow & kiến trúc

Stereo rectifié: baseline B và tiêu cự f đã biết cho phép suy ra Z = fB/d từ disparity d khác 0. Một ảnh monocular không cung cấp baseline, nên không tự xác định được thang đo tuyệt đối.
01Kiểm tra camera
02Ước lượng / match pixel
03Scale + valid mask
04Đánh giá depth
Workflow minh họa · Các bước cần được điều chỉnh theo bài toán thực tế.

Ứng dụng & giới hạn

  • Tạo hình học gần đúng cho scene understanding.
  • Cung cấp đầu vào có kiểm chứng cho mapping hoặc manipulation.

Điểm mạnh

Bổ sung cấu trúc 3D mà box và class label không cung cấp.

Giới hạn cần nhớ

Scale, calibration, domain shift và vật liệu gây ambiguity; depth không tự bảo đảm khoảng cách an toàn.

Thử trong một project nhỏ

LEARN BY DOING

Giữ f và B như ví dụ, tính Z khi disparity là 9 và 11 px. So sai số này với trường hợp disparity 2 px để giải thích độ nhạy theo khoảng cách.

PYTHON · VÍ DỤ MINH HỌA
def stereo_depth(f_px, baseline_m, disparity_px):
    if f_px <= 0 or baseline_m <= 0 or disparity_px <= 0:
        raise ValueError("Positive calibrated values required")
    return f_px * baseline_m / disparity_px
assert stereo_depth(500.0, 0.1, 10.0) == 5.0
print(stereo_depth(500.0, 0.1, 10.0))

Công thức pinhole cho stereo rectifié với số tự chọn; không chạy camera hay ước lượng disparity.

Nguồn tham khảo

  1. Eigen, Puhrsch & Fergus — Depth Map Prediction (2014)
  2. Cadena et al. — Past, Present, and Future of SLAM (2016)
  3. OpenCV — Depth Map from Stereo Images

KEEP EXPLORING

Đọc tiếp để nối các ý tưởng.