Closed crazydiamondaz closed 8 months ago
方便发一下,出现这个问题对应的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, jpgfile): 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进行限制)
我在使用作者的代码测试t&t数据集中的temple例时,发现生成的视图有好有坏,我想知道这些较坏的例子是因为什么导致的,是因为我的失误,还是因为网络无法匹配出明显的特征,还是因为pair.txt中指出的参考图片有误。正确生成的深度图如下所示:
错误生成的深度图包括如下例子:
我未对作者的代码进行修改,只降低了分辨率运行测试。
最后感谢作者的付出与劳动,感谢开源!