如何在dm-script中为图像数据集使用粒子分析?

时间:2016-11-09 11:44:17

标签: dm-script

我有两个数据集,一个包含884个图像,另一个包含1057个图像;数据集来自原位加热实验。我已经处理了数据(互相关,过滤等)。现在,我有两个二进制图像数据集。我需要测量每个图像中每个粒子的粒子数,面积和纵横比(我可以使用数字显微照片工具菜单中的粒子分析)。我需要通过我的整个数据集连接测量值,这意味着,在一个图像中测量的一个粒子需要在另一个图像中是相同的粒子。我认为这不是一项微不足道的任务。但是,是否有其他人知道如何推进这项任务呢?

1 个答案:

答案 0 :(得分:1)

以下信息可能对您的努力有用:

  

脚本访问ParticleAnalysis的功能   DigitalMicrograph在 GMS 3 中添加了   FindParticles命令。

尚未提供任何文档,但以下脚本示例演示了该方法。

一些注意事项:

  • 掩码图像以及foundParticlesImage必须是二进制
  • 类型
  • 返回的图像文档包含结果作为电子表格,菜单也返回一个

示例:

image inputImage := GetFrontImage()
number sx, sy
getsize( inputImage, sx, sy )

image mask := BinaryImage( "Binary Mask", sx, sy )      // The real input for analysis
Image foundParticlesImage := BinaryImage( "found", sx, sy ) // Accepted particles mask (result)

mask = inputImage>0.6*max(inputImage) ? 1 : 0           // This is a simple Treshold to test...

string mFields = "Area,FilledArea,CenterX"      // Specify analysis results
Number minParticleSize = 15                     // Limit accepted
Number doLabel = 0                              // Add labeled mask to inputImage True/False

imageDocument ResultsDoc = FindParticles(inputImage,mask,mFields, minParticleSize, doLabel, foundParticlesImage)
ImageDocumentShow( ResultsDoc )

Showimage( mask )
ShowImage( foundParticlesImage )

您可能还会发现以下内容:

  

对二进制图像处理的脚本访问是DigitalMicrograph的一部分,因为 GMS 1 已经存在。这些命令反映了分析菜单选项:
  MPOpenMPCloseMPErodeMPDilateMPOutlineMPDistanceMapMPEuclideanDistanceMapMPExactDistanceMap

所有这些命令都要求掩码图像为二进制类型。

示例:

image CreateMPCloseStack( image maskInput, number neighbors, number iterations )
{
    number sx, sy
    GetSize( maskInput, sx, sy )
    image maskBinary := BinaryImage( "mask", sx, sy )
    maskBinary = maskInput
    image outStack := BinaryImage( "Stack", sx, sy, iterations + 1 )
    for( number n=0; n<= iterations; n++ )
    {
        outStack[0,0,n,sx,sy,n+1] = maskBinary
        maskBinary = MPClose( maskBinary, neighbors )
    }
    return outStack
}

image maskInput := GetFrontImage()
ShowImage( CreateMPCloseStack( maskInput, 5, 10 ) )