求助:FIJI批量分析Winogradsky柱图像黑区占比的宏编写
Winogradsky柱图像批量分析FIJI宏求助
我正在完成本科毕业论文,需要分析1000多张Winogradsky柱图像,希望编写FIJI宏实现以下功能:
- 统一裁剪图像
- 应用相同颜色阈值
- 测量黑区面积占比
- 将结果汇总至CSV/Excel/TXT文件
手动分析时得到的面积占比结果异常偏低,自行编写的宏也无法正常运行,现将宏代码附上,寻求技术帮助:
//seting directory input=getDirectory("Set directory here"); list = getFileList(input); for (i = 0; i < list.length; i++) Wholecolor(input, list[i]); function Wholecolor (input,filename){ open (input + filename); //open ROI manager run("ROI Manager..."); roiManager("Show All"); // Assign raw opened image the name "currentImage" currentImage=getImageID(); // cropping image makeRectangle(834, 414, 3840, 3468); run("Crop"); //Duplicate raw image to make a copy that will be modified to make a mask run("Duplicate...", "title=Mask"); // Highlight the "Mask" image as the duplicate that will be thresholded to make the mask selectWindow("Mask"); makeRectangle(1026, 492, 3504, 3294); setBackgroundColor(0, 0, 0); run("Clear Outside"); run("Color Threshold..."); // Color Thresholder 2.14.0/1.54f // Autogenerated macro, single images only! min=newArray(3); max=newArray(3); filter=newArray(3); a=getTitle(); run("HSB Stack"); run("Convert Stack to Images"); selectWindow("Hue"); rename("0"); selectWindow("Saturation"); rename("1"); selectWindow("Brightness"); rename("2"); min[0]=0; max[0]=255; filter[0]="pass"; min[1]=0; max[1]=255; filter[1]="pass"; min[2]=30; max[2]=255; filter[2]="pass"; for (i=0;i<3;i++){ selectWindow(""+i); setThreshold(min[i], max[i]); run("Convert to Mask"); if (filter[i]=="stop") run("Invert"); } imageCalculator("AND create", "0","1"); imageCalculator("AND create", "Result of 0","2"); for (i=0;i<3;i++){ selectWindow(""+i); close(); } selectWindow("Result of 0"); close(); selectWindow("Result of Result of 0"); rename(a); // Colour Thresholding------------- run("Analyze Particles...", "display exclude clear summarize overlay"); // Get particle analysis results and put them into a file //clear ROI manager and Mask image so there is a clean workspace for the next image in the folder roiManager("Deselect"); roiManager("Delete"); close("Mask"); close(filename+"_HSB"); //save data collected by ROI manager to a .csv file titled "WInogradksy_results" dir=getDirectory("image"); //Change the file name here name = "Winogradsky_results"; index = lastIndexOf(name, "\\"); if (index!=-1) name = substring(name, 0, index); name = name + ".csv"; ///can change xls to csv, txt, etc. saveAs("Measurements", dir+name); close(); } run("Clear Results");
内容的提问来源于stack exchange,提问作者L_K
相关产品推荐
相关产品推荐

