openslide是處理醫學影象經常用到的乙個包,因為wsi(whole slide image)是非常大的,在一般情況下是沒有辦法處理的,所以才要借助openslide進行處理。下面是openslide在ubuntu下的安裝方法
pip3 install openslide-python
如果匯入時發生報錯,那一般是缺少依賴項,在終端執行:
sudo apt install python-openslide
首先要說明的一點是openslide的很多api的使用跟python自帶的pil相似,返回的物件是image物件而不是numpy中array物件,這點需要特別注意。因此在處理上一般都會將其轉化為array物件,其預設的通道順序是rgb。但是還有一點需要注意的是,轉化為array物件後是4通道,即在rgb後會再加乙個alpha(透明度)通道,其形式為【r,g,b,a】。
關於座標問題,還是跟python自帶的pil相似,都是(影象的寬,影象的高),跟array中矩陣的順序(影象的高,影象的寬)是相反的。而基於numpy的opencv、skimage在處理影象矩陣是都是先height後width的,即img【height,width】。
影象讀取
import openslide as opsl
slide=opsl.openslide(
'***x.svs'
)
這裡得到的是slide物件,後續對於wsi影象的操作都是基於此。
屬性
slide.level_count
level_count屬性是svs有多少層金字塔結構。所謂的金字塔結構,就是svs已經儲存了從上到下每一層取樣的圖titles,預設情況下0級是原圖,每向下一級相當於是對上一級影象的乙個下取樣,下取樣比例一般是4,也可以是2。
slide.level_dimensions
level_dimensions屬性是獲取指定級下的影象的寬和高,返回的是乙個list,每乙個元素是乙個陣列。
slide.level_downsamples
level_downsamples屬性返回的是指定級別下的下取樣比例,需要注意的是這個數字表示對0級影象的下取樣倍數。
提取影象
在opensilde中提取影象有兩種方法,分別是get_thumbnail和read_region。get_thumbnail是根據你指定的尺寸,返回原圖的縮圖;read_region提取指定層數下指定起始位置和大小的切片截圖。在對0層影象(即原圖)進行取樣和處理中,read_region更常用。需要注意的是,不論是get_thumbnail還是read_region,二者返回的都是python的影象物件,如果需要用別的影象處理工具進行後續的影象處理,比如skimage或opencv,都需要先將其轉為numpy格式。
slide_thumbnail = slide.get_thumbnail(slide.level_dimensions[2]
)# 以2級影象的尺寸作為指定輸出的縮圖尺寸返回乙個縮圖影象
slide_thumbnail = slide.get_thumbnail(
(1000
,600))
# 也可以自己指定乙個具體的數值,需要注意的是,第乙個引數實際上代表的是寬w,第二個引數代表的是高h
tiles = slide.read_region(
(location, level, size)
# read_region方法有三組引數,第一組引數是你要提取切片的起始座標(該座標是對應曾經下的座標),
# 第二組引數是你要提取的影象層級
# 第三組引數是切片的尺寸,同樣是(寬,高)的形式
這裡需要特別注意的location座標必須是0級圖下的座標,即如果不是取0級圖,那麼必須將提取切片的起始座標還原在0級圖下的座標,下面是引數說明。
def
get_thumbnail
(self, size)
:"""return a pil.image containing an rgb thumbnail of the image.
size: the maximum size of the thumbnail."""
def
read_region
(self, location, level, size)
:"""return a pil.image containing the contents of the region.
location: (x, y) tuple giving the top left pixel in the level 0
reference frame.
level: the level number.
size: (width, height) tuple giving the region size.
unlike in the c inte***ce, the image data returned by this
function is not premultiplied."""
Charles安裝與入門
charles的本質就是乙個 伺服器!通過這篇文章你可以學會使用charles工具擷取請求和響應,達到分析抓包到目的。如果你想學習如何使用charles工具,可以仔細閱讀這篇文章,了解一下charles工具的常用功能使用方法。或基於red hat2當你安裝完charles,接下來就了解如何使用cha...
Docker入門與安裝
docker 是乙個開源的應用容器引擎,基於 go 語言 並遵從 apache2.0 協議開源。docker 可以讓開發者打包他們的應用以及依賴包到乙個輕量級 可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。docker 是乙個用於開發,交付和執行應用程式的開放平台。do...
LaTeX安裝與入門
一直看見有推薦使用latex來進行文件編輯與排版,那我也嘗試一下!不要安裝和使用 ctex 套裝!請在任何情況下優先使用 ctex 巨集集在 latex 中處理中文!ctex 巨集集和 ctex 套裝是兩個不同的東西。ctex 巨集集是整合了中文支援 作業系統判定 字型選擇 版式預設為一體的一組巨集...