声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2285|回复: 5

[图像处理] 如何填充同心圆的问题

[复制链接]
发表于 2007-11-19 13:00 | 显示全部楼层 |阅读模式

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

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

x
请教大家一个问题,本人有一个困扰很长时间的问题:有一组同心圆,我想用矩阵[100 110 120……]来填充每个同心圆的颜色。不知道用MATLAB能否实现。谢谢!

呵呵,本人用fill命令能够填充给定的颜色,但不知如何,将矩阵转换为RGB颜色并填充进去。请高手指点!在线等待……谢谢

[ 本帖最后由 ChaChing 于 2009-9-6 12:04 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-11-21 17:02 | 显示全部楼层
看看这个。

  1. xt=-pi:0.01:pi;
  2. for R=200:-10:10;
  3.     x=R*cos(xt);
  4.     y=R*sin(xt);
  5.     plot(x,y)
  6.     axis equal
  7.     hold on
  8.     fill(x,y,[1,1,1]*(255-R)/255)
  9. end
复制代码
lll.jpg

评分

1

查看全部评分

 楼主| 发表于 2007-11-22 19:28 | 显示全部楼层
11.doc (101.5 KB, 下载次数: 17) 谢谢楼上的兄弟,我已经自己琢磨出来了:handshake
 楼主| 发表于 2007-11-22 19:32 | 显示全部楼层
这个是程序,没用循环直接弄的看上去比较麻烦:loveliness:
clc;
clear all;
[name path]=uigetfile('*.txt');
WJload=[path name];
x=load(WJload);
s=x(:,1);
q1=max(x);
% q2=min(x);
s1=max(q1);
s2=1000;
S=s2/s1;
sx=x(:,2);
sx3=x(:,3);
sx4=x(:,4);
sx5=x(:,5);
sx6=x(:,6);
sx7=x(:,7);
sx8=x(:,8);
sx9=x(:,9);
sx0=x(:,10);
%éè?¨?D?μ
% w=zeros(56,1);
for k=1:length(s)
    if s(k)<s2
        w(k)=0;
    else if s(k)/s1>S&&s(k)/s1<S+(1-S)/5
    w(k)=s(k)/s1-S;
else if s(k)/s1>S+(1-S)/5&&s(k)/s1<S+(1-S)/5*2
        w(k)=s(k)/s1-3/4*S;
    else if s(k)/s1>S+(1-S)/5*2&&s(k)/s1<S+(1-S)/5*3
               w(k)=s(k)/s1-2/4*S;
                else if s(k)/s1>S+(1-S)/5*3&&s(k)/s1<S+(1-S)/5*4
               w(k)=s(k)/s1-1/4*S;
                else if s(k)/s1>S+(1-S)/5*4&&s(k)/s1<S+(1-S)/5*5
               w(k)=s(k)/s1;
                    end
                    end
                    end
        end
    end
end
end

%°???′óD?
AA=10;
A=11;
A1=12;
A3=13;
A4=14;
A5=15;
A6=16;
A7=17;
A8=18;
A9=19;
A0=20;
N1=28;
T1=2*pi/N1;
for i=1:N1
    ph=(i-1)*T1:0.01:i*T1;
    x=A0*cos(ph);
y=A0*sin(ph);
X=[0 x];
Y=[0 y];
patch(X,Y,'w');
hold on;
end
phi=0:0.01:2*pi;  
x=AA*cos(phi);
y=AA*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
%éè??êy??
N=56;
step=0.05;
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A*cos(phi);
y=A*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A*cos(ph);
yy(i,:)=A*sin(ph);
fill(xx(i,:),yy(i,:),[1-w(i) 1-w(i) 1-w(i)]);
X=[A*cos((i-1)*T) AA*cos((i-1)*T) AA*cos(i*T)  A*cos(i*T)];
Y=[ A*sin((i-1)*T) AA*sin((i-1)*T)  AA*sin(i*T)  A*sin(i*T)];
patch(X,Y,[1-w(i) 1-w(i) 1-w(i)],'edgecolor',[1-w(i) 1-w(i) 1-w(i)]);
end
%*
hold on;
for k=1:length(sx)
     if sx(k)<s2
        wx(k)=0;
     else if sx(k)/s1>S&&sx(k)/s1<S+(1-S)/5
    wx(k)=sx(k)/s1-S;
else if sx(k)/s1>S+(1-S)/5&&sx(k)/s1<S+(1-S)/5*2
        wx(k)=sx(k)/s1-3/4*S;
    else if sx(k)/s1>S+(1-S)/5*2&&sx(k)/s1<S+(1-S)/5*3
               wx(k)=sx(k)/s1-2/4*S;
                else if sx(k)/s1>S+(1-S)/5*3&&sx(k)/s1<S+(1-S)/5*4
               wx(k)=sx(k)/s1-1/4*S;
                else if sx(k)/s1>S+(1-S)/5*4&&sx(k)/s1<S+(1-S)/5*5
               wx(k)=sx(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A1*cos(phi);
y=A1*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A1*cos(ph);
yy(i,:)=A1*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx(i) 1-wx(i) 1-wx(i)]);
X1=[A1*cos((i-1)*T) A*cos((i-1)*T) A*cos(i*T)  A1*cos(i*T)];
Y1=[ A1*sin((i-1)*T) A*sin((i-1)*T)  A*sin(i*T)  A1*sin(i*T)];
patch(X1,Y1,[1-wx(i) 1-wx(i) 1-wx(i)],'edgecolor',[1-wx(i) 1-wx(i) 1-wx(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A*cos(phi);
y=A*sin(phi);  %  ?2??3ì
plot(x,y);
%**
hold on;
for k=1:length(sx3)
     if sx3(k)<s2
        wx3(k)=0;
     else if sx3(k)/s1>S&&sx3(k)/s1<S+(1-S)/5
    wx3(k)=sx3(k)/s1-S;
else if sx3(k)/s1>S+(1-S)/5&&sx3(k)/s1<S+(1-S)/5*2
        wx3(k)=sx3(k)/s1-3/4*S;
    else if sx3(k)/s1>S+(1-S)/5*2&&sx3(k)/s1<S+(1-S)/5*3
               wx3(k)=sx3(k)/s1-2/4*S;
                else if sx3(k)/s1>S+(1-S)/5*3&&sx3(k)/s1<S+(1-S)/5*4
               wx3(k)=sx3(k)/s1-1/4*S;
                else if sx3(k)/s1>S+(1-S)/5*4&&sx3(k)/s1<S+(1-S)/5*5
               wx3(k)=sx3(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A3*cos(phi);
y=A3*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A3*cos(ph);
yy(i,:)=A3*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx3(i) 1-wx3(i) 1-wx3(i)]);
X1=[A3*cos((i-1)*T) A1*cos((i-1)*T) A1*cos(i*T)  A3*cos(i*T)];
Y1=[ A3*sin((i-1)*T) A1*sin((i-1)*T)  A1*sin(i*T)  A3*sin(i*T)];
patch(X1,Y1,[1-wx3(i) 1-wx3(i) 1-wx3(i)],'edgecolor',[1-wx3(i) 1-wx3(i) 1-wx3(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A1*cos(phi);
y=A1*sin(phi);  %  ?2??3ì
plot(x,y);
%***
hold on;
for k=1:length(sx)
     if sx4(k)<s2
        wx4(k)=0;
     else if sx4(k)/s1>S&&sx4(k)/s1<S+(1-S)/5
    wx4(k)=sx4(k)/s1-S;
else if sx4(k)/s1>S+(1-S)/5&&sx4(k)/s1<S+(1-S)/5*2
        wx4(k)=sx4(k)/s1-3/4*S;
    else if sx4(k)/s1>S+(1-S)/5*2&&sx4(k)/s1<S+(1-S)/5*3
               wx4(k)=sx4(k)/s1-2/4*S;
                else if sx4(k)/s1>S+(1-S)/5*3&&sx4(k)/s1<S+(1-S)/5*4
               wx4(k)=sx4(k)/s1-1/4*S;
                else if sx4(k)/s1>S+(1-S)/5*4&&sx4(k)/s1<S+(1-S)/5*5
               wx4(k)=sx4(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A4*cos(phi);
y=A4*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A4*cos(ph);
yy(i,:)=A4*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx4(i) 1-wx4(i) 1-wx4(i)]);
X1=[A4*cos((i-1)*T) A3*cos((i-1)*T) A3*cos(i*T)  A4*cos(i*T)];
Y1=[ A4*sin((i-1)*T) A3*sin((i-1)*T)  A3*sin(i*T)  A4*sin(i*T)];
patch(X1,Y1,[1-wx4(i) 1-wx4(i) 1-wx4(i)],'edgecolor',[1-wx4(i) 1-wx4(i) 1-wx4(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A3*cos(phi);
y=A3*sin(phi);  %  ?2??3ì
plot(x,y);
%***
hold on;
for k=1:length(sx)
     if sx5(k)<s2
        wx5(k)=0;
     else if sx5(k)/s1>S&&sx5(k)/s1<S+(1-S)/5
    wx5(k)=sx5(k)/s1-S;
else if sx5(k)/s1>S+(1-S)/5&&sx5(k)/s1<S+(1-S)/5*2
        wx5(k)=sx5(k)/s1-3/4*S;
    else if sx5(k)/s1>S+(1-S)/5*2&&sx5(k)/s1<S+(1-S)/5*3
               wx5(k)=sx5(k)/s1-2/4*S;
                else if sx5(k)/s1>S+(1-S)/5*3&&sx5(k)/s1<S+(1-S)/5*4
               wx5(k)=sx5(k)/s1-1/4*S;
                else if sx5(k)/s1>S+(1-S)/5*4&&sx5(k)/s1<S+(1-S)/5*5
               wx5(k)=sx5(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A5*cos(phi);
y=A5*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A5*cos(ph);
yy(i,:)=A5*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx5(i) 1-wx5(i) 1-wx5(i)]);
X1=[A5*cos((i-1)*T) A4*cos((i-1)*T) A4*cos(i*T)  A5*cos(i*T)];
Y1=[ A5*sin((i-1)*T) A4*sin((i-1)*T)  A4*sin(i*T)  A5*sin(i*T)];
patch(X1,Y1,[1-wx5(i) 1-wx5(i) 1-wx5(i)],'edgecolor',[1-wx5(i) 1-wx5(i) 1-wx5(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A4*cos(phi);
y=A4*sin(phi);  %  ?2??3ì
plot(x,y);
%****
hold on;
for k=1:length(sx)
     if sx6(k)<s2
        wx6(k)=0;
     else if sx6(k)/s1>S&&sx6(k)/s1<S+(1-S)/5
    wx6(k)=sx6(k)/s1-S;
else if sx6(k)/s1>S+(1-S)/5&&sx6(k)/s1<S+(1-S)/5*2
        wx6(k)=sx6(k)/s1-3/4*S;
    else if sx6(k)/s1>S+(1-S)/5*2&&sx6(k)/s1<S+(1-S)/5*3
               wx6(k)=sx6(k)/s1-2/4*S;
                else if sx6(k)/s1>S+(1-S)/5*3&&sx6(k)/s1<S+(1-S)/5*4
               wx6(k)=sx6(k)/s1-1/4*S;
                else if sx6(k)/s1>S+(1-S)/5*4&&sx6(k)/s1<S+(1-S)/5*5
               wx6(k)=sx6(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A6*cos(phi);
y=A6*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A6*cos(ph);
yy(i,:)=A6*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx6(i) 1-wx6(i) 1-wx6(i)]);
X1=[A6*cos((i-1)*T) A5*cos((i-1)*T) A5*cos(i*T)  A6*cos(i*T)];
Y1=[ A6*sin((i-1)*T) A5*sin((i-1)*T)  A5*sin(i*T)  A6*sin(i*T)];
patch(X1,Y1,[1-wx6(i) 1-wx6(i) 1-wx6(i)],'edgecolor',[1-wx6(i) 1-wx6(i) 1-wx6(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A5*cos(phi);
y=A5*sin(phi);  %  ?2??3ì
plot(x,y);
%***
hold on;
for k=1:length(sx)
     if sx7(k)<s2
        wx7(k)=0;
     else if sx7(k)/s1>S&&sx7(k)/s1<S+(1-S)/5
    wx7(k)=sx7(k)/s1-S;
else if sx7(k)/s1>S+(1-S)/5&&sx7(k)/s1<S+(1-S)/5*2
        wx7(k)=sx7(k)/s1-3/4*S;
    else if sx7(k)/s1>S+(1-S)/5*2&&sx7(k)/s1<S+(1-S)/5*3
               wx7(k)=sx7(k)/s1-2/4*S;
                else if sx7(k)/s1>S+(1-S)/5*3&&sx7(k)/s1<S+(1-S)/5*4
               wx7(k)=sx7(k)/s1-1/4*S;
                else if sx7(k)/s1>S+(1-S)/5*4&&sx7(k)/s1<S+(1-S)/5*5
               wx7(k)=sx7(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A7*cos(phi);
y=A7*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A7*cos(ph);
yy(i,:)=A7*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx7(i) 1-wx7(i)  1-wx7(i)]);
X1=[A7*cos((i-1)*T) A6*cos((i-1)*T) A6*cos(i*T)  A7*cos(i*T)];
Y1=[ A7*sin((i-1)*T) A6*sin((i-1)*T)  A6*sin(i*T)  A7*sin(i*T)];
patch(X1,Y1,[1-wx7(i) 1-wx7(i)  1-wx7(i)],'edgecolor',[1-wx7(i) 1-wx7(i)  1-wx7(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A6*cos(phi);
y=A6*sin(phi);  %  ?2??3ì
plot(x,y);
%*****
hold on;
for k=1:length(sx)
     if sx8(k)<s2
        wx8(k)=0;
     else if sx8(k)/s1>S&&sx8(k)/s1<S+(1-S)/5
    wx8(k)=sx8(k)/s1-S;
else if sx8(k)/s1>S+(1-S)/5&&sx8(k)/s1<S+(1-S)/5*2
        wx8(k)=sx8(k)/s1-3/4*S;
    else if sx8(k)/s1>S+(1-S)/5*2&&sx8(k)/s1<S+(1-S)/5*3
               wx8(k)=sx8(k)/s1-2/4*S;
                else if sx8(k)/s1>S+(1-S)/5*3&&sx8(k)/s1<S+(1-S)/5*4
               wx8(k)=sx8(k)/s1-1/4*S;
                else if sx8(k)/s1>S+(1-S)/5*4&&sx8(k)/s1<S+(1-S)/5*5
               wx8(k)=sx8(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A8*cos(phi);
y=A8*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A8*cos(ph);
yy(i,:)=A8*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx8(i) 1-wx8(i) 1-wx8(i)]);
X1=[A8*cos((i-1)*T) A7*cos((i-1)*T) A7*cos(i*T)  A8*cos(i*T)];
Y1=[ A8*sin((i-1)*T) A7*sin((i-1)*T)  A7*sin(i*T)  A8*sin(i*T)];
patch(X1,Y1,[1-wx8(i) 1-wx8(i) 1-wx8(i)],'edgecolor',[1-wx8(i) 1-wx8(i) 1-wx8(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A7*cos(phi);
y=A7*sin(phi);  %  ?2??3ì
plot(x,y);
%*****
hold on;
for k=1:length(sx)
     if sx9(k)<s2
        wx9(k)=0;
     else if sx9(k)/s1>S&&sx9(k)/s1<S+(1-S)/5
    wx9(k)=sx9(k)/s1-S;
else if sx9(k)/s1>S+(1-S)/5&&sx9(k)/s1<S+(1-S)/5*2
        wx9(k)=sx9(k)/s1-3/4*S;
    else if sx9(k)/s1>S+(1-S)/5*2&&sx9(k)/s1<S+(1-S)/5*3
               wx9(k)=sx9(k)/s1-2/4*S;
                else if sx9(k)/s1>S+(1-S)/5*3&&sx9(k)/s1<S+(1-S)/5*4
               wx9(k)=sx9(k)/s1-1/4*S;
                else if sx9(k)/s1>S+(1-S)/5*4&&sx9(k)/s1<S+(1-S)/5*5
               wx9(k)=sx9(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A9*cos(phi);
y=A9*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A9*cos(ph);
yy(i,:)=A9*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx9(i) 1-wx9(i) 1-wx9(i)]);
X1=[A9*cos((i-1)*T) A8*cos((i-1)*T) A8*cos(i*T)  A9*cos(i*T)];
Y1=[ A9*sin((i-1)*T) A8*sin((i-1)*T)  A8*sin(i*T)  A9*sin(i*T)];
patch(X1,Y1,[1-wx9(i) 1-wx9(i) 1-wx9(i)],'edgecolor',[1-wx9(i) 1-wx9(i) 1-wx9(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A8*cos(phi);
y=A8*sin(phi);  %  ?2??3ì
plot(x,y);
%***
hold on;
for k=1:length(sx)
     if sx0(k)<s2
        wx0(k)=0;
     else if sx0(k)/s1>S&&s0(k)/s1<S+(1-S)/5
    wx0(k)=sx0(k)/s1-S;
else if sx0(k)/s1>S+(1-S)/5&&sx0(k)/s1<S+(1-S)/5*2
        wx0(k)=sx0(k)/s1-3/4*S;
    else if sx0(k)/s1>S+(1-S)/5*2&&sx0(k)/s1<S+(1-S)/5*3
               wx0(k)=sx0(k)/s1-2/4*S;
                else if sx0(k)/s1>S+(1-S)/5*3&&sx0(k)/s1<S+(1-S)/5*4
               wx0(k)=sx0(k)/s1-1/4*S;
                else if sx0(k)/s1>S+(1-S)/5*4&&sx(k)/s1<S+(1-S)/5*5
               wx0(k)=sx0(k)/s1;
                    end
                    end
        end
    end
end
     end
end
T=2*pi/N;
phi=0:0.01:2*pi;  
x=A0*cos(phi);
y=A0*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
for i=1:N
    ph=(i-1)*T:0.01:i*T;
  xx(i,:)=A0*cos(ph);
yy(i,:)=A0*sin(ph);
fill(xx(i,:),yy(i,:),[1-wx0(i) 1-wx0(i) 1-wx0(i)]);
X1=[A0*cos((i-1)*T) A9*cos((i-1)*T) A9*cos(i*T)  A0*cos(i*T)];
Y1=[ A0*sin((i-1)*T) A9*sin((i-1)*T)  A9*sin(i*T)  A0*sin(i*T)];
patch(X1,Y1[1-wx0(i) 1-wx0(i) 1-w0(i)],'edgecolor',[1-wx0(i) 1-wx0(i) 1-wx0(i)]);
end
hold on;
phi=0:0.01:2*pi;  
x=A9*cos(phi);
y=A9*sin(phi);  %  ?2??3ì
plot(x,y);
hold on;
phi=0:0.01:2*pi;  
x=A0*cos(phi);
y=A0*sin(phi);  %  ?2??3ì
plot(x,y);
colormap(gray(64));
text(0,20.5,'起始','color','b','fontsize',8);
发表于 2009-9-6 11:34 | 显示全部楼层
很好很牛,不错不错!
发表于 2009-9-6 14:42 | 显示全部楼层
LZ的程序不敢恭维!?:lol
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-11 17:30 , Processed in 0.081084 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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