3

ImageJ软件使用教程(三):目标计数 - 二次元攻城狮

 4 weeks ago
source link: https://www.cnblogs.com/timefiles/p/18146188
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.




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

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

image

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

多点工具法#

多点工具法适用于数目不多的情况,讲究大力出奇迹,纯手动计数。
右键点工具选择Multi-point Tool激活工具:

image

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

image

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

image

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

image

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

阀值分割法#

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

二值化#

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

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

image

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

填充分割#

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

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

image

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

自动计数#

先随便选取一个截面大概测试一下面积,这一步很重要,可以根据这个面积值过滤掉一些细小的干扰项
测量结果如下,截面面积大概在2000个像素左右:

image

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

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

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

image

image

显示结果#

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

image

点击右下角Show All在原图上显示结果:

image

总结#

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

参考资料#


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK