|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
用readbmp.m能读取dx.bmp显示图形,为什么我把I=imread('dx.bmp'); %读入一幅图片改成I=imread('map.bmp'); 把gao=[0.1:0.1:0.7];[x1,y1]=meshgrid(1:0.1:5)做相应修改,还是不能读取map.bmp显示图形。提示??? Index exceeds matrix dimensions. Error in ==> dizhenyuce at 22 BW=II(:,:,1)+II(:,:,2)+II(:,:,3);
下面为readbmp.m文件:
- I=imread('dx.bmp'); %读入一幅图片
- %I=I(33:375,74:508,:); %须事先人工确定行标和列标
- %提取坐标框内部分
- I1=I(:,:,1); %提取红色灰度矩阵
- pixel_black=(I1==0);
- number_col=sum(pixel_black);
- number_row=sum(pixel_black');
- j1=find(number_col==max(number_col));
- number_col(j1)=-1;
- j2=find(number_col==max(number_col));
- i1=find(number_row==max(number_row));
- number_row(i1)=-1;
- i2=find(number_row==max(number_row));
- I=I(min(i1,i2):max(i1,i2),min(j1,j2):max(j1,j2),:);
- %提取各等高线上颜色灰度值
- II=I;
- II(II==255)=0;
- II(II>0)=255;
- BW=II(:,:,1)+II(:,:,2)+II(:,:,3);
- [row_id,col_id]=find(BW);
- up_row_id=min(row_id);
- up_col_id=col_id(round(mean(find(row_id==up_row_id))));
- left_col_id=min(col_id);
- left_row_id=row_id(round(mean(find(col_id==left_col_id))));
- pixel_BW=BW(up_row_id:left_row_id,up_col_id);
- row_id=find(pixel_BW)-1+up_row_id;
- yanse(:,1:3)=I(row_id,up_col_id,:);
- %yanse=[0 0 143;
- % 0 47 255
- % 0 223 255
- % 143 255 111
- % 255 207 0
- % 255 31 0
- % 127 0 0]; %须事先人工确定各等高线颜色灰度值,用到了getpts函数
- [m,n]=size(I(:,:,1));
- BW=zeros([m,n]);
- x_xishu=4/(n-1);
- y_xishu=4/(m-1);
- gao=[0.1:0.1:0.7];
- %提取各等高线上点的三维坐标
- xyz=[];
- for i=1:7
- BW1=BW;
- BW1(I(:,:,1)==yanse(i,1)&I(:,:,2)==yanse(i,2)&I(:,:,3)==yanse(i,3))=1;
- [y,x]=find(BW1);
- xyz=[xyz;1+(x-1)*x_xishu 1+(y-1)*y_xishu gao(i)*ones(size(x))];
- end
- xyz=xyz(1:3:end,:);
- xyz=[xyz;1 1 0;1 2 0;1 3 0;1 4 0;1 5 0;2 1 0;3 1 0;4 1 0;5 1 0;5 2 0;5 3 0;5 4 0;5 5 0;2 5 0;3 5 0;4 5 0];
- x=xyz(:,1);
- y=xyz(:,2);
- z=xyz(:,3);
- %产生网格数据,进行散乱节点插值拟合
- [x1,y1]=meshgrid(1:0.1:5)
- z1=griddata(x,y,z,x1,y1,'v4');
- [n,m]=size(x1);
- xyz1=[reshape(x1,n*m,1) reshape(y1,n*m,1) reshape(z1,n*m,1)]
- %画三维面图
- figure
- surf(x1,y1,z1)
- shading flat; %各小曲面之间不要网格
- zlim([0 0.8])
- xlabel('X(单位:千米)')
- ylabel('Y(单位:千米)')
- zlabel('Z(单位:千米)')
复制代码 怎样能读取任何.bmp文件显示图形,做到不需要每次读一个.bmp文件就要重新写一个代码?
|
-
-
dx.rar
7.96 KB, 下载次数: 3
dx.bmp 对应山峰图
-
-
map.rar
19.51 KB, 下载次数: 3
map.bmp 对应地形图
|