Snikas 发表于 2008-5-29 16:54

请教如何实现对图中矩阵的任意角度旋转

本人最近编写了一个如附件公式所示的二维低通指数滤波器,其在模糊域的形状如附件中的图形所示,我想要实现此滤波器图形在图中围绕圆心做任意角度旋转,不知道Matlab是否有直接的命令可以使这个滤波器矩阵或图形实现任意角度旋转?没有直接命令的话又该如何取实现?

sigma665 发表于 2008-5-29 18:22

请问图中矩阵是什么意思

图里面没有矩阵啊

Snikas 发表于 2008-5-29 19:10

回复 2楼 的帖子

哦 ,我的意思是图2里的图形是根据那个滤波器的二维矩阵画出来的,图形中红色的点对应的是矩阵中为1的点,色彩越偏向蓝色对应矩阵中的点的大小就越小。

wwbeyondww 发表于 2008-5-29 20:42

这个图是什么命令画的阿?

ch_j1985 发表于 2008-5-29 22:32

原帖由 Snikas 于 2008-5-29 16:54 发表 http://www.chinavib.com/forum/images/common/back.gif
本人最近编写了一个如附件公式所示的二维低通指数滤波器,其在模糊域的形状如附件中的图形所示,我想要实现此滤波器图形在图中围绕圆心做任意角度旋转,不知道Matlab是否有直接的命令可以使这个滤波器矩阵或图形实现 ...

楼主想要的效果是像下图那样旋转吗?

Snikas 发表于 2008-5-30 08:26

回复 4楼 的帖子

我是用imagesc命令画出的图形

Snikas 发表于 2008-5-30 08:45

回复 5楼 的帖子

你提供的图形旋转是围绕圆心旋转了90度吧?我想要是旋转任意角度。
我看到一篇论文上写要实现任意角度旋转可以将直角坐标转换为极坐标系,即把附件一中的二维低通滤波器转换为径向低通滤波器,再将极坐标系下算出的径向低通滤波器转换为直角坐标供显示出来,这样做不但不会出现在模糊域中纵坐标和横坐标恒定为1,即不起滤波作用的情况,而且可以让滤波器图形在模糊域围绕原点进行任意角度旋转,但是我觉得坐标系转换特别的复杂,所以就想是否可以直接利用Matlab的矩阵操作实现图形的旋转。

[ 本帖最后由 Snikas 于 2008-5-30 08:46 编辑 ]

ch_j1985 发表于 2008-5-30 08:57

原帖由 Snikas 于 2008-5-30 08:45 发表 http://www.chinavib.com/forum/images/common/back.gif
你提供的图形旋转是围绕圆心旋转了90度吧?我想要是旋转任意角度。
我看到一篇论文上写要实现任意角度旋转可以将直角坐标转换为极坐标系,即把附件一中的二维低通滤波器转换为径向低通滤波器,再将极坐标系下算出的 ...

画图的代码如下,红色的代码可以修改成任意角度:
x1=-2*pi:0.1:2*pi;
y1=sin(x1);
t=sqrt(x1.^2+y1.^2);
theta=atan2(y1,x1);
theta=theta+pi/2;
x2=t.*cos(theta);
y2=t.*sin(theta);
plot(x1,y1,'r-',x2,y2,'b--')
是不是可以先滤波,再将滤波后的数据进行处理?

sogooda 发表于 2008-5-30 09:55

试试这个命令imrotate

sogooda 发表于 2008-5-30 10:01

rgb=imread('c1.jpg');
rgbr=imrotate(rgb,30);
imshow(rgbr)

[ 本帖最后由 sogooda 于 2008-5-30 10:03 编辑 ]

wwbeyondww 发表于 2008-5-30 11:08

回复 10楼 的帖子

不是图片处理吧,是一个数据矩阵

wwbeyondww 发表于 2008-5-30 11:16

试试不用极坐标变换,而直接用的坐标系旋转?
最终画图用pcolor,而不是用imagesc了.
写了几行代码:
clear;
clc;
x=-10:0.1:10;
y=-10:0.1:10;
theta=pi/6;
=meshgrid(x,y);
A=cos(theta)*X+sin(theta)*Y;
B=-sin(theta)*X+cos(theta)*Y;
Z=exp(-X.^2.*Y.^2);
pcolor(A,B,Z);

Snikas 发表于 2008-5-30 11:45

回复 8楼 的帖子

谢谢你的提示,只是你的是对一维数据图形进行旋转,我再想法将其扩展到二维旋转。

Snikas 发表于 2008-5-30 11:49

回复 10楼 的帖子

我主要是想使滤波器图形围绕圆心旋转,但其对应的滤波器矩阵的规格应该是保持不变的,以便将其用于后面矩阵相乘,实现滤波。用imrotate是使显示的图形旋转了,但没得到正确的滤波矩阵。

Snikas 发表于 2008-5-30 11:51

回复 12楼 的帖子

谢谢你的回复,我试了下你提供的程序,图形确实旋转了,但滤波矩阵Z好像并没有旋转
页: [1] 2
查看完整版本: 请教如何实现对图中矩阵的任意角度旋转