24小时热门版块排行榜    

查看: 1985  |  回复: 24
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

bluesea57

铁虫 (小有名气)

[求助] 求助使用MATLAB计算绿色叶片的覆盖度的问题

请教一下,不知哪位高手可以帮我计算一下附图中的绿色叶片占整张图片的百分率,最好是使用MATLAT软件,最好也能详细列出MATLAB计算的每一步程序,谢谢。绿色部分的阈值是R>=90,B>=90,G>=90

附图
回复此楼
希望在这里认识更多的朋友,共进步,共发展。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
jjdg(金币+1): 感谢参与 2011-11-16 01:46:12
余泽成(金币+2): 谢谢参与应助! 2011-11-16 11:15:55
引用回帖:
20楼: Originally posted by hhucy at 2011-11-15 18:48:47:
还有一个问题 想问下 你那个阈值范围是如何得到的?有什么软件可以得到么?
谢谢

就我做图像处理的经验,有以下几个办法:
1.找其他人建立的颜色模型,有参数,现成的;

2.自己建立模型,方法是写matlab程序,读入多幅图像,每个上面用鼠标圈选目标区域,保存其颜色信息(r,g,b范围),弄到相当多的信息后,做颜色聚类,求出模型表示.
最简单就是矩形域,都是上下限范围;
圆形域,中心和半径;
椭圆域,中心,长短轴.

3.针对某一图片,用matlab的imshow后,打开data cursor用鼠标点选查看目标颜色范围(用photoshop也能看),多次试验合理的范围.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
24楼2011-11-16 01:34:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 25 个回答

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-11-13 21:42:40
CODE:
g = imread('1280476_1321176098_419.jpg'); %读入图像
r = (g(:,:,1)>=90) | (g(:,:,2)>=90) | (g(:,:,1)>=90); %注意黑色是0,白色是1
percent = ( 1739*1908 - sum(r(:)) ) / (1739*1908)

结果是0.2624,即26.24%

判定是叶子的部分如黑色部分所示

2楼2011-11-13 19:26:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

★ ★
余泽成(金币+2): 辛苦了! 2011-11-13 21:42:48
其实我觉得这个判定条件这么样子不好....你自己看着办吧...这样子是反过来选了,就是把“不是叶子的部分”选定为了1

因为matlab里面RGB值越大,越亮

所以最后计算的时候就是要这么减
3楼2011-11-13 19:31:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluesea57

铁虫 (小有名气)

引用回帖:
3楼: Originally posted by sudo at 2011-11-13 19:31:33:
其实我觉得这个判定条件这么样子不好....你自己看着办吧...这样子是反过来选了,就是把“不是叶子的部分”选定为了1

因为matlab里面RGB值越大,越亮

所以最后计算的时候就是要这么减

你好,你觉得怎样的判定条件会好一些呢?可以告诉我吗?
r = (g(:,:,1)>=90) | (g(:,:,2)>=90) | (g(:,:,1)>=90); 在程序中具体是啥意思,可以给解释一下吗?1739*1908 是不是代表像素数?谢谢!
希望在这里认识更多的朋友,共进步,共发展。
4楼2011-11-13 19:52:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见