24小时热门版块排行榜    

CyRhmU.jpeg
查看: 225  |  回复: 4
当前主题已经存档。

wlj729

木虫 (正式写手)

nature特约投稿人

[交流] 【求助】matlab一段小程序,帮忙检查一下!~有大量的悬赏哦【已解决】

求助内容如下:(文中笑脸图标为一个“冒号)”


I=imread('one.jpg');
level=0.3;
J=im2bw(I,level);
figure
imshow(I);
figure
imshow(J);
imwrite(J,'threshod.bmp');

这是第一段没有问题
主要是把一幅普通的图像转换成2值图的程序

第二段程序
m=1
x=length(J)/m;
n1=0;
n=0;
for i=1:x
    A1=J((1+(i-1)*m):i*m,冒号);
    y=length(A1)/m;
    for j=1:y
        B=A1(:,(1+(j-1)*m):j*m)
        for k1=1:m
            for k2=1:m
                if(B(k1,k2)==0)
                    n1=1;
                end
            end
        end
        n=n+n1;
        n1=0;
    end
end
nn=n
这段是对J进行分块,分成的小矩阵边长由m决定
并且对分成的每个小矩阵B进行判断是否含有0元素
统计处含有0元素的B矩阵的个数
第一行m的值自己可以改成2,4,等
在算到100多的时候,它就显示错误,说数组下标越界了

请求解决方法,谢谢!(为了对您的劳动表示感谢,对解决问题有益,就会得到悬赏bb,解决问题者起码15个bb)

[ Last edited by nono2009 on 2009-11-9 at 07:08 ]
回复此楼
研以致用,不忘初心
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009(金币+2,VIP+0):谢谢专家! 11-8 22:36
wlj729(金币+20,VIP+0):问题解决了,谢谢,以后还请多多指教! 11-8 22:46
引用回帖:
Originally posted by wlj729 at 2009-11-8 22:22:
求助内容如下:


I=imread('one.jpg');
level=0.3;
J=im2bw(I,level);
figure
imshow(I);
figure
imshow(J);
imwrite(J,'threshod.bmp');

这是第一段没有问题
主要是把一幅普通的图像转换成2值图的 ...

m=1
x=floor(size(J,1)/m);
n1=0;
n=0;
for i=1:x
    A1=J((1+(i-1)*m):i*m,;
    y=floor(size(A1,2)/m);
    for j=1:y
        B=A1(:,(1+(j-1)*m):j*m)
        for k1=1:m
            for k2=1:m
                if(B(k1,k2)==0)
                    n1=1;
                end
            end
        end
        n=n+n1;
        n1=0;
    end
end
nn=n
2楼2009-11-08 22:32:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlj729

木虫 (正式写手)

nature特约投稿人

引用回帖:
Originally posted by hitzhang at 2009-11-8 22:32:



m=1
x=floor(size(J,1)/m);
n1=0;
n=0;
for i=1:x
    A1=J((1+(i-1)*m):i*m,;
    y=floor(size(A1,2)/m);
    for j=1:y
        B=A1(: ...

首先再次感谢楼主帮助我成功的解决了问题,小弟是边学边用的,想问问您添加这两句话的意义是什么?也就是这两句话的作用是什么,谢谢!
研以致用,不忘初心
3楼2009-11-08 23:10:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):谢谢专家! 11-9 07:08
引用回帖:
Originally posted by wlj729 at 2009-11-8 23:10:

首先再次感谢楼主帮助我成功的解决了问题,小弟是边学边用的,想问问您添加这两句话的意义是什么?也就是这两句话的作用是什么,谢谢!

你程序里用的length(a)是计算矩阵a所有维度上最大长度的,也就是max(size(a)),当a的行数不等于列数时,程序一定报错。floor保证整数块,也可以不用,因为for 1:x巧妙的弥补了这一点。
4楼2009-11-08 23:21:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlj729

木虫 (正式写手)

nature特约投稿人

引用回帖:
Originally posted by hitzhang at 2009-11-8 23:21:



你程序里用的length(a)是计算矩阵a所有维度上最大长度的,也就是max(size(a)),当a的行数不等于列数时,程序一定报错。floor保证整数块,也可以不用,因为for 1:x巧妙的弥补了这一点。

非常感谢!
研以致用,不忘初心
5楼2009-11-09 08:13:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wlj729 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见