openslide处理大图

openslide官网http://openslide.org/api/python/
可以下载使用,并安装
安装方法:

sudo apt-get install openslide-tools
sudo apt-get install python-openslide

下面贴一个自己利用openslide读取的大图,并进行下采样显示:

# -*- coding: utf-8 -*-
#coding:utf-8
import openslide
import numpy
import matplotlib.pyplot as plt
from PIL import Image
import scipy.misc
import time
start=time.time()
source=openslide.open_slide("/home/ccf/CCF/Colorecal-cancer_FCN/data/svs/2017-01-15-02-55-11.ndpi")
    #filelist=os.listdir(source)#该文件夹下所有的文件(包括文件夹)
downsamples=source.level_downsamples
[w,h]=source.level_dimensions[0]
size1=int(w*(downsamples[0]/downsamples[2]))
size2=int(h*(downsamples[0]/downsamples[2]))
region=numpy.array(source.read_region((0,0),2,(size1,size2)))
scipy.misc.imsave("/home/ccf/CCF/Colorecal-cancer_FCN/data/save/2017-01-15-02-55-11_2.tif" ,region)
end=time.time()
print(end-start)
#plt.figure()
#plt.imshow(region)
#plt.show()

#print (region)

大家看看就好,可以借鉴一下,写的不好
下面解释一些openslide的里面的一下参数,并说明用法
(1)、opensilde.OpenSlide(filename)——读取图像

source=openslide.open_slide("/home/ccf/CCF/Colorecal-cancer_FCN/data/svs/2017-01-15-02-55-11.ndpi")

(2)、close()——关闭图像

  slide.close()  

level_count——幻灯片中的级别数。级别从0(最高分辨率)到level_count - 1(最低分辨率)编号。这里没理解slide级别数是什么意思,代码返回为10,可能应该是slide的层数,比如40倍,20倍,10倍等有多少层

    level_count = slide.level_count  
    print 'level_count = ',level_count  

上述代码得到 level_count = 10
(3)、dimensions (width, height)在0级别下,也就是最高分辨率的情况下slide的宽和高(元组)

    [m,n] = slide.dimensions #得出高倍下的(宽,高)
    print (m,n)  

(4)、level_dimensions[k] 得到(width, height)元组,k下级别k,是指在k水平下的下面举例就知道k的意思,每张全扫描最高级别是0,也就是最高分辨率,这个分辨率在不同的全扫描图片中是不一样的,有的第0层是40倍,第二层是10倍,而有的第0层是20倍,第二层是10倍,k指对应的层数

    [m1,n1] = slide.level_dimensions[1] #级别k,且k必须是整数,下采样因子和k有关  
    print (m1,n1)      # m1 = m/下采样因子 此时k为1  

(5)、level_downsamples 每一个级别K的对应的下采样因子,下采样因子应该对应一个倍率

    slide_level_downsamples = slide.level_downsamples[2]  
    print slide_level_downsamples 

(6)、get_best_level_for_sownsample(downsample) 对给定的下采样因子返回一个下采样级别,downsamples必须是浮点数

    slide_downsamples = slide.get_best_level_for_downsample(5.0)  
    print slide_downsamples  

(7)、read_region(location, level, size) 返回一个RGBA图像,包含指定区域的内容。location指0级别下左上角位置的坐标,元组,level指级别,整数,size是(width, height)是元组,

 tile = numpy.array(slide.read_region((0,0),6, (size1,size2)))  

你可能感兴趣的:(openslide,python)