首頁 > 軟體

openslide-python使用心得

2020-06-16 17:06:29

全掃描(whole slide image)影象非常的大,處理起來比較麻煩,openslide提供了一個很好的介面,具體參考openslide官網http://openslide.org/api/python/

首先先匯入模組,這裡是openslide-matlab的安裝  http://www.linuxidc.com/Linux/2017-09/147187.htm

安裝openslide-Python下面兩個命令就可以了

sudo apt-get install openslide-tools

sudo apt-get install python-openslide

import openslide 

(1)、opensilde.OpenSlide(filename)——讀取影象

 slide = openslide.OpenSlide('/media/xhj/LENOVO/data/Metastasis/Tumor_005.tif') 

(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 #得出高倍下的(寬,高)(97792,219648) 
print (m,n) 

上述程式碼得到  (97792, 219648),影象夠大的

(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 

上述程式碼得到        (49152, 110080)    如果k為2 得到  (24576, 55296)   k為3得到  (12288, 27648)
(5)、level_downsamples    每一個級別K的對應的下取樣因子,下取樣因子應該對應一個倍率

slide_level_downsamples = slide.level_downsamples[2] 
print slide_level_downsamples 

上述程式碼得到  3.97569444444 

(6)、get_best_level_for_sownsample(downsample)  對給定的下取樣因子返回一個下取樣級別,downsamples必須是浮點數

 slide_downsamples = slide.get_best_level_for_downsample(5.0) 
print slide_downsamples 

上述程式碼得到  2   

(7)、read_region(location, level, size)  返回一個RGBA影象,包含指定區域的內容。location指0級別下左上角位置的坐標,元組,level指級別,整數,size是(width, height)是元組,

tile = numpy.array(slide.read_region((0,0),6, (1528,3432))) 

plt.figure() 

plt.imshow(tile) 

pylab.show() 

上述程式碼可以得到左上角坐標(0,0),6級別下,大小是(1528,3432)的圖
(8)、get_thumbnail(size)  返回一個縮圖的RGB影象,size為(width,height)元組

slide_thumbnail = slide.get_thumbnail((1528,3432)) 
tile = numpy.array(slide_thumbnail) 
# scipy.misc.imsave('/home/xhj/PycharmProjects/openslide-experiment/save/thumbnail.jpg', tile) 
plt.imshow(slide_thumbnail) 
plt.imshow(tile) 
pylab.show() 

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-09/147188.htm


IT145.com E-mail:sddin#qq.com