[原创]全球多种数字化病理切片扫描仪原始图像文件批量转换
支持如下格式输入:
- Aperio (.svs, .tif)--支持.svs,尚无样品文件测试(.tif)
- Hamamatsu (.vms, .vmu, .ndpi) --支持.vms,.ndpi,尚无样品文件测试(.vmu)
- Leica (.scn) --支持(2019.3.16)
- MIRAX (.mrxs) --支持
- Philips (.tiff)--尚无样品文件测试(.tiff)
- Sakura (.svslide) --(2020.8.4: 仅支持2017+,仅支持导出html网页功能)
- Trestle (.tif) --支持
- Ventana (.bif, .tif) --支持.bif,尚无样品文件测试(.tif)
- Generic tiled TIFF (.tif) --支持
- Olympus (.vsi) --支持 (2019.3.16)
- Zeiss (.zvi) --支持 (2020.8.1)
- 江丰(.kfb) --支持 (2020.8.1)
- 麦克奥迪(.tif) --支持 (2020.8.1)
特色:
支持无级任意尺度调整采样率: 包括降低或者增加采样率为任意浮点数(0,+∞).
支持自定义无损压缩级数(-1,0~9)
另外,还专门增加了支持MIRAX 01.03版本.mrxs的3D Z-stack转换为3D的ims格式.
此情况下仅支持受限的降低采样率选项.
======2019.4.11更新=====
更新1: 增加了对Z-stack全玻片扫描的支持(.mrxs格式的3D数据集为特例,有另外的单独支持).
更新2: 增加了最终ims文件压缩,尤其适合体积庞大的全玻片扫描,可以将1G的全玻片ims文件无损压缩为<250MB的ims文件,大大节省了硬盘体积. 结合已有的无级采样率调整,可以更为自由地安排目标文件的大小.
更新3: 增加了对多系列图片的玻片扫描文件的全覆盖支持.
======2019.4.17更新=====
增加了对time-lapse的支持. 虽然病理切片都是静态的图形,只涉及到XYZC四轴,但是也有物理系的用全玻片扫描仪进行动态粒子追踪的. 目前已增加对"全玻片" "多通道" "时间序列" "多层" "荧光/白光"全方位支持.
=======2019.7.27更新====
%{ 本软件用于全自动无人干预静默转换海量的全玻片白光 / 全玻片荧光扫描原始文件到 .tif/.ims 格式文件 ,本软件还支持生物组织连续切片后批量扫描获得的切片文件的全程全自动无人干预三维对准 , 对于扫描人员每张随手框选 区域尺寸不做规定 , 具有很强的鲁棒性,能将数天的生物学切片扫描图片或者普通生物学图片输入,压缩,转换,校准等繁琐的工作量压缩到全程人仅干预1秒(就是双击一下).
特色 : 支持全球诸多商业化扫描仪的文件格式 : tiled tif Hamamatsu[.ndpi,.vms] Aperio[.svs]Trestle[.tif] MIRAX[.mrxs] Ventana[.bif] Leica[.scn] Olympus[.vsi] 对于常规生物学白光或者荧光显微镜的图像格式也支持 . %} % 根目录 rtFolder='D:\QMDownload\4'; % 模式 A 还是模式 B?aMode='A'; 一个玻片的扫描图像通常有 1 个主入口文件 , 也许包含一些辅助文件 . 这些辅助文件通常在附近的同名文 件夹下 , 或者和辅助文件混在在一起 . % 任何时候 , 严禁改变这种相对位置关系 % 按照如下方式准备待转换的玻片扫描文件 :% 模式 A: 根目录 (rtFolder) 下直接就是所有玻片的主入口文件 . 注意要保持每个玻片的附属文件 与其主入口文件的相对位置关系 .% 模式 B: 根目录 (rtFolder) 下只含有若干文件夹 , 这些文件夹内分别含有一些玻片的主入口文件 . 注意要保持每个玻片的附属文件与其主入口文件的相对位置关系 .如果某些格式 ( 比如 [Hamamatsu]:.vms) 的主入口文件和附属文件混在一起 , 建议 ( 但不强 求 ) 采用模式 B. 因为模式 A 下一大堆附属文件混乱 .% 如果你有几个肿瘤组织 , 每个组织有几十个切片文件 , 那么采用模式 B, 将不同肿瘤文件分 开 , 这样才能后期分别全自动部署自动对准 ( 如果需要对准的话 ). % 总之 , 默认模式 A, 如果根据各自的需求 , 模式 A 不合适 , 就模式 B.% 一个玻片的主入口文件的格式后缀,.ndpi/.vms/.svs/.tif/.mrxs/.bif/.scn/.vsi/.mrxs(Projection)/.mr xs(ZStack) % 注意,.mrxs 为特例 , 这款匈牙利扫描仪有单层 / 景深 /zStack 模式 : % 单层模式下 , 文件只有一层图 , 因此选.mrxs(Projection)( 实话是 , 其实是 slice, 不是 projection. 只 是拍摄过程有区别 , 但是文件没区别 )% 景深模式下 , 文件也只有一层图 , 因此选 .mrxs(Projection) % zStack 模式下 , 文件内包含两种组分 ,可以在读片软件上切换浏览 : % (1)zStack 本身 , 为多层 : % 如果你想要这个 , 选 .mrxs(ZStack) % (2)zStack 的单层景深 projection: % 如果你想要这个 , 选 .mrxs(Projection)aFmt='.mrxs(Projection)'; % 是否转换玻片为 tif 文件 ? InitialConvertToTifAsk=1; % 降低采样的xy 边长压缩浮点数 n. 当 n=1: 不压缩 .n>1: 压缩边长到原 1/n. n<1: 膨胀边长到原 1/n(, 无意义 , 绝对禁止 !). 注意 , 如果目的是 .mrsx 多层切片 stack, 即 .mrxs(ZStack), 则仅限输入正整数 n, 表示 2^(n-1)倍 xy 边长压 缩倍数 . aCompression=10; % 如果切片打开后是多个裁切区图片列表 , 其中有些图片你不想转换 , % 比如某张独特的全局缩略大图 , 或者可能的手写玻片标签照 , 或玻片二维码贴纸等 , % 这些文件名通常具有规律 , 可以总结出若干逃逸词汇 . % 比如 ,.vsi,.scn 等格式的玻片文件用 OlyVIA 专用程序打开后可看到Overview 总图和若干裁切图 . % 如果不需要总图 , 建议输入 Overview; 多个以分号隔开 .escapeWords ={'overview';'Series 0 (macro)';'Series 1';};如果不用逃逸 , 可以 escapeWords = = {};% 选择转换切片为 tif 文件的模式 : % h: , 将 "XYC 碎片 " 导出到每个 " 同名 _tif(_subtag)" 文件夹下 , 根据 tile文件名中的平面 xy 位置及 Z,T 信息 , 进行 XYZCT 拼接为 ims. % ic: imaris转换途径 . 将 "XYC 全片 " 导出到每个 " 同名 _tif(_subtag)" 文件夹下 , 每个文件夹内只用 转换第一个 tif 文件为 ims. % 注意 , 如果是ic 模式 , 而且不降低采样 (aCompression = 1), 那么单张切片像素数目不得超过 2147483648( 正方形而言, 不得过 46340 x 46340) conversionViaAskAss={'h';'ic';};conversionViaAsk=conversionViaAskAss{2}; % 导出 tif 时是否对颜色通道分隔 (split channel)?splitChAsk=1; % 是否将 tif 转换为 ims 格式 ? convertToImsAsk=0; % 如果为 h 模式 , 输入 tif 转换为ims 文件时的 chunk 的 deflate 设置 :-1,0,1,2,...9. -1 表示不压缩 . 0,1,2 表示逐渐加深的压缩 .deflate=1; % ( 如果 ) 转换为 ims 格式后 , 是否删除 tif? deleteMediatorFileAsk=0; % 是否此刻 ( 中期 ) 对 tif 图像进行边框背景扣除填充 ? 通常没必要开启 , 除非 : % 如果是 .mrxs 格式 , 而且扫描人员对你的每张组织切片扫描前随手大致自由框选了一个范围圈 % 由于匈牙利扫描仪的专利格式 , 圈外的背景色会被强制设为诡异的灰色 128, % 此时必须开启边框背景扣除填充 ! fillBoundaryPatchsAsk=1; % 定义背景色 . 矩阵尺寸决定于是 "splitChAsk=0 多通道合体图 ", 还是 "splitChAsk=1 灰度图 " aBgrd=[128,0,0,0]';%[128,128,128,0]'; %RGB 模式下 4x1:RGBA. 多通道则尺寸为 Nx1, 灰度则为单个数字 , 下同 . % 用什么颜色来替代背景色 aBgrdNew=[0,0,0,0]'; %[0,0,0,0]';% 通常荧光用 0 来替代背景斑块 .HE 染色等白场情形尚未接触过 , 碰到另说 . % 针对背景色块的城墙跑马划界 , 跑马界需要肿胀多宽 , 用来尽量扩充囊括边界的微量瑕 疵 , 一并铲除 . roiEnlarge=5; % 但是一个像素是否为背景 , 还取决于 isInBkgrd(inquiry,bgrd_ref)的实现逻辑 . % 输入单行真假表达式字符串 ,inquiry,aBgrd 分别为当前像素和参考背景像素 . % 参考 : % 'isequal(inquiry,aBgrd)' % 'all(inquiry(1:3) == inquiry(1))' % 'all(inquiry(1:3) > 0.5*aBgrd)' isInBkgrdScript='isequal(inquiry,aBgrd)'; % 是否对图像进行亮度增强 . 有些商业扫片公司为了延长荧光源寿命节省成本 , 降低亮度 , 导致切片整体特别暗 . 可以开启这个来纠正 , 对于对准需求(register) 更是必要 ! saturatedAsk=1; % 调节到百分之多少像为超越比特深度阈值 ? saturated=10; %是否将模式 A 下 rtFolder 内的全部 tif 按照 C 通道进行旁系迁移合并 ? tifParaCmixAsk=1; % , 并且紧随着对其进行对准 (register)? tifVirtualRegisterAsk=1; % 对准的最佳参考通道是 ? 第一通道为 0, 第二通道为 1, 以此类推 ... primeC=0; % 是否将对准后的多通道 merge 为 1 个 ims 文件 ?mergeParaCmix2ImsAsk=1;
=======2019.8.20:更新==========
针对高分辨率的单张超大体积一系列病理切片扫描tif图(比如,单张tif原始未压缩体积可为300mb~3GB),其三维对准对齐对会消耗大量内存及时间,不现实.
目前增加了小图对准后投射到原始大图的方案,该方案将占据大部分时间的对准过程时间大大减少,而且最终在原始大图上执行对准效果. 最终的对准切片Stack就可以根据感兴趣的区域,裁切出一块四四方方,对准好的,高清无损的局部图,用来进一步在图像处理软件中进行后处理及分析.
=======2020.4.更新==========
1.支持断点续传,最大程度避免中途异常后,再次运行时的二次重复无用功,自动分析最邻近的崩溃点,断点续传接着运行.
2.支持切片入口文件之间无对准需求,或者扫片公司已经将其对准好的海量上百G的单张文件,跳过对准环节,其余步骤不变,融合为一个总ims文件的常见情况,
=======2020.7月更新==========
2020.07.01新加独占性功能:
将每个病理切片分别生成一个本地html网页(以及文件夹),
可以用浏览器对该切片进行缩放,拖拽及全屏浏览.
可以任意定制网页视窗大小及最大分辨率.
也可以生成带大量可任意叠加及调整参数的滤波器网页.
=======2020.8月1日更新==========
1.增加了对国内最主流的两款国产病理切片扫描仪的支持:
(1)江丰kbf扫描仪.
(2)麦克奥迪的tif格式本来就支持,现在更新了海报说明.
2.修正了非RGB模式图像的单/多通道图像导出为jpg,png等非tif格式的瓦片时亮度不一致的bug.
最后编辑于 2020-08-04 · 浏览 7278