我有两个数据集,一个包含884个图像,另一个包含1057个图像;数据集来自原位加热实验。我已经处理了数据(互相关,过滤等)。现在,我有两个二进制图像数据集。我需要测量每个图像中每个粒子的粒子数,面积和纵横比(我可以使用数字显微照片工具菜单中的粒子分析)。我需要通过我的整个数据集连接测量值,这意味着,在一个图像中测量的一个粒子需要在另一个图像中是相同的粒子。我认为这不是一项微不足道的任务。但是,是否有其他人知道如何推进这项任务呢?
答案 0 :(得分:1)
以下信息可能对您的努力有用:
脚本访问ParticleAnalysis的功能 DigitalMicrograph在 GMS 3 中添加了
FindParticles
命令。
尚未提供任何文档,但以下脚本示例演示了该方法。
一些注意事项:
示例:强>
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 已经存在。这些命令反映了分析菜单选项:
MPOpen
,MPClose
,MPErode
,MPDilate
,MPOutline
,MPDistanceMap
,MPEuclideanDistanceMap
,MPExactDistanceMap
。
所有这些命令都要求掩码图像为二进制类型。
示例:强>
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 ) )