本文参考了百度Mathematica吧的这个帖子。
统计图片中某个区域的面积可以有多种方法和多种软件,比如ImageJ(多谢柏爷推荐~)、ImageMagick(参见这篇教程)、PhotoShop(参见这篇教程)。这里采用Mathematica,仅用少于10行代码即可实现。
Mathematica源码为:
1 | img2 = Binarize[img]; |
程序思路:
先将导入的img图片通过Binarize函数二值化成为img2,再计算img2总的像素数totalPixels。针对图片的黑色部分,通过判断每个像素点的数值是否小于0.5而统计相应的数量。最后黑色部分像素数除以总像素数就得到区域的面积比。
这是一个基础版程序,有一个缺陷是其导入的图片必须是去边且去除杂质以后的图片,这意味着首先要用PhotoShop或截图软件等将图片裁剪并去掉杂色。
更高级的功能可以在此基础程序上继续添加:
- 去边:使用Mathematica的ImageCrop函数
- 去杂色:使用DeleteSmallComponents将一些小的杂色像素用背景像素替代。