R 用成像仪将图像从笛卡尔坐标系映射到极坐标系

R 用成像仪将图像从笛卡尔坐标系映射到极坐标系,r,image,image-processing,polar-coordinates,cartesian-coordinates,R,Image,Image Processing,Polar Coordinates,Cartesian Coordinates,我试图使用imageR将全景图像映射到极坐标系,但得到了奇怪的结果 作为一个例子,我想以这样一个方形全景图为例(由CC BY-NC-SA下的()提供,并编辑成方形): 并将其重新映射到类似以下内容(我在GIMP中已完成): 我在imageR中使用了以下代码: library(imager) pano <- mirror(load.image("pano_image.jpg"), "y") # mirroring the image to map

我试图使用imageR将全景图像映射到极坐标系,但得到了奇怪的结果

作为一个例子,我想以这样一个方形全景图为例(由CC BY-NC-SA下的()提供,并编辑成方形):

并将其重新映射到类似以下内容(我在GIMP中已完成):

我在imageR中使用了以下代码:

library(imager)
pano <- mirror(load.image("pano_image.jpg"), "y") # mirroring the image to map to center
map.shift <- function(x,y) list(x = y*cos(x), y = y*sin(x)) # Here, y is the radius and x is theta
polar_pano <- imwarp(pano, map = map.shift)
plot(polar_pano)
库(成像仪)

pano您的结果只有一个象限,因为生成的变换既有负值也有正值

在函数中,结果的左上角是
(-400,-400)
,右下角是
(400400)
。减半并添加200,使其成为
(0,0)
(400400)

缩放触发参数,使其从
-pi
变为
pi

要使原始图像的底部成为结果圆的中心,
x
必须是trig函数内的变量

library(imager)

pano <- load.image("pano_image.jpg")
pano <- mirror(load.image("pano_image.jpg"), "y")

map_shift <- function(x, y) {
  list(
    x = y * cos((x - 200) / 400 * 2 * pi) / 2 + 200,
    y = y * sin((x - 200) / 400 * 2 * pi) / 2 + 200
  )
}

polar_pano <- imwarp(pano, map = map_shift)
plot(polar_pano)
库(成像仪)
帕诺
library(imager)

pano <- load.image("pano_image.jpg")
pano <- mirror(load.image("pano_image.jpg"), "y")

map_shift <- function(x, y) {
  list(
    x = y * cos((x - 200) / 400 * 2 * pi) / 2 + 200,
    y = y * sin((x - 200) / 400 * 2 * pi) / 2 + 200
  )
}

polar_pano <- imwarp(pano, map = map_shift)
plot(polar_pano)