最近需要批量把Olympus VS120扫描的vsi格式的图像批量split channels并导出为tif文件,没有找到合适的插件所以自己写了一个macro,其中利用了Olympus自己的imagej插件Olympus Viewer批量打开文件。

//This macro works for transforming multi-channel vsi image from Olympus to tiff files.
//The default channnel number is three.
dir = getDirectory("Choose a Directory of input");
list = getFileList(dir);
setBatchMode(true);// runs up to 6 times faster
name="PdynVMH_RV_slide1";//Default output file name
name=getString("Type in output file name", "PdynVMH_RV_slide1");
outputdir=dir;
outputdir= getDirectory("Choose a Directory of output");
for (f=0; f<list.length; f++) {   //main files looppath = dir+list[f];print(path);showProgress(f, list.length);if ((endsWith(path,".vsi"))&&(list[f]!="Image_01_Overview.vsi")) {section=substring(list[f],6,8);print(list[f]+";"+section);run("OVMacro");Ext.openFile(path, 0, 0);//Open Group1 Level1 of vsi fileprint("Open file successfully");run("Split Channels");selectWindow("C1-"+list[f]+" Group:1 Level:1");run("8-bit");run("Enhance Contrast", "saturated=0.35");saveAs("Tiff", outputdir+name+"s"+section+"c1");run("Close");selectWindow("C2-"+list[f]+" Group:1 Level:1");run("8-bit");run("Enhance Contrast", "saturated=0.35");saveAs("Tiff", outputdir+name+"s"+section+"c2");run("Close");selectWindow("C3-"+list[f]+" Group:1 Level:1");run("8-bit");run("Enhance Contrast", "saturated=0.35");saveAs("tif", outputdir+name+"s"+section+"c3");run("Close");}}

ImageJ中创建一个.ijm的文件,该文件中可以输入指令并支持JAVA,R,python等多种语言。

我用了IJ1 Macro,具体语法可以参考官方文档。Macro Language

Macro使用可以结合ImageJ-Plugin-Record当中的步骤记录器,但是对于打开vsi文件(包括多个Group和Level,不同的Level代表不同分辨率大小的图片但是它们都包含各个channel的结果)这一步,步骤记录器只能记录下open(xxx);而没有选择Group/Level的过程。实际上如果用open会报错。所以我采用了这个插件:OlympusImageJPlugin

安装这个plugin之后,通过下面这个指令可以指定Group/Level打开:

Open之后就可以用步骤记录器记录下来操作然后快乐抄作业啦!

有一点需要注意的是,对于Split Channels之后的操作最后指定SelectWindow,虽然麻烦一点但是避免了出bug的可能,比如运行.ijm文件时会弹出Log,print的结果就会在这个窗口显示,但是如果没有制定窗口,后面Run("Close")之类的的操作其实会把log也认为是图像窗口就混乱了。

setBatchMode下可以不真正的打开图像而直接运算所以提高了运算速度,但是似乎也没有很快...70多张100M*3的图跑了好几个小时...

如果不是三个通道的话可以把SelectWindow到runclose之间的部分重复或者删减一下。直接跑会出错。

ImageJ macro 批量vsi转tif相关推荐

  1. python不使用GDAL实现批量nc转tif

    python不使用GDAL实现批量nc转tif import xarray as xr import numpy as np import cartopy.crs as ccrs import rio ...

  2. ImageJ自动批量多通道图片无损分离为单色荧光图

    一共只需4步,ImageJ就可以将多通道的TIF图片中红绿蓝三色分开,并形成三张无损纯色荧光tif图片. 准备: 在桌面上(必须是桌面)创建2个文件夹,分别为文件夹1和文件夹2. 将需要拆分的多通道图 ...

  3. ImageJ自动批量荧光面积统计

    本方法只介绍批量处理方法,单张图片请再第3步后,点击select,按M即可. 将相类似的需要计算荧光面积的图片复制在同一个文件夹中. 用ImageJ打开其中一张图片, 1,Plugins → Macr ...

  4. 采用ImageJ+插件批量转换透射电镜ser图像

    透射电镜两大图像格式,dm3和ser,分属Gatan和ThermoFisher(原FEI).Gatan放出了公开版的GMS,可以免费使用和转换dm3格式为tif,但是ThermoFisher就很抠,离 ...

  5. ImageJ自动批量多通道单细胞荧光测量

    用ImageJ计算细胞荧光强度的时候,一般来说,所有的细胞核都有蓝色的hoechst荧光信号,但对于其他颜色的荧光,比如说红色荧光,就不一定了.比如有的细胞有红色荧光信号,有的细胞没有红色荧光信号.这 ...

  6. nc\hdf\h5数据格式批量提取为tif格式

    需求:目前存在有nc,hdf,h5等数据格式,每一个文件按时间序列存在多个波段,需要将所有的文件提取为单波段的tif格式,可使用如下插件.

  7. MODIS数据HDF批量转化为TIF

    原始数据MCD12Q1,空间分辨率500m,转化为WGS84. hdf ->tif GDAL from osgeo import gdal import os import glob os.ch ...

  8. 使用ImageJ批量处理图像 超好用持续更新常用操作

    本人经常做一些生物图像的处理,Imagej是我常使用的一个图像处理软件,非常小巧但是各种功能都有,最近需要批量处理一批图像,一张一张的导入处理太麻烦,经过一番挖掘,学习到了如何使用Imagej强大的批 ...

  9. MATLAB 批量读取NC文件并转为TIF文件

    因为课题处理30年的降雨和蒸发的遥感资料(.NC格式),而想要在Arcgis中处理要求的是raster格式的,所以需要批量转化为tif文件,所以在此分享自己改编之后的代码,可以简洁明了的实现这个过程: ...

最新文章

  1. 面向对象【day08】:类的特殊成员(一)
  2. 平面设计现在行业发展如何?
  3. android wifi动画显示,android动态配置Wifi信息
  4. 一句话说汽车(超搞笑)
  5. Xcode更改ios app图标
  6. POJ 1703 Find them, Catch them(并查集高级应用)
  7. 软件性能测试过程详解与案例剖析_推荐软件测试书籍
  8. Redis单机系列文章--1.Redis单机的安装和配置(含视频)
  9. android 圆形头像,自定义圆形ImageView
  10. 编写一个程序求输入字符串的长度
  11. Java中timer的schedule()和schedualAtFixedRate()函数的区别
  12. redis 集群_Redis集群部署
  13. 基本农田卫星地图查询_gps卫星信号模拟器如何gps信号
  14. 如何利用Python程序读取Excel创建折线图
  15. 加州大学洛杉机分校计算机科学,加州大学洛杉矶分校计算机科学
  16. 鼠标右键失灵java_鼠标右键失灵怎么办
  17. C语言——将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  18. No provisioned iOS devices are available with a compatible iOS version.
  19. arm指令bne.w改成b,即无条件跳转
  20. 道家修真分哪几个境界?

热门文章

  1. redis文件事件和时间事件
  2. 数仓 - 促销敏感度、评论敏感度
  3. ai一个线段多个箭头_ai里面怎么画箭头?ai箭头设置和绘制方法
  4. 使用mdadm创建raid mdadm命令详解_php_sir_新浪博客
  5. matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰
  6. 使用C语言开发web
  7. 电话号码组成分析 东海陈光剑
  8. C#利用DirectX显示.x三维动画
  9. 7.6 Python 实例12-政府工作报告词云
  10. 青少年软件编程等级考试 python-青少年软件编程等级考试Python(一级)