醫學影像有效部分的提取

2021-08-28 11:25:27 字數 3041 閱讀 3732

匯入需要用的模組

import ******itk

from scipy import ndimage as ndi

from skimage.segmentation import clear_border

from skimage.measure import label, regionprops

from skimage.morphology import disk, dilation, binary_erosion, binary_closing

from skimage.filters import roberts, sobel

import cv2

影象中很多不是我們需要的區域,需要對影象中的有效區域進行提取,大致的思路是先轉化成二值影象,清除影象邊界的小塊區域,分割影象,保留2個最大的連通區域,影象腐蝕操作,影象閉環操作,將肺區小孔進行填充,二值化影象疊加到輸出影象

def

get_pixels_hu_by_******itk

(dicom_dir)

:'''

讀取某資料夾內的所有dicom檔案,並提取畫素值(-4000 ~ 4000)

:param src_dir: dicom資料夾路徑

:return: image array

'''reader = ******itk.imageseriesreader(

) dicom_names = reader.getgdcmseriesfilenames(dicom_dir)

reader.setfilenames(dicom_names)

image = reader.execute(

) img_array = ******itk.getarrayfromimage(image)

img_array[img_array ==

-2000]=

0return img_array

defnormalize_hu

(image)

:'''

將輸入影象的畫素值(-4000 ~ 4000)歸一化到0~1之間

:param image 輸入的影象陣列

:return: 歸一化處理後的影象陣列

'''min_bound =

-1000.0

max_bound =

400.0

image =

(image - min_bound)

/(max_bound - min_bound)

image[image >1]

=1. image[image <0]

=0.return image

defget_segmented_lungs

(im)

:'''

對輸入的影象進行肺部區域分割,提取有效的肺部區域,用於模型訓練

:param 輸入的影象

:return: 返回分割結果

'''# step 1: 轉換為二值化影象

binary = im <

-400

# step 2: 清除影象邊界的小塊區域

cleared = clear_border(binary)

# step 3: 分割影象

label_image = label(cleared)

# step 4: 保留2個最大的連通區域

areas =

[r.area for r in regionprops(label_image)

] areas.sort()if

len(areas)

>2:

for region in regionprops(label_image)

:if region.area < areas[-2

]:for coordinates in region.coords:

label_image[coordinates[0]

, coordinates[1]

]=0 binary = label_image >

0# step 5: 影象腐蝕操作,將結節與血管剝離

selem = disk(2)

binary = binary_erosion(binary, selem)

# step 6: 影象閉環操作,保留貼近肺壁的結節

selem = disk(10)

binary = binary_closing(binary, selem)

# step 7: 進一步將肺區殘餘小孔區域填充

edges = roberts(binary)

binary = ndi.binary_fill_holes(edges)

# step 8: 將二值化影象疊加到輸入影象上

get_high_vals = binary ==

0 im[get_high_vals]=-

2000

print

('lung segmentation complete.'

)return im, binary

if __name__ ==

'__main__'

: dicom_dir =

'./data/dicom_demo/'

# 提取dicom檔案中的畫素值

image = get_pixels_hu_by_******itk(dicom_dir)

im, binary = get_segmented_lungs(image[

133]

) org_img = normalize_hu(image[

133]

) cv2.imwrite(

'./temp_dir/chapter3_segmentation_im.png'

, org_img*

255)

cv2.imwrite(

'./temp_dir/chapter3_segmentation_binary.png'

, binary*

255)

SCI 收錄醫學影像學期刊分析

放射學 radiology 影像學 neuroimage 超聲學 ultrasound in obstetrics and gynecology 核醫學 journal of nuclear medicine 其中影像學著名期刊如下,其他方向請參照 1 期刊名稱期 年出版國08影響因子 neuroi...

AI 醫學影像的現狀 機遇與挑戰

王立威 有三個領域會與深度學習進行緊密的結合 乙個是無人駕駛 乙個是金融領域 再乙個則是醫學領域。無人駕駛在計算機視覺的識別技術已經趨於成熟,具備可以與機器學習進行深入結合的條件,但作為乙個與汽車實體緊密相關的應用方向,在高校內做研究的空間相對受限 此外,駕駛作為一種動態活動,相對於靜態影象識別的難...

FDA首次批准iPad成為醫學影像診斷輔助產品

美國食品和藥物管理局已經首次批准了蘋果ipad iphone作為醫療影像診斷放射學的輔助產品使用,之前,該應用榮獲蘋果 最佳iphone醫療保健及健身應用 設計獎。fda表示,該程式可以再沒有醫療工作站時替代使用,但並非要取代工作站裝置。fda中心器械首席醫學專家威廉梅塞爾博士還認為,ipad重要的...