different between groundtruth and rendered images
Hi~, your work is brilliant! I trained with 62 car images and the mesh color was blurred, so I rendered the images and found they were not consistent with groundtruth images. And I rendered 3DGS with gaussian-splatting-lightning(https://github.com/yzslab/gaussian-splatting-lightning), but only found 2 images inconsistent with groundtruth images? Do you know the reason?
mesh color:
2DGS inconsistent rendered images in all left-back views:
3DGS inconsistent rendered images:
Hi. I don't understand your description clearly. It seems like your camera is not ideal pinhole. Can you print view_camera.cx , view_camera.cy and make sure if they are half of the image width and height?
I thought that blurred texture might be caused by inaccurate pose, so I rendered the image compared with gt and found the difference. But I used the same data to train a 3DGS and only found 2 different images, I don't know why, is there truncation in poses? By the way, my camera is a SIMPLE RADIAL camera with params=array([1.38891132e+03, 4.50000000e+02, 8.00000000e+02, 3.05757764e-02])) Also, I found the mesh of the car only 28228 points and 54531 faces, but point_cloud.ply has 206146 points, maybe the triangle is too big leading to a blurred color.
Hi, may be you can try this for off-center projection
def getProjectionMatrixShift(znear, zfar, focal_x, focal_y, cx, cy, width, height, fovX, fovY):
tanHalfFovY = math.tan((fovY / 2))
tanHalfFovX = math.tan((fovX / 2))
# the origin at center of image plane
top = tanHalfFovY * znear
bottom = -top
right = tanHalfFovX * znear
left = -right
# shift the frame window due to the non-zero principle point offsets
offset_x = cx - (width/2)
offset_x = (offset_x/focal_x)*znear
offset_y = cy - (height/2)
offset_y = (offset_y/focal_y)*znear
top = top + offset_y
left = left + offset_x
right = right + offset_x
bottom = bottom + offset_y
P = torch.zeros(4, 4)
z_sign = 1.0
P[0, 0] = 2.0 * znear / (right - left)
P[1, 1] = 2.0 * znear / (top - bottom)
P[0, 2] = (right + left) / (right - left)
P[1, 2] = (top + bottom) / (top - bottom)
P[3, 2] = z_sign
P[2, 2] = z_sign * zfar / (zfar - znear)
P[2, 3] = -(zfar * znear) / (zfar - znear)
return P
Secondly, if the triangle is too big that means you can increase mesh resolution by setting --mesh_res when exporting mesh.
hello, i want to reconstruction car too ,can you share how to recognize the dataset like downloading different pictures from net?
Difference between rendering and texture on custom data #145
I download the car images from https://www.autohome.com.cn/ with car brand and subbrand, but some brands only have 30 surrounding view images.