matlab 获得子矩阵,求助matlab图像处理,提取子矩阵

本人刚开始编程,matlab是新手,编程也是白痴,在此求教,谢过!

我现在做的是目标检测,中间用到子矩阵提取,就是图像是200*300的矩阵,分为10*10个子矩阵,s(1,1)代表1~20行,1~30列的子矩阵,s(2,2)代表21~40行,31~60列的子矩阵,以此类推。然后用otsu算法(即graythresh函数)将每个子矩阵求阈值,保存在t矩阵中,t(1,1)表示s(1,1)的阈值(t(1,1)为一个数,s(1,1)为一个矩阵;t为10*10,s为20*30)

最后t的阶数总不对,解决不了啊!请大家帮忙!谢了!

程序如下:

f=imread('car_2.bmp');                       % 读取图像;

[x,y]=size(f);                                        % x,y为图像的行数和列数;

m=20;n=30;                                        % 手动定义子图像的行数和列数;

s=zeros(m,n);                                     % s表示子矩阵;

t=zeros(10,10);                                  % t为阈值矩阵;

rx=1:m:x;

cy=1:n:y;                                               % rx和cy是子图像左上角的坐标;

rowhigh=rx+m-1;                                   % rowhigh和colhigh是子图像历遍的终点,即为右下角的坐标;

colhigh=cy+n-1;

xcount=0;                                          % 设置x方向的计数器;

for r=rx:rowhigh;                                 % rx,cy为子图像左上角的坐标;

xcount=xcount+1;

ycount=0;

for c=cy:colhigh;

ycount=ycount+1;

s(xcount,ycount)=f(r,c);

t(xcount,ycount)=graythresh(s(xcount,ycount));                % 用Otsu算法求每幅子图像的最佳阈值,保存在阈值矩阵t中;

end

end

I=imresize(t,[x,y]);                              % 插值后的阈值矩阵I与原图像的行数和列数相等;

H=f>I;                                                 % 将阈值矩阵与图像矩阵比较,将亮的部分提取出来;

g=H*255;

figure(1);

imshow(f);title('原始图像')                        % 显示原图像;

figure(2);

imshow(g);title('处理结果')                        % 显示处理后的结果;

最后再说一遍,我是菜鸟,大家不要笑话我。谢了!

[本帖最后由 mooni 于 2009-4-7 16:43 编辑]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值