声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4675|回复: 20

[编程技巧] 请教如何实现对图中矩阵的任意角度旋转

[复制链接]
发表于 2008-5-29 16:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

滤波器公式

滤波器公式

滤波器图形

滤波器图形
回复
分享到:

使用道具 举报

发表于 2008-5-29 18:22 | 显示全部楼层
请问图中矩阵是什么意思

图里面没有矩阵啊
 楼主| 发表于 2008-5-29 19:10 | 显示全部楼层

回复 2楼 的帖子

哦 ,我的意思是图2里的图形是根据那个滤波器的二维矩阵画出来的,图形中红色的点对应的是矩阵中为1的点,色彩越偏向蓝色对应矩阵中的点的大小就越小。
发表于 2008-5-29 20:42 | 显示全部楼层
这个图是什么命令画的阿?
发表于 2008-5-29 22:32 | 显示全部楼层
原帖由 Snikas 于 2008-5-29 16:54 发表
本人最近编写了一个如附件公式所示的二维低通指数滤波器,其在模糊域的形状如附件中的图形所示,我想要实现此滤波器图形在图中围绕圆心做任意角度旋转,不知道Matlab是否有直接的命令可以使这个滤波器矩阵或图形实现 ...


楼主想要的效果是像下图那样旋转吗?
tu.jpg
 楼主| 发表于 2008-5-30 08:26 | 显示全部楼层

回复 4楼 的帖子

我是用imagesc命令画出的图形
 楼主| 发表于 2008-5-30 08:45 | 显示全部楼层

回复 5楼 的帖子

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

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

径向低通滤波器

径向低通滤波器

二维低通到径向低通滤波的转换说明

二维低通到径向低通滤波的转换说明
发表于 2008-5-30 08:57 | 显示全部楼层
原帖由 Snikas 于 2008-5-30 08:45 发表
你提供的图形旋转是围绕圆心旋转了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--')
是不是可以先滤波,再将滤波后的数据进行处理?

评分

1

查看全部评分

发表于 2008-5-30 09:55 | 显示全部楼层
试试这个命令imrotate
发表于 2008-5-30 10:01 | 显示全部楼层
  1. rgb=imread('c1.jpg');
  2. rgbr=imrotate(rgb,30);
  3. imshow(rgbr)
复制代码

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

评分

1

查看全部评分

发表于 2008-5-30 11:08 | 显示全部楼层

回复 10楼 的帖子

不是图片处理吧,是一个数据矩阵
发表于 2008-5-30 11:16 | 显示全部楼层
试试不用极坐标变换,而直接用的坐标系旋转?
最终画图用pcolor,而不是用imagesc了.
写了几行代码:
clear;
clc;
x=-10:0.1:10;
y=-10:0.1:10;
theta=pi/6;
[X,Y]=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);

评分

1

查看全部评分

 楼主| 发表于 2008-5-30 11:45 | 显示全部楼层

回复 8楼 的帖子

谢谢你的提示,只是你的是对一维数据图形进行旋转,我再想法将其扩展到二维旋转。
 楼主| 发表于 2008-5-30 11:49 | 显示全部楼层

回复 10楼 的帖子

我主要是想使滤波器图形围绕圆心旋转,但其对应的滤波器矩阵的规格应该是保持不变的,以便将其用于后面矩阵相乘,实现滤波。用imrotate是使显示的图形旋转了,但没得到正确的滤波矩阵。
 楼主| 发表于 2008-5-30 11:51 | 显示全部楼层

回复 12楼 的帖子

谢谢你的回复,我试了下你提供的程序,图形确实旋转了,但滤波矩阵Z好像并没有旋转
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-2 11:45 , Processed in 0.184929 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表