我的微量吸管吸液实验中有多个图像序列,看起来与此类似:https://www.youtube.com/watch?v=HpY_2_e7b6Y
现在我想自动跟踪移液器内组织的长度,以便序列中的所有不同图像。
有谁知道如何做到这一点?
谢谢!
答案 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):它提供了几乎一致的结果,但它非常接近并且可以很容易地改进。我认为主要观点是正确的。