24小时热门版块排行榜    

查看: 2444  |  回复: 6

snifap

新虫 (初入文坛)

[求助] 关于Matlab求孔隙率(找最佳阈值)

我想求一张网片的孔隙率,前提得先找出最佳阈值。我找了有关求最佳阈值的一段程序。但是第1行和第15行没有看懂,能否请教各位高手解释一下。
function num = test(filepath)
imggray = imread(filepath);

subplot(221);
imshow(imggray);
title('原始图像');

imgbw = im2bw(imggray,0.5);
subplot(222);
imshow(imgbw);
title( '使用默认阈值0.5');

imgbw = im2bw(imggray, 0.25);
subplot(223);
imshow(imgbw);
title( '指定阈值为0.25');

level = graythresh(imggray);
num = level * 255;
imgbw = im2bw(imggray,level);
subplot(224);
imshow(imgbw);
title('使用大津法(Otsu)获得阈值');
我如果删掉第1和15行,会弹出一个窗口,包括原图,阈值为0.25,0.5,及最佳阈值的四张图,但是最佳阈值的图下方并没有显示最佳阈值到底是多少?很纠结,希望懂的朋友能替我看一下,谢谢各位了!
回复此楼

» 收录本帖的淘帖专辑推荐

仿真建模与计算 程序语言箱 Porous Materials of Polymer

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
snifap: 金币+2, 有帮助 2013-04-26 12:58:34
level = graythresh(imggray);这行最后的分号去了,运行一下command window就能看到输出了(0~255之间的一个数,可以/255转化到0~1之间)

不过这就是个调用简单的图像处理示例程序吧,阀值是用大津法得到的
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-04-10 20:15:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snifap

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by libralibra at 2013-04-10 20:15:14
level = graythresh(imggray);这行最后的分号去了,运行一下command window就能看到输出了(0~255之间的一个数,可以/255转化到0~1之间)

不过这就是个调用简单的图像处理示例程序吧,阀值是用大津法得到的

function num = test(filepath)这句是什么意思啊?
我问一下哦,这个程序不是大律法的算法吗?谢谢你啊!
3楼2013-04-10 20:30:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
snifap: 金币+2, 有帮助 2013-04-26 12:58:46
level = graythresh(imggray);
num = level * 255;
imgbw = im2bw(imggray,level);
---------------------graythresh就是大津法啊
第一句是函数定义
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2013-04-10 20:39:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

justyet

金虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
level = graythresh(imggray);
num = level * 255;
最佳阈值是num
5楼2013-04-10 21:07:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snifap

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by libralibra at 2013-04-10 20:39:10
level = graythresh(imggray);
num = level * 255;
imgbw = im2bw(imggray,level);
---------------------graythresh就是大津法啊
第一句是函数定义

我以桌面上一张图片为例:
输入程序为:

>> function num = test('C:\Users\kcdn\Desktop\a.jpg')
imggray = imread('C:\Users\kcdn\Desktop\a.jpg');%读取图像

subplot(221);
imshow(imggray);
title('原始图像');

imgbw = im2bw(imggray,0.5);
subplot(222);
imshow(imgbw);
title( '使用默认阈值0.5');

imgbw = im2bw(imggray, 0.25);
subplot(223);
imshow(imgbw);
title( '指定阈值为0.25');

level = graythresh(imggray)
num = level * 255;
imgbw = im2bw(imggray,level);
subplot(224);
imshow(imgbw);
最后出现
??? function num = test('C:\Users\kcdn\Desktop\a.jpg')
        |
Error: Function definitions are not permitted at the prompt or in scripts.
能不能告诉我该怎么改动,才能正常运行啊。
谢谢啊
6楼2013-04-11 19:22:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
snifap: 金币+2, 有帮助 2013-04-26 12:58:55
你这是在一个m文件中吧,把第一行有function的那一行全部删除(或者注释掉),然后f5就好了.
matlab的m文件有2种,一种是script脚本文件,要求是跟command window写代码一样,一行一行写;
另一种是m函数,要求:必须有至少一个主函数,而且这个主函数名字'必须'与文件名相同.
如果是脚本,就不能出现函数定义,如果是函数,文件名和函数名则必须相同.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
7楼2013-04-12 16:15:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 snifap 的主题更新
信息提示
请填处理意见