圖像分割filters對圖像進(jìn)行處理,將其分割成有意義的區域,通常輸出一個(gè)整數圖像,其中每個(gè)整數代表一個(gè)目標,值0通常表示背景,1或255表示前景對象。
img_T1 = sitk.ReadImage(fdata("nac-hncma-atlas2013-Slicer4Version/Data/A1_grayT1.nrrd"))img_T2 = sitk.ReadImage(fdata("nac-hncma-atlas2013-Slicer4Version/Data/A1_grayT2.nrrd"))# 為了可視化圖像,將圖像轉化為0到255img_T1_255 = sitk.Cast(sitk.RescaleIntensity(img_T1), sitk.sitkUInt8)img_T2_255 = sitk.Cast(sitk.RescaleIntensity(img_T2), sitk.sitkUInt8)1234567閾值分割是最基本的分割方式,它只是簡(jiǎn)單地基于灰度范圍標記圖像地像素,而不考慮幾何或連通性。
Itk 有許多基于直方圖的自動(dòng)閾值過(guò)濾器,包括 Huang,maximiumentropy,Triangle,和流行的 Otsu 方法。 這些方法創(chuàng )建直方圖,然后使用啟發(fā)式方法確定閾值。
otsu_filter = sitk.OtsuThresholdImageFilter()otsu_filter.SetInsideValue(0)otsu_filter.SetOutsideValue(1)seg = otsu_filter.Execute(img_T1)myshow(sitk.LabelOverlay(img_T1_255, seg), "Otsu Thresholding")otsu_filter.GetThreshold()123456
區域增長(cháng)分割
seg = sitk.ConfidenceConnected(img_T1, seedList=[seed], numberOfIterations=1, multiplier=2.5, initialNeighborhoodRadius=1, replaceValue=1)myshow(sitk.LabelOverlay(img_T1_255, seg), "ConfidenceConnected")1234567
快速步進(jìn)算法
快速步進(jìn)算法實(shí)現了對簡(jiǎn)單水平集進(jìn)化問(wèn)題地解決算法,在這個(gè)例子中,微分方程中使用地速度參數是以圖像地形式來(lái)提供地。速度圖像是基于梯度的大小,并用有界倒數1/(1+x)來(lái)映射。
seed = (132,142,96)feature_img = sitk.GradientMagnitudeRecursiveGaussian(img_T1, sigma=.5)speed_img = sitk.BoundedReciprocal(feature_img) # 不想sigma函數不需要參數myshow(speed_img)1234
Fastmarchingmagefilter的輸出是一個(gè)跨時(shí)間的映射,它表示對于每個(gè)像素,前端到達該像素點(diǎn)需要花費多少時(shí)間。
fm_filter = sitk.FastMarchingBaseImageFilter()fm_filter.SetTrialPoints([seed])fm_filter.SetStoppingValue(1000)fm_img = fm_filter.Execute(speed_img)myshow(sitk.Threshold(fm_img, lower=0.0, upper=fm_filter.GetStoppingValue(), outsideValue=fm_filter.GetStoppingValue()+1))




