Có vấn đề với góc: atan
trả về một góc theo radian. nếu bạn tròn nó, không có nhiều thông tin trái ...
Hãy thử với:
a = atan(y0/x0) * 215/(pi/2)

Nó không phải là hình ảnh mà bạn mong đợi, mà rõ ràng là việc chuyển đổi ngược lại, với trung tâm ở giữa hình ảnh.
# Load the image
library(png)
library(RCurl)
d <- readPNG(getBinaryURL("http://i.stack.imgur.com/rMR3C.png"))
image(d, col=gray(0:255/255))
# Origin for the polar coordinates
x0 <- ncol(d)/2
y0 <- nrow(d)/2
# The value of pixel (i,j) in the final image
# comes from the pixel, in the original image,
# with polar coordinates (r[i],theta[i]).
# We need a grid for the values of r and theta.
r <- 1:ceiling(sqrt(max(x0,nrow(d))^2 + max(y0,ncol(d))^2))
theta <- -pi/2 + seq(0,2*pi, length = 200)
r_theta <- expand.grid(r=r, theta=theta)
# Convert those polar coordinates to cartesian coordinates:
x <- with(r_theta, x0 + r * cos(theta))
y <- with(r_theta, y0 + r * sin(theta))
# Truncate them
x <- pmin(pmax(x, 1), ncol(d))
y <- pmin(pmax(y, 1), nrow(d))
# Build an empty matrix with the desired size and populate it
r <- matrix(NA, nrow=length(r), ncol=length(theta))
r[] <- d[cbind(x,y)]
image(r, col=gray(0:255/255))
Nguồn
2013-05-27 17:20:31
Cảm ơn, câu trả lời tuyệt vời! Có thể bạn có thể giải thích những gì từng phần của mã đang làm? Tôi là một chút nhầm lẫn với công thức bạn đang sử dụng cho r và theta và nhân của các giá trị sin/cos. Cảm ơn một lần nữa – by0
Tôi đã phần nào đơn giản hóa mã và thêm một vài nhận xét. –