def augment_images_intensity(image_list, output_prefix, output_suffix): ''' Generate intensity modified images from the originals. Args: image_list (iterable containing SimpleITK images): The images which we whose intensities we modify. output_prefix (string): output file name prefix (file name: output_prefixi_FilterName.output_suffix). output_suffix (string): output file name suffix (file name: output_prefixi_FilterName.output_suffix). Example in use: intensity_augmened_image = augment_images_intensity(data, os.path.join(OUTPUT_DIR, 'intensity_aug'), 'mha') ''' # Create a list of intensity modifying filters, which we apply to the given images filter_list = [] # Smoothing filters filter_list.append(sitk.SmoothingRecursiveGaussianImageFilter()) filter_list[-1].SetSigma(2.0) filter_list.append(sitk.DiscreteGaussianImageFilter()) filter_list[-1].SetVariance(4.0) filter_list.append(sitk.BilateralImageFilter()) filter_list[-1].SetDomainSigma(4.0) filter_list[-1].SetRangeSigma(8.0) filter_list.append(sitk.MedianImageFilter()) filter_list[-1].SetRadius(8) # Noise filters using default settings # Filter control via SetMean, SetStandardDeviation. filter_list.append(sitk.AdditiveGaussianNoiseImageFilter()) # Filter control via SetProbability filter_list.append(sitk.SaltAndPepperNoiseImageFilter()) # Filter control via SetScale filter_list.append(sitk.ShotNoiseImageFilter()) # Filter control via SetStandardDeviation filter_list.append(sitk.SpeckleNoiseImageFilter()) filter_list.append(sitk.AdaptiveHistogramEqualizationImageFilter()) filter_list[-1].SetAlpha(1.0) filter_list[-1].SetBeta(0.0) filter_list.append(sitk.AdaptiveHistogramEqualizationImageFilter()) filter_list[-1].SetAlpha(0.0) filter_list[-1].SetBeta(1.0) aug_image_lists = [] # Used only for display purposes in this notebook. for i, img in enumerate(image_list): aug_image_lists.append([f.Execute(img) for f in filter_list]) for aug_image, f in zip(aug_image_lists[-1], filter_list): sitk.WriteImage( aug_image, output_prefix + str(i) + '_' + f.GetName() + '.' + output_suffix) return aug_image_lists
def data_augumentation_noise(img_3d): # Create a list of intensity modifying filters, which we apply to the given images filter_list = [] # Smoothing filters filter_list.append(sitk.SmoothingRecursiveGaussianImageFilter()) filter_list[-1].SetSigma(2.0) filter_list.append(sitk.DiscreteGaussianImageFilter()) filter_list[-1].SetVariance(4.0) filter_list.append(sitk.BilateralImageFilter()) filter_list[-1].SetDomainSigma(4.0) filter_list[-1].SetRangeSigma(8.0) filter_list.append(sitk.MedianImageFilter()) filter_list[-1].SetRadius(8) # Noise filters using default settings # Filter control via SetMean, SetStandardDeviation. filter_list.append(sitk.AdditiveGaussianNoiseImageFilter()) filter_list[-1].SetMean(0.2) filter_list[-1].SetStandardDeviation(0.7) # Filter control via SetProbability filter_list.append(sitk.SaltAndPepperNoiseImageFilter()) # Filter control via SetScale filter_list.append(sitk.ShotNoiseImageFilter()) # Filter control via SetStandardDeviation filter_list.append(sitk.SpeckleNoiseImageFilter()) filter_list.append(sitk.AdaptiveHistogramEqualizationImageFilter()) filter_list[-1].SetAlpha(1.0) filter_list[-1].SetBeta(0.0) filter_list.append(sitk.AdaptiveHistogramEqualizationImageFilter()) filter_list[-1].SetAlpha(0.0) filter_list[-1].SetBeta(1.0) aug_image_lists = [] # Used only for display purposes in this notebook. f = filter_list[4] aug_image = f.Execute(img_3d) return aug_image
def histogram_equalize(image, radius=(1, 1, 1), alpha=0.6, beta=0.3): if isinstance(image, (np.ndarray)): image = sitk.GetImageFromArray(image) filter = sitk.AdaptiveHistogramEqualizationImageFilter() heq = sitk.AdaptiveHistogramEqualization(image, radius, alpha=alpha, beta=beta) # mean = sitk.Mean(heq,(1,1)) return sitk.GetArrayFromImage(heq)
def aeh(image, tup=tuple): #Standard Implementation: aeh(image,0.9,0.6.255,0) adapt = sitk.AdaptiveHistogramEqualizationImageFilter() adapt.SetAlpha(tup[0]) adapt.SetBeta(tup[1]) image = adapt.Execute(image) # set mean and std deviation normalizeFilter = sitk.NormalizeImageFilter() resacleFilter = sitk.RescaleIntensityImageFilter() resacleFilter.SetOutputMaximum(tup[2]) resacleFilter.SetOutputMinimum(tup[3]) image = resacleFilter.Execute(image) # set intensity 0-255 image = normalizeFilter.Execute(image) # set mean and std deviation return image
def __call__(self, sample): adapt = sitk.AdaptiveHistogramEqualizationImageFilter() adapt.SetAlpha(0.7) adapt.SetBeta(0.8) image = adapt.Execute(sample['image']) # set mean and std deviation resacleFilter = sitk.RescaleIntensityImageFilter() resacleFilter.SetOutputMaximum(255) resacleFilter.SetOutputMinimum(0) image = resacleFilter.Execute(image) # set mean and std deviation label = sample['label'] return {'image': image, 'label': label}
def adapt_eq_histogram(image): adapt = sitk.AdaptiveHistogramEqualizationImageFilter() adapt.SetAlpha(0.9) adapt.SetBeta(0.6) image = adapt.Execute(image) # set mean and std deviation normalizeFilter = sitk.NormalizeImageFilter() resacleFilter = sitk.RescaleIntensityImageFilter() resacleFilter.SetOutputMaximum(255) resacleFilter.SetOutputMinimum(0) image = normalizeFilter.Execute(image) # set mean and std deviation image = resacleFilter.Execute(image) # set intensity 0-255 return image
def aeh(image,alpha,beta,outMax,outMin): #Standard Implementation: aeh(image,0.9,0.6.255,0) adapt = sitk.AdaptiveHistogramEqualizationImageFilter() adapt.SetAlpha(alpha) adapt.SetBeta(beta) image = adapt.Execute(image) # set mean and std deviation normalizeFilter = sitk.NormalizeImageFilter() resacleFilter = sitk.RescaleIntensityImageFilter() resacleFilter.SetOutputMaximum(255) resacleFilter.SetOutputMinimum(0) image = normalizeFilter.Execute(image) # set mean and std deviation image = resacleFilter.Execute(image) # set intensity 0-255 return image
arrCleaned = arr1 * arr2 return sitk.GetImageFromArray(arrCleaned) def findBladderCenter(image, edgeImage, borderImage): image = sitk.GetArrayFromImage(image) edgeImage = sitk.GetArrayFromImage(edgeImage) borderImage = sitk.GetArrayFromImage(borderImage) == 0 #since borderImage tLarge has the inside of the area marked 1, the outside 0, we take the negative out = image + edgeImage out = out + (borderImage * 255) return sitk.GetImageFromArray(out) #%% aehFilter = sitk.AdaptiveHistogramEqualizationImageFilter() aehFilter.SetAlpha(1.3) aehFilter.SetBeta(1) aehFilter.SetRadius(5) aehImg = aehFilter.Execute(imgResult) arrAeh = sitk.GetArrayFromImage(aehImg) arrAehCleaned = arrAeh * arrExcl imgAehCleaned = sitk.GetImageFromArray(arrAehCleaned) #plotSlices(imgAehCleaned,'sagittal') #%% gaussian.SetSigma(3) imOut = gaussian.Execute(imgAehCleaned) #plotSlices(imOut,'sagittal') #%%Array Magic statF2 = sitk.StatisticsImageFilter()