我想知道测试t&t数据集时出现的深度图异常状况原因,感谢作者
crazydiamondaz opened this issue · 8 comments
方便发一下,出现这个问题对应的image id 以及 你运行的脚本吗
感谢您的回复!
我使用的脚本:
CUDA_VISIBLE_DEVICES=0 python test.py --dataset tt --batch_size 1
--testpath "/dockerdata/yorkan/dataset/tnt/tankandtemples/advanced"
--testlist "./lists/tanksandtemples/advanced.txt"
--resume "/dockerdata/yorkan/dataset/tnt/MVSFormer-Blended/best.pth"
--outdir "/dockerdata/yorkan/tnt/output"
--interval_scale 1.0 --num_view 10 --numdepth 256
--max_h 1088 --max_w 1920 --filter_method dpcd
--prob_threshold 0.5,0.5,0.5,0.5
--combine_conf --tmps 5.0,5.0,5.0,1.0
输入的图片(Temples数据集序号23图片):
输出的深度图:(我将pfm转换为了图片格式,GitHub无法直接发送pfm文件)
将pfm转换为pfm的脚本如下:
def read_pfm(file_path):
with open(file_path, "rb") as file:
color = None
width = None
height = None
scale = None
endian = None
header = file.readline().decode("utf-8").rstrip()
if header == "PF":
color = True
elif header == "Pf":
color = False
else:
raise Exception("Not a PFM file.")
dimensions = file.readline().decode("utf-8").rstrip()
width, height = map(int, dimensions.split(" "))
scale = float(file.readline().decode("utf-8").rstrip())
if scale < 0:
endian = "<"
scale = -scale
else:
endian = ">"
data = np.fromfile(file, endian + "f")
shape = (height, width, 3) if color else (height, width)
data = np.reshape(data, shape)
data = np.flipud(data)
return data, scale
def pfm_to_jpg(pfm_file, jpg_file):
data, _ = read_pfm(pfm_file)
print(np.min(data),np.max(data))
data = (data - np.min(data)) / (np.max(data) - np.min(data)) * 255
data = data.astype(np.uint8)
image = Image.fromarray(data)
image.save(jpg_file)
再次感谢您的回复与工作
其实这个和depth range有关系,我看了一下,22 和23 的image 他们的camera 的depth range 是0.3 左右,前面一些图片他们的最小depth range是0.6左右,你其实可以手动修改他的depth range,把最小的depth range 设置高一点depth 就会好一些,出现这个原因主要是因为 在depth sample的时候采用的inverse sampling, 最小的depth range 不能太小
你可以手动check一下,如果最小的depth range 设置的比较小,你可以打印每个stage的depth value的范围
感谢您的回复,我实验了一下,那张图片确实会生成不错的深度,但是周围的原本正常的序号22图片生成出了错误的深度图。这是正常的吗?还是我应该去调整每个图片的depth range,才能得到不错的深度图和正确的模型呢?
感谢您的回复,我实验了一下,那张图片确实会生成不错的深度,但是周围的原本正常的序号22图片生成出了错误的深度图。这是正常的吗?还是我应该去调整每个图片的depth range,才能得到不错的深度图和正确的模型呢?
补充信息:我在使用前面的脚本实验时,除了Temple以外的所有模型都能正确生成,除了产生了错误深度图的Temple无法生成正确的点云模型。
感谢您的回复,我实验了一下,那张图片确实会生成不错的深度,但是周围的原本正常的序号22图片生成出了错误的深度图。这是正常的吗?还是我应该去调整每个图片的depth range,才能得到不错的深度图和正确的模型呢?
一般而言colmap其实估计出来的depth range 比较好,出现depth 很远的情况,主要是我们后面depth range 在refine的时候,可能有越界的问题, 所以限制一下最近depth 就可以解决。(当然也可以代码里对depth range进行限制)