24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2617  |  回复: 4

bluesea57

铁虫 (小有名气)

[求助] 用matlab统计图片中某种颜色成分占总图片中所有颜色成分的比率

最近用MATLAB做关于小麦植被覆盖度的计算,但是在划定小麦色调(H)阈值后,想计算在阈值内的H值占整个图片内H值得比率时出了问题,我用numel函数求得阈值内的H值后,再用nume函数求整个图片的H,然后用前者比后者。可结果总是1.然后我又换用sum函数求阈值内的H值再比整个图片的sum  H 值,可结果也是1。不知到我这样求比率的方式对吗?那地放出错了?准确用MATLAB求比率的方法是什么?希望有高人能给详细回答一下,最好是能举个例子,谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-19 15:27:10
bluesea57(金币+2): 问题已解决 2011-06-19 17:00:38
sum是对矩阵求和,numel是求矩阵所有元素个数

例如
CODE:
a = [ 1 0 1
         1 1 0
        0 1 1];
sum(a(:)) = 6
numel(a) = 9

此时求得比率就是sum(a()/numel(a) = 6/9 = 2/3

你的需求,要先对h阀值二值化一次,然后对二值化结果图片使用上面的方法即可
假设H分量阀值为ht
CODE:
mask_h = H>ht;
ratio_h = sum(mask_h(:))/numel(mask_h);

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-06-19 13:34:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluesea57

铁虫 (小有名气)

引用回帖:
Originally posted by libralibra at 2011-06-19 13:34:13:
sum是对矩阵求和,numel是求矩阵所有元素个数

例如
CODE:
a = [ 1 0 1
         1 1 0
        0 1 1];
sum(a(:)) = 6
numel(a) = 9

此时求得比率就是sum(a()/numel(a) = 6/9 = 2/3

你的需 ...

是不是您上边的计算比率的程序只有在对图片2值话后才可以使用您的那个计算公式?我困惑的是,SUM是求和,NUMEL是计算元素个数,而您的那个求比率公式恰好是使用元素之和比上元素个数,不过如果图片不进行二值化处理呢?您的那个公式是不是就不能使用了?为何不用H阈值范围内的元素个数与整个图片H的元素个数相比呢?就像我总共有10个苹果,然后我在我口袋里装上5个苹果,求口袋里的苹果与整个苹果的比值时,不是用5比上10不就可以了吗?
希望在这里认识更多的朋友,共进步,共发展。
3楼2011-06-19 17:10:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军


jjdg(金币+1): 感谢参与 2011-06-20 11:58:49
引用回帖:
Originally posted by bluesea57 at 2011-06-19 17:10:31:
是不是您上边的计算比率的程序只有在对图片2值话后才可以使用您的那个计算公式?我困惑的是,SUM是求和,NUMEL是计算元素个数,而您的那个求比率公式恰好是使用元素之和比上元素个数,不过如果图片不进行二值化 ...

sum对矩阵元素求和,numel是个数
如果
a = [1 2 3;
       3 2 1]
那么sum(a()==12, numel(a)=6

你要求面积比,二值化后sum/numel是最简单的办法.二值化是必须的
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-06-19 18:03:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluesea57

铁虫 (小有名气)

引用回帖:
Originally posted by libralibra at 2011-06-19 18:03:48:
sum对矩阵元素求和,numel是个数
如果
a = [1 2 3;
       3 2 1]
那么sum(a()==12, numel(a)=6

你要求面积比,二值化后sum/numel是最简单的办法.二值化是必须的

谢谢!
希望在这里认识更多的朋友,共进步,共发展。
5楼2011-06-20 00:02:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 bluesea57 的主题更新
信息提示
请填处理意见