关于matlab:将图像坐标转换为圆坐标

Transforming an image coordinate to circle coordinates

所以我正在尝试将普通正方形 x,y 坐标的图像坐标转换为圆形坐标,如下所示。

enter

1

但是,x,y 参数是圆坐标,因此在使用 cart2pol 之前,我如何将普通的方形坐标系转换为圆形坐标系?


我认为您应该能够使用 cart2pol(x,y),它为您提供一些笛卡尔输入 xy 的极坐标 (2d) 或圆柱 (3d) 坐标(以及圆柱坐标的 z)。

第一张图片中的坐标:ij。第二张图片中的坐标:theta, rho.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
N = 400; % example: 400x400 pixels

% shift origin into center
% Matlab uses 1 to N indexing not 0 to N-1
xo = (N)/2; % center of image
yo = (N)/2;

% Define some sample points in the image (coords from top-left of image)
% 0 deg, 90 deg, 180 deg, 270 deg
i = [350 200 50 200];
j = [200 1 200 350];

% get polar coordinates from cartesian ones (theta in radians)
% -(j-yo) due to opposite direction of j to mathematical positive direction of coord.system
[theta, rho] = cart2pol(i-xo, -(j-yo));
rho = rho/(N/2); % scaling for unit circle

theta-pi to pi 范围内,所以如果你需要 0 to 2pi0 to 360 你仍然需要做一个映射。