本頁說明如何使用 Cloud Healthcare API 儲存、分析及管理全玻片影像 (WSI)。
總覽
數位病理學可將傳統玻璃載玻片數位化,產生全載玻片影像 (WSI),方便儲存、處理及管理。
WSI 通常是大型檔案,大小可達數 GB。這些檔案的格式各不相同,因此管理起來可能很困難。Cloud Healthcare API 可簡化 WSI 的儲存、分析及管理程序。
使用 DICOM 儲存全玻片影像
Cloud Healthcare API 提供代管服務,用於儲存 DICOM 影像。這項服務也支援儲存及擷取 WSI。如要進一步瞭解 Cloud Healthcare API 中的 DICOM,請參閱 DICOM。
使用 DICOM 的優點如下:
- 支援多個供應商和軟體。
- DICOM 是一種檔案格式,也是定義 DICOMweb 和 DIMSE API 的網路通訊協定。這些 API 可用於擷取及儲存 DICOM 執行個體,提供廣泛的功能,並簡化與圖片的互動。
將全玻片影像轉換為 DICOM 格式
大多數 WSI 掃描器不會從 WSI 原生產生 DICOM 檔案。因此,您必須手動將 WSI 轉換為 DICOM 檔案。
下列工具可將 WSI 轉換為 DICOM:
下一節說明如何使用 wsi2dcm 指令列工具產生 DICOM 檔案。
使用 wsi2dcm 指令列工具產生 DICOM 檔案
完成下列步驟前,請確認您有有效的 WSI 檔案。您可以從 OpenSlide 取得範例資料,也可以從數位病理學協會網站列出的其他資源取得。
執行 wsi2dcm 指令列工具:
wsi2dcm \ --input=INPUT_WSI \ --outFolder=PATH/TO/OUTPUT/FOLDER \ --seriesDescription=WSI_DESCRIPTION
其中:
- INPUT_WSI 是 WSI 檔案的路徑和名稱。
- PATH/TO/OUTPUT/FOLDER 是指工具輸出轉換後 DICOM 檔案的路徑。
- WSI_DESCRIPTION 是您為轉換後的 DICOM 檔案選擇的說明。
執行這項工具會從 WSI 產生多個 DICOM 檔案。DICOM 檔案的後置字串為 .dcm
。
將 DICOM 檔案上傳至 Cloud Healthcare API
如果尚未建立 DICOM 儲存庫,請立即建立。
您可以使用下列任一方法,將產生的 DICOM 檔案上傳至 DICOM 儲存庫:
擷取 DICOM 檔案及其中繼資料
將 DICOM 檔案上傳到 DICOM 儲存庫後,即可列出及查看 DICOM 影像的相關中繼資料。
列出整張投影片的圖片
每個 WSI 都是 DICOM 研究。如要列出 WSI,可以呼叫 dicomStores.searchForStudies
方法:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:DICOM 儲存庫的父項資料集
- DICOM_STORE_ID:DICOM 儲存庫 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
查看整張投影片圖片的中繼資料
每項研究都包含多個執行個體,而每個執行個體都包含 WSI 的部分圖塊。如要查看研究中執行個體的執行個體中繼資料,請呼叫 dicomStores.searchForInstances
方法:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:DICOM 儲存庫的父項資料集
- DICOM_STORE_ID:DICOM 儲存庫 ID
- STUDY_INSTANCE_UID:研究例項專屬 ID (UID)
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
查看整個投影片圖片方塊
每個執行個體通常包含多個影格。影格代表 WSI「金字塔」中特定縮放等級的 WSI 圖塊。如要以 JPEG 格式擷取單一影格,請呼叫 frames.retrieveRendered
方法:
curl
如要以 JPEG 格式擷取單一影格,請發出 GET
要求,並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫名稱
- 研究 UID
- 系列 UID
- 執行個體 UID
- 存取權杖
以下範例顯示如何使用 curl
發出 GET
要求。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: image/jpeg" \ --output FILENAME \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/0/rendered"
如果要求成功,系統會將 JPEG 檔案寫入您的電腦。
PowerShell
如要以 JPEG 格式擷取單一影格,請發出 GET
要求,並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫名稱
- 研究 UID
- 系列 UID
- 執行個體 UID
- 存取權杖
下列範例顯示如何使用 Windows PowerShell 提出 GET
要求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; "Accept" = "image/jpeg" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -OutFile FILENAME ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/0/rendered"
如果要求成功,系統會將 JPEG 檔案寫入您的電腦。
擷取所有整張投影片的圖片
如要擷取包含 WSI 的整個執行個體,請使用 instances.retrieveInstance
方法:
curl
如要擷取整個執行個體,請提出 GET
要求,並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫名稱
- 研究 UID
- 系列 UID
- 執行個體 UID
- 存取權杖
以下範例顯示如何使用 curl
發出 GET
要求。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/dicom" \ --output FILENAME \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"
如果要求成功,DICOM 檔案會寫入您的電腦。
PowerShell
如要擷取整個執行個體,請提出 GET
要求,並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫名稱
- 研究 UID
- 系列 UID
- 執行個體 UID
- 存取權杖
下列範例顯示如何使用 Windows PowerShell 提出 GET
要求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; "Accept" = "application/dicom" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -OutFile FILENAME ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"
如果要求成功,DICOM 檔案會寫入您的電腦。
使用整張投影片圖片檢視器查看投影片
前幾節說明如何查看 WSI 的中繼資料,以及擷取個別圖塊。如要查看整個 WSI,您必須使用 DICOMweb 支援的 WSI 檢視器。
下列檢視器與 Cloud Healthcare API 相容:
使用 DICOMweb WSI 檢視器查看轉換後的 WSI DICOM 檔案
完成下列各節,即可使用 DICOMweb WSI 檢視器查看轉換後的 WSI DICOM 檔案。
下載檢視器
下載 DICOMweb WSI 檢視器:
git clone https://github.com/GoogleCloudPlatform/dicomweb-wsi-viewer.git
取得用戶端密鑰
使用者存取應用程式時,用戶端密碼會驗證使用者身分。您將用戶端密鑰嵌入 DICOMweb WSI 檢視器的原始碼。如要取得用戶端密鑰,請完成下列步驟:
前往 Google Cloud 控制台的「憑證」頁面。
前往「憑證」頁面按一下「建立憑證」,然後選取「OAuth 用戶端 ID」。
在「Application type」(應用程式類型) 下方,選取 [Web application] (網頁應用程式)。
新增您選擇的名稱。
在「已授權的 JavaScript 來源」和「已授權的重新導向 URI」下方,輸入
http://localhost:8000
。按一下「建立」,然後在顯示的「OAuth 用戶端」視窗上按一下「確定」。複製用戶端 ID,以供下一節使用。
在檢視器中設定用戶端密鑰
使用上一節取得的用戶端 ID,完成下列步驟:
在
dicomweb-wsi-viewer
目錄中,開啟viewer.js
檔案。請替換下列程式碼行,使其包含您的用戶端 ID。
const CLIENT_ID = 'INSERT-YOUR-CLIENT-ID-HERE'
這行程式碼應如下列範例所示:
const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
儲存檔案。
設定 OAuth 同意畫面
如果您尚未設定 Google Cloud 專案的 OAuth 同意畫面,請完成下列步驟:
在「Support email」(支援電子郵件) 底下,選取您想顯示為公開聯絡人的電子郵件地址。這必須是您擁有的電子郵件地址或 Google 群組。
輸入您想顯示的「Application name」(應用程式名稱)。
按一下「新增範圍」。在隨即顯示的對話方塊中輸入
https://www.googleapis.com/auth/cloud-healthcare
,然後按一下「新增」。按一下 [儲存]。
如要稍後變更 OAuth 同意畫面上的資訊 (例如產品名稱或電子郵件地址),請重複上述步驟以設定同意畫面。
如果您已設定 Google Cloud 專案的 OAuth 同意畫面,請在「新增範圍」https://www.googleapis.com/auth/cloud-healthcare
對話方塊中新增 。
執行 DICOMweb WSI 檢視器
在
dicomweb-wsi-viewer
目錄中執行下列指令:python -m http.server 8000
在執行上一個指令的機器上,前往
https://localhost:8000
。在使用者介面中,按一下「Sign in/Authorize」(登入/授權),存取 OAuth 同意畫面,並授予檢視者存取 Google Cloud 專案和 Cloud Healthcare API 資源的權限。