Maybn 发表于 2012-12-5 15:39:06

哪位高人给点matlab编程得到照片的孔隙率的代码

在文献中看到下面一段:
采用Matlab软件编程对扫描电镜照片进行二值化处理,编程时,设定阀值,
对大于阀值的数进行赋值,使其等于255,即纯白色,便可以计算出白色象素点的比例,从而可以得照片的孔隙率。
以前没接触过,哪位高人能给点程序代码参考下,多谢!

alexqxp 发表于 2012-12-9 15:06:15

简单说下吧。先把图像读进来,命名为I。
Igray=rgb2gray(I) %I为待处理的图像。
IBW=Igray>50 %这里的阈值可以自己设定。
然后使用直方图统计黑点和白点就可以得到比例了。
其实现在的PS也可以直接算孔隙率,方法类似,都是先转黑白,然后看直方图统计数据。

dutxiaoxuesheng 发表于 2013-3-2 19:57:07

alexqxp 发表于 2012-12-9 15:06 static/image/common/back.gif
简单说下吧。先把图像读进来,命名为I。
Igray=rgb2gray(I) %I为待处理的图像。
IBW=Igray>50 %这里的阈值 ...

我到现在还没有弄明白
管理员能不能帮我做个简单的例子
我把我的照片发给你
就是算孔洞面积和整个图片面积之比
真的好急啊

lengyunfeng 发表于 2013-3-3 00:15:49

本帖最后由 lengyunfeng 于 2013-3-3 10:04 编辑

dutxiaoxuesheng 发表于 2013-3-2 19:57 http://forum.simwe.com/static/image/common/back.gif
我到现在还没有弄明白
管理员能不能帮我做个简单的例子
我把我的照片发给你


假定D盘根目录下有一个1.jpg文件,

>> clear
>> i=imread('d:\1','jpg');
>> subplot(2,2,1)
>> imshow(i);
>> igray=rgb2gray(i);
>> subplot(2,2,2)
>> imshow(igray)
>> ibw1=igray>50;
>> subplot(2,2,3)
>> imshow(ibw1)
>> ibw2=igray>100;
>> subplot(2,2,4)
>> imshow(ibw2)
>> =size(igray);
>> n1=sum(sum(ibw1))/(m*n)

n1 =

    0.2618

>> n2=sum(sum(ibw2))/(m*n)

n2 =

    0.1207结果为:

上图中左上角图片为原图片,右上角为对应的灰度图片,左下角那张是以50为限值进行过滤后的黑白图片(若以50为限值,则孔隙率为0.2618),右下角那张是以100为界限进行过滤以后的黑白图片(若以100为限值,则孔隙率为0.1207),可见灰度图片里的各像素值越大,则代表它对应的像素点越黑,据此,你可以通过调整限值来获得你想要的孔隙与周侧物质的分界效果;这玩意只是个近似,想达到百分百准确,是不可能的。

dutxiaoxuesheng 发表于 2013-3-10 16:25:10

lengyunfeng 发表于 2013-3-3 00:15 static/image/common/back.gif
假定D盘根目录下有一个1.jpg文件,

结果为:


太感谢了
此乃绝作!!!!

hanmumu 发表于 2013-11-12 11:10:40

感谢版主学习了,搞懂了:hug:

mengqb 发表于 2013-12-13 16:25:10

好资料 谢谢分享:):(:D:D
页: [1]
查看完整版本: 哪位高人给点matlab编程得到照片的孔隙率的代码