24小时热门版块排行榜    

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

afgh2587849

木虫 (小有名气)

[交流] 【求助】用graythresh函数遇到的问题 已有4人参与

graythresh函数是利用otsu's method算法计算出图像的一个阙值,可以用来区分图像的前景和背景部分。现在有个小问题没有解决,如果图像矩阵中的数据类型为double时,算出来的结果总是0.4980,不过help graythresh给出来的说明是:The input image I can be uint8, uint16, int16, single, or double, and it must be nonsparse.  现在我要处理的数据类型必须是double的,因为里面的很多数都大于65536,不能转换为uint8或者uint16,请问该如何操作?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

afgh2587849

木虫 (小有名气)

引用回帖:
Originally posted by cctt126 at 2011-01-12 22:00:49:
这样做,
th=graythresh(I( : ));
bw = im2bw(I,th);
有问题继续交流。

[ Last edited by cctt126 on 2011-1-12 at 22:02 ]

same problem..
th=graythresh(I( : )); -->th = 0.4980
我这里的矩阵I是double类型,有很多元素大于65535

同样,如果用命令 I = double(imread('lena.jpg'));读入一幅灰度图像,
level = graythresh(I); or
level = graythresh(I( : ));  
level的值均为0.4980
多多交流
6楼2011-01-13 09:57:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

conanwj

版主 (著名写手)

将double值均匀映射到uint16

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
mze04532(金币+2):热心应助~奖励 2011-01-13 08:18:37
即使double类型数据大于65536,也可以做一个均匀映射,将double范围值映射到0~65536的。
映射函数很简单,LZ一定能搞定的吧^_^
引用回帖:
Originally posted by afgh2587849 at 2011-01-10 06:53:07:
graythresh函数是利用otsu's method算法

2楼2011-01-10 09:19:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

afgh2587849

木虫 (小有名气)

引用回帖:
Originally posted by conanwj at 2011-01-10 09:19:35:
即使double类型数据大于65536,也可以做一个均匀映射,将double范围值映射到0~65536的。
映射函数很简单,LZ一定能搞定的吧^_^



谢谢您的回答,不过均匀映射之后,我还是要将矩阵转换为uint16格式才能再用graythresh函数进行处理,这样许多数据就会被错误的四舍五入了吧,对最后计算出的阙值也会有很大影响
3楼2011-01-10 09:39:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cctt126

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
mze04532(金币+2):感谢热心,欢迎常来~ 2011-01-13 08:18:48
这样做,
th=graythresh(I( : ));
bw = im2bw(I,th);
有问题继续交流。

[ Last edited by cctt126 on 2011-1-12 at 22:02 ]
数学,英语,编程,没一样让我省心。。。
4楼2011-01-12 22:00:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见