You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于四角等深约束的深度图像深度平衡校正方案咨询

深度图像四角等深校正问题

我有一张尺寸为11 x 23的深度图像,需要利用四个角点深度值一致的特性,对所有像素的深度值做平衡校正,各角点原始数值见下图:
深度值示意图

初始线性校正方案

最初的实现思路是计算相邻角点的深度差,按像素位置累加对应校正差值,代码如下:

import math

def corr_func(arr):
    """
    离散深度值线性校正函数
    参数:
        arr: 待校正深度图像,ndarray格式
    返回:
        arr: 校正后的深度图像,ndarray格式
    """
    c_00 = int(arr[0][0])
    c_01 = int(arr[0][-1])
    c_10 = int(arr[-1][0])

    y_corr = (c_01 - c_00)/arr.shape[1]
    x_corr = (c_10 - c_00)/arr.shape[0]
    print("x_corr = {}, y_corr = {}".format(x_corr, y_corr))

    r, c = arr.shape[:2]

    for i in range(r):
        for j in range(c):
            corr = math.floor(j*y_corr + i*x_corr)
            arr[i,j] -= corr
    return arr

该方案校正效果较差,问题出在校正值会随坐标累积,导致对角位置的角点校正后数值偏离合理范围。


旋转变换校正方案

后续参考建议,将深度值作为z轴坐标,计算X、Y轴方向的旋转角度,通过旋转变换完成校正,代码如下:

from math import atan2, cos
import numpy as np

def corr_func(arr):
    """
    离散深度值非线性校正函数
    参数:
        arr: 待校正深度图像,ndarray格式
    返回:
        arr: 校正后的深度图像,ndarray格式
    """
    c_00 = int(arr[0][0])
    c_01 = int(arr[0][-1])
    c_10 = int(arr[-1][0])

    alpha = atan2((c_01 - c_00), arr.shape[1])
    beta  = atan2((c_10 - c_00), arr.shape[0])

    arr = arr * cos(alpha) * cos(beta)
    arr = arr.astype(np.uint8)
    return arr

该方案效果优于前述线性校正方法,但仍有优化空间,现寻求精度更高的校正方案。


内容的提问来源于stack exchange,提问作者Bilal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 21:03:57