关于Java版OpenSlide与OpenSeadragon切割图像的方法(WSI图像 ,病理)

了解切图前,需先了解OpenSeadragon前端插件库的原理,尤其是其自动识别文件夹及文件名的原理。链接如下:OpenSeadragon前端插件库认识

学习完之后继续往下走

先上主要代码:

for (int n=levelCount-1;n>-1;n--){//n表示层级,也表示需要创建的文件夹名字
int n= os.getLevelCount();//代表层级
int w = n+8; //w文件夹名
//创建目录
String dirName = "E:\\img_test\\img_256\\"+w+"\\";
getImage.createDir(dirName);

int nHeight = (int) (os.getLevel0Height()/os.getLevelHeight(n)); //切高的次数
int nWidth = (int) (os.getLevel0Width() / os.getLevelWidth(n)); //切长的次数
    for (int j=0;j<nWidth;j++){  //循环切长
         for (int i=0;i<nHeight;i++){  //循环切高
          BufferedImage th = os.createThumbnailImage((int) (j*os.getLevelWidth(n)), (int) (i*os.getLevelHeight(n)), os.getLevelHeight(n),os.getLevelHeight(n), 256);  //开始切图

          fileName = dirName + j+"_"+i+".png";   //创建文件
          getImage.createFile(fileName);   //封装好的工具代码,此处没有贴出
          getImage.cutImage(th,fileName);  //封装好的工具代码,此处没有贴出
          System.out.println("保存成功");
        }
    }
os.close();
}

思路:

主要是先从最大层级开始切图,以此类推,最终在第0层切图。切最大层级是,先从坐标(0,0)开始,每次切的像素块大小为对应层级的长或者宽(哪个大取哪个),用for循环第2次切从坐标(最大的长或者宽,最大的长或者宽)开始,而切的次数由0层级的长宽除以现在切图的对应层级得出,此最大层级切出来的图需放到创建出来的最大文件夹下。

切到最后,切第0层是,从坐标(0,0)开始,切的长度为0层级原图的长或宽(哪个长对应哪个),最后映射成像素256,也就是OpenSlide自带的方法createThumbnailImage里面的参数maxSize=256即可。

注意:一定要事先了解OpenSeadragon的自动识别切图的原理,尤其是其自动识别对应的文件夹名,以及图片命名。这很关键。

讲的很水,不懂可以私聊。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值