声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2282|回复: 3

[图像处理] 请大家指点cell矩阵组plot输出的其他方法

[复制链接]
发表于 2009-4-10 22:08 | 显示全部楼层 |阅读模式

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

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

x
我基本没学过matlab,cell函数完全不懂
今天毕设设计圆轮廓点输出的时候,只能用笨方法分别读取cell中每一个矩阵,然后再分别设x,y。plot输出。
我想问的是cell有没有直接能输出plot图像的函数?

% BY watfe, 读取图像,识别圆轮廓
clc; clear;
I=imread('circle.bmp'); I0=im2bw(I,graythresh(I));
figure;imshow(I0,[]);
[B,L]=bwboundaries(I0); [u,v]=size(L)
% 输出cell(B)中的所有轮廓点
figure;
for c=1:length(B)
    a=B{c}; length(a);
    for p=1:10:length(a)
        x=a(p,1); y=a(p,2);
        plot(y,v-x,'r:.'); hold on; axis square
    end
end

[ 本帖最后由 ChaChing 于 2009-4-11 20:20 编辑 ]
circle.JPG
2.jpg
回复
分享到:

使用道具 举报

发表于 2009-4-10 22:50 | 显示全部楼层
试试这个能不能满足要求。

  1. BM=cell2mat(B);
  2. plot(BM(:,1),BM(:,2),'r.');
  3. axis equal
复制代码

[ 本帖最后由 sogooda 于 2009-4-10 22:55 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2009-4-11 10:45 | 显示全部楼层
非常感谢sogooda教研主任!
原来有cell2mat函数可以将所有点输出成一个矩阵啊,长知识了,手头工具书不全。要自己查真的可能好久。
程序很完美,能满足要求。

因为后面还有圆拟合的程序,所以我改动了一点点,和主楼那个程序一样间隔取点。(不好意思,我在主楼的注释当时写错了,不是所有轮廓点,而是每十个输出一个
BM=cell2mat(B)
plot(BM(1:10:length(BM),1),BM(1:10:length(BM),2),'r.');
axis equal

总之非常感谢啦~呵呵,解决了很大一个问题。

扩展查了一下,原来cell2mat(B(1)),cell2mat(B(2))……
可以用来分别输出每一组数。呵呵,这样就更方便后面的拟合运算了。

谢谢教研室的sogooda大大~

[ 本帖最后由 watfe 于 2009-4-11 10:50 编辑 ]

评分

1

查看全部评分

发表于 2011-4-13 20:34 | 显示全部楼层
太有用了,谢谢2楼了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-28 05:10 , Processed in 0.118909 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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