医学图像预处理(四)—— 提取包含目标的切片(比如仅提取包含肿瘤或肝脏的切片)

在训练网络时,一般目标区域越有针对性效果越好,因此经常会在训练前对数据进行预处理,提取出包含有目标的那些切片。
下面是示例代码(原始数据是3D ct images)

简单的方法:

def getRangImageDepth(image):
	"""
	args:
	image ndarray of shape (depth, height, weight)
	"""
	# 得到轴向上出现过目标(label>=1)的切片
    z = np.any(image, axis=(1,2)) # z.shape:(depth,)
    startposition,endposition = np.where(z)[0][[0,-1]]
    return startposition, endposition

稍微复杂点的写法:

def getRangImageDepth(image):
	"""
	args:
	image ndarray of shape (depth, height, weight)
	"""
	firstflag = True
	startposition = 0
	endposition = 0
	for z in range(image.shape[0]):
		notzeroflag = np.max(image[z])
		if notzeroflag and firstflag:
			startposition = z
			firstflag = False
		if notzeroflag:
			endposition = z
    return startposition, endposition

看到一个论文里是这样处理的,但还没有实验过,不知道效果怎么样

We trained CNNs using image patches centered at each pixel. These patches were divided into tumor and normal liver tissue. A given patch is labeled as positive sample if it contains at least 50% or more of liver tumor pixels, otherwise it is labeled as negative sample. In consideration of the training time and the balance of training samples, we randomly sampled the same number of negative samples as much as the positive samples.
——《Automatic Segmentation of Liver Tumor in CT Images with Deep Convolutional Neural Networks》

猜你喜欢

转载自blog.csdn.net/normol/article/details/88316422
今日推荐