如何使用ImageJ自动测量图像序列中组织的长度?

时间:2014-08-07 08:35:56

标签: sequence imagej measure

我的微量吸管吸液实验中有多个图像序列,看起来与此类似:https://www.youtube.com/watch?v=HpY_2_e7b6Y

现在我想自动跟踪移液器内组织的长度,以便序列中的所有不同图像。

有谁知道如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用宏来执行此操作:首先,您可以在通道中间手动绘制一条线来定义方向。然后,对于电影的每个图像,您尝试找到移液器的边缘和界面。为此,您可以尝试使用“处理>查找边缘”功能。根据图像的质量,您可能需要几个步骤。最后,你只需要找到这两点之间的距离。

这是一个快速而肮脏的宏,它给Youtube视频带来了一个不太错误的结果:

print("\\Clear");
run("Clear Results");

run("Duplicate...", "title=Stack-1 duplicate range=1-5");

selectWindow("Stack-1");
run("Find Edges", "stack");

waitForUser("Please draw a line and click OK.");
//makeLine(402, 238, 170, 221);

setLineWidth(20);

//for each frame of the movie
for(s=1;s<=nSlices;s++){
    setSlice(s);

    profile=getProfile();
    maxProfile=Array.findMaxima(profile,15);
    diff=abs(maxProfile[1]-maxProfile[0]);
    print("max at: "+maxProfile[1] +" "+ maxProfile[0]);

    print("Slice "+s+" the difference is: "+diff+" px");
    setResult("Time",nResults,s*2);
    setResult("Position",nResults-1,diff/200);
}

我在Youtube视频的五帧上测试了它(可用here大约1个月,6MB):它提供了几乎一致的结果,但它非常接近并且可以很容易地改进。我认为主要观点是正确的。