ImageJ软件使用教程(三):目标计数

目录

本文以钢筋计数为例,讲解一下如何使用ImageJ软件进行计数,这里只介绍两种方法:

  • 多点工具法
  • 阀值分割法

钢筋计数是我接触的第一个视觉项目,虽然项目最后不了了之,但作为我机器视觉的开荒项目还是很有纪念意义。

多点工具法

多点工具法适用于数目不多的情况,讲究大力出奇迹,纯手动计数。

右键点工具选择Multi-point Tool激活工具:

双击点工具,设置点的颜色、形状并勾选Label points

手动点击目标即可计数,按住Alt键点击则可取消该点

根据最后一个计数可得总共100根,也可以通过Analyze->Measure查看计数结果和标注点的坐标:

如果想把标注点保存在图片中,可以利用Image->Overlay->Flatten创建原始数据的一个副本,最后保存后的副本图片会存有标注点。

阀值分割法

阀值分割法适用于数目较多的情况,全自动化计数,相应的图片预处理会比较麻烦。

二值化

先打开图片,执行以下预处理操作:

  • 点击Image->Type->8-bit,将图片转为灰度图
  • 点击Image->Adjust->Threshold,调节阀值
  • 点击Apply即可得到二值化后的图片

软件会自动给一个合适的阀值,适当调节阀值不要让横截面完全断开即可,横截面粘连和细小干扰项留到后面处理。

填充分割

二值化后,部分横截面存在空隙或粘连现象,可以通过以下操作进行处理:

  • 选择 Process->Binary->Fill Holes填补截面空隙
  • 选择 Process -> Binary -> Erode 腐蚀边缘毛刺
  • 通过 Process->Binary->Watershed打断重叠部分

第二步的腐蚀操作是为了去除毛刺,降低第三步打断的难度,大约腐蚀两次左右即可。

自动计数

先随便选取一个截面大概测试一下面积,具体测量方法参考上一篇教程。这一步很重要,可以根据这个面积值过滤掉一些细小的干扰项

测量结果如下,面积大概在2000个像素左右:

选择Analyze->Analyze Particles打开窗口,设置SizeShow

  • Size:1000-Infinity------指分析颗粒面积大于300(单位是pixel),一直到无穷大的颗粒(正常截面的面积在2000左右,最小值取1000很合理了)。
  • Circularity:0.00-1.00------指圆度,1.00为标准圆,一般不需要设置。
  • Show:Overlay Masks------在原图显示结果并标记,可以试试其它几种输出效果。
  • 勾选Add to Manager------方便后面把ROI显示到原图。

点击OK弹出计数结果,总计100根钢筋:

显示结果

打开原图,选择Analyze->Tools->ROI Manager

点击右下角Show All显示结果,根据需要保存图片:

总结

总的来说,多点计数适合数目小的目标计数,而阀值分割法适合数目多的目标计数。不过,如果图片质量比较差的话,使用阈值分割法会比较麻烦

参考资料