我用matlab空间旋转曲面平移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用matlab空间旋转曲面平移相关的知识,希望对你有一定的参考价值。

我用matlab通过rotate将一条曲线旋转成一个三维曲面,我现在需要平移,有没有高手能帮忙看下能怎么平移呀,translate用不了呀,如果能读取旋转曲面的坐标也行呀,跪求高手啊,在线的也行呀
我其中一个旋转曲面要平移而已,其他的不能动的

读取坐标:
x=get(hh,'xdata');
y=get(hh,'ydata');
z=get(hh,'zdata');
平移
x=x+2;
y=y+3;
z=z+4;
重设坐标:
set(hh,'xdata',x,'ydata',y,'zdata',z);

还有你这个好像不是曲线旋转为旋转曲面啊,就是用rotate把曲面转了-3°而已
参考技术A 平移向量(dx,dy,dz)
aaa=aaa+dx;
bbb=bbb+dy;
ccc=ccc+dz;

Matlab 图像平移旋转缩放镜像

今天学习了用Matlab实现对图像的基本操作。在Matlab中,图像是按照二维矩阵的形式表示的。所以对图像的操作就是对矩阵的操作。 

对图像进行缩放、平移、旋转,都可以转化为矩阵的运算。 
关于变换矩阵的构造,请参考: 
《 [gym 101047C Robotics Competition] 矩阵快速幂求解点旋转平移N次之后的位置》 
参考原图: 
技术图片

1. 图像平移

init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
res = zeros(R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
delX = 50; % 平移量X
delY = 50; % 平移量Y
tras = [1 0 delX; 0 1 delY; 0 0 1]; % 平移的变换矩阵 

for i = 1 : R
    for j = 1 : C
        temp = [i; j; 1];
        temp = tras * temp; % 矩阵乘法
        x = temp(1, 1);
        y = temp(2, 1);
        % 变换后的位置判断是否越界
        if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
            res(x, y) = init(i, j);
        end
    end
end;

imshow(uint8(res)); % 显示图像

技术图片

2. 图像旋转

init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
res = zeros( R,  C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)

alfa = -15 * 3.1415926 / 180.0; % 旋转角度
tras = [cos(alfa) -sin(alfa) 0; sin(alfa) cos(alfa) 0; 0 0 1]; % 旋转的变换矩阵

for i = 1 : R
    for j = 1 : C
        temp = [i; j; 1];
        temp = tras * temp;% 矩阵乘法
        x = uint16(temp(1, 1));
        y = uint16(temp(2, 1));
        % 变换后的位置判断是否越界
        if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
            res(i, j) = init(x, y);
        end
    end
end;

imshow(uint8(res));  % 显示图像

技术图片

3. 图像缩放

init = imread(‘Fig3.tif‘); % 读取图像
[R, C] = size(init); % 获取图像大小
timesX = 3; % X轴缩放量
timesY = 3; % Y轴缩放量
res = zeros(timesX * R, timesY * C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
tras = [1/timesX 0 0; 0 1/timesY 0; 0 0 1]; % 缩放的变换矩阵 

for i = 1 : timesX * R
    for j = 1 : timesY * C
        temp = [i; j; 1];
        temp = tras * temp; % 矩阵乘法
        x = uint8(temp(1, 1));
        y = uint8(temp(2, 1));
        % 变换后的位置判断是否越界
        if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
            res(i, j) = init(x, y);
        end
    end
end;

imshow(uint8(res)); % 显示图像

技术图片

4. 图像镜像(水平)

init = imread(‘Fig3.tif‘);
[R, C] = size(init);
res = zeros(R, C);

for i = 1 : R
    for j = 1 : C
        x = i;
        y = C - j + 1;
        res(x, y) = init(i, j);
    end
end

imshow(uint8(res));

技术图片

以上是关于我用matlab空间旋转曲面平移的主要内容,如果未能解决你的问题,请参考以下文章

Matlab 图像平移旋转缩放镜像

Matlab 图像平移旋转缩放镜像

matlab对点云旋转平移

如何在平移/旋转后重新计算轴对齐的边界框

c#的图像平移和旋转

如何在matlab中进行数据的平移和旋转