利用python代码对图片进行柱面投影操作,为什么投影结果是向外弯曲,而不是向内弯曲?
下图是向内弯曲的效果:
而我的效果是向外弯曲,并且边缘像素都被裁掉了
我的代码如下:
image_path = ‘...\1.png'
image = cv2.imread(image_path) # BGR/(h,w,c)
def cylindrical_projection(image, f):
height = image.shape[0]
width = image.shape[1]
blank = np.zeros_like(image)
centerX = width / 2 # 图像中心横坐标
centerY = height / 2 # 图像中心纵坐标
alpha = math.pi / 4
for y in range(height):
for x in range(width):
theta = math.atan((x - centerX) / f)
arc_w = 2 * f * math.atan(width / (2 * f))
pointx = int(arc_w / 2 + f * theta)
pointy = int((f * (y - centerY)) / math.sqrt((x-centerX)**2 + f**2) + centerY)
if pointx >= width or pointx <= 0 or pointy >= height or pointy <= 0:
pass
else:
blank[y, x, :] = image[pointy, pointx, :]
return blank
outimg = cylindrical_projection(image, 800)