作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将图像的像素从 x-y 坐标转换为极坐标,但我遇到了问题,因为我想自己编写函数代码。
这是我到目前为止所做的代码:
function [ newImage ] = PolarCartRot
% read and show the image
image= imread('1.jpg');
%%imshow(image);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%change to polar coordinate
[x y z]= size(image);
r = sqrt(x*x+y*y);
theta = atan2(y,x);
for i =0:r
for j= 0:theta
newpixel = [i; j];
newImage(newpixel(1), newpixel(2),:) = image(i,j,:);
end
end
figure;
imshow (newImage);
最佳答案
不太清楚你要做什么,这就是为什么我要举我自己的例子......
所以给定一个图像,我将像素 x/y 坐标从笛卡尔坐标转换为极坐标 CART2POL .
在第一个图中,我显示了点的位置,在第二个图中,我绘制了原始图像和带有极坐标的图像。
请注意,我使用的是 WARP图像处理工具箱中的函数。在引擎盖下,它使用 SURF/SURFACE函数来显示纹理映射图像。
% load image
load clown;
img = ind2rgb(X,map);
%img = imread(...); % or use any other image
% convert pixel coordinates from cartesian to polar
[h,w,~] = size(img);
[X,Y] = meshgrid(1:w,1:h);
[theta,rho] = cart2pol(X, Y);
Z = zeros(size(theta));
% show pixel locations (subsample to get less dense points)
XX = X(1:8:end,1:4:end);
YY = Y(1:8:end,1:4:end);
tt = theta(1:8:end,1:4:end);
rr = rho(1:8:end,1:4:end);
subplot(121), scatter(XX(:),YY(:),3,'filled'), axis ij image
subplot(122), scatter(tt(:),rr(:),3,'filled'), axis ij square tight
% show images
figure
subplot(121), imshow(img), axis on
subplot(122), warp(theta, rho, Z, img), view(2), axis square
(0,0)
的轴基点.假设你想占据图像的中心
(w/2,h/2)
作为原点,那么你会这样做:
[X,Y] = meshgrid((1:w)-floor(w/2), (1:h)-floor(h/2));
pol2cart
:
[h,w,~] = size(img);
s = min(h,w)/2;
[rho,theta] = meshgrid(linspace(0,s-1,s), linspace(0,2*pi));
[x,y] = pol2cart(theta, rho);
z = zeros(size(x));
subplot(121), imshow(img)
subplot(122), warp(x, y, z, img), view(2), axis square tight off
关于matlab - 如何在Matlab中将图像从笛卡尔坐标更改为极坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580623/
我是一名优秀的程序员,十分优秀!