声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2428|回复: 8

[图像处理] 圆周方向插值求指导

[复制链接]
发表于 2010-9-14 11:33 | 显示全部楼层 |阅读模式

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

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

x
我想在圆周方向,从圆心到外颜色均匀的分布,而不是像下面程序中那样,在四个方向(0,90,180,270)上有个“尖”,而且颜色变化也不均匀。
不知道愿不愿意指导一下。

X=[4.8443 4.8977 4.9516  5.0067 5.0633 5.1213 5.1808 5.2421 5.3050 5.3692 5.4350 5.5024 5.5870 5.6976 5.8165 6.0966 7.0000];
t=[1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0];
x=[X*cosd(0),X*cosd(90),X*cosd(180),X*cosd(270)]; %分布在四个方向上
y=[X*sind(0),X*sind(90),X*sind(180),X*sind(270)];
t=[0.5*t,t,t,t];
pp1=-8:0.05:8;
pp2=-8:0.05:8;
[X,Y]=meshgrid(pp1,pp2);
T=griddata(x,y,t,X,Y,'v4');
T((T>1600))=NaN;
T((T<0))=NaN;
[C,h]=contourf(X,Y,T,8);set(h,'Color','None');colorbar

图
回复
分享到:

使用道具 举报

 楼主| 发表于 2010-9-14 11:37 | 显示全部楼层
其实这个可能主要和这句话“T=griddata(x,y,t,X,Y,'v4');”有关系,但是又不知道该怎么来做,cubic,nearest这些也都试了,效果还不如v4,v4至少还是圆型的。
不知道高手们有什么建议啊?
发表于 2010-9-14 14:37 | 显示全部楼层
我不太明白你的意思,我觉得尖的来自于四个拼接处的不连续性
我写了几行代码,估计不是你的意思,但是希望对你有帮助
  1. clear;clc;close all
  2. % X=[4.8443 4.8977 4.9516  5.0067 5.0633 5.1213 5.1808 5.2421 5.3050 5.3692 5.4350 5.5024 5.5870 5.6976 5.8165 6.0966 7.0000];
  3. % t=[1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0];
  4. % x=[X*cosd(0),X*cosd(90),X*cosd(180),X*cosd(270)]; %分布在四个方向上
  5. % y=[X*sind(0),X*sind(90),X*sind(180),X*sind(270)];
  6. % t=[0.5*t,t,t,t];
  7. t0=linspace(0,2*pi);
  8. x=cos(t0);
  9. y=sin(t0);
  10. t=10+zeros(length(t0),1);
  11. pp1=-8:0.05:8;
  12. pp2=-8:0.05:8;
  13. [X,Y]=meshgrid(pp1,pp2);
  14. T=griddata(x,y,t,X,Y,'v4');
  15. T((T>1600))=NaN;
  16. T((T<0))=NaN;
  17. [C,h]=contourf(X,Y,T,8);set(h,'Color','None');colorbar
  18. axis equal
复制代码

评分

1

查看全部评分

发表于 2010-9-15 00:35 | 显示全部楼层
1.莫指名 2.点数过少不利插分 3.卡氏座标并非适当网格
4.可以的话再清楚描述下问题
  1. X=[4.8443 4.8977 4.9516  5.0067 5.0633 5.1213 5.1808 5.2421 5.3050 5.3692 5.4350 5.5024 5.5870 5.6976 5.8165 6.0966 7.0000];
  2. t=[1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0];
  3. [th,r] = meshgrid((0:90:360)*pi/180,X); t=[0.5*t',t',t',t',0.5*t'];
  4. [th2,r2]=meshgrid((0:5:360)*pi/180,min(X):0.05:max(X)); t2=griddata(th,r,t,th2,r2);
  5. [X,Y] = pol2cart(th2,r2); [C,h]=contourf(X,Y,t2,8);set(h,'Color','None');colorbar
复制代码

评分

1

查看全部评分

 楼主| 发表于 2010-9-15 10:37 | 显示全部楼层
先谢谢二位的回复。
可能本人不太善于表达,我再陈述一下我的问题:
已有数据:在圆周上几个方向的坐标数据,各个角度的坐标互相不一样,这些在上面我是举例各个角度为(0,90,180,270),存在相同的数据X。
目的:想利用这几个方向上的数据,拟合一个颜色渐变的图。效果就是ChaChing画出来的那种。

To qibbxxt :您说的“四个拼接处的不连续性”是不是我的角度方向太少了?
To ChaChing :
您画出来的效果和我的需求一样。就是有个问题,因为我上面是举例,但是实际情况下,我各个角度的坐标“X”可能不一样,会存在0°方向为X1,90°方向为X2,X1 != X2,按您这种做法的画,我怎么把各个角度的数据添加进去呢?
 楼主| 发表于 2010-9-15 11:36 | 显示全部楼层
我这个图基本上也算个同心圆。
外面的这个圆半径是一定的
里面的半径各个角度方向上不太一样,但也相差不大,比如0°方向上是4.8443 ,90°方向上可能是 4.5,大概就是这样。
 楼主| 发表于 2010-9-15 15:47 | 显示全部楼层
本帖最后由 valiant 于 2010-9-15 17:15 编辑

想到个放入坐标数据的笨办法:
  1. r(:,1)=X1;
  2. r(:,2)=X2;
  3. ...........

复制代码
这样可以把每个方向的坐标数据输进去。
但是用下面方法试验不同的坐标数据时:
  1. r(:,3)=r(:,3)+1;
复制代码
在同心圆的内部,代表最大值的“红色”区域比较大。
如果用
  1. t2((t2>1500))=NaN;
复制代码
削减红色区域的话,没问题。
但是因为我的最大值是1600,理论上应该用1600才对,如果用
  1. t2((t2>1600))=NaN;
复制代码
削减红色区域的话,该区域就呈现出一丝一丝的,好像被分割过了似的。
问题:我应该取多大的值来削减红色区域? 有没有一个计算理论?或者有没有别的方法来去掉插值多出来的那块黑红黑红的区域呢?
发表于 2010-9-16 00:24 | 显示全部楼层
没想到好法, 好像只得如LZ所说塞对座标!
基本上, 若没有边界的函数, 要做适当的转换可能不易
 楼主| 发表于 2010-9-16 08:52 | 显示全部楼层
还是要感谢你,至少我可以画圆了。呵呵。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-6 09:00 , Processed in 0.070589 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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