平原往事小说
Python对DICOM图像进⾏阈值分割Python对Dicom图像进⾏处理,离不开pydicom,opencv-python,matplotlib,numpy四个代码库,安装完成这四个代码库后,可以读取Dicom图像,并对图像进⾏处理,显式处理后的结果,下⾯就举例说明: 密目式安全立网import cv2
import numpy
import dicom
from matplotlib import pyplot as plt
# 读取单张Dicom图像
dcm = ad_file("../Data/vhm.420.dcm")
dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept
slices = []
slices.append(dcm)列车运行时刻表
# 复制Dicom图像中的像素数据
克里人img = slices[ int(len(slices)/2) ].py()
# 对图像进⾏阈值分割
ret,img = cv2.threshold(img, 90,3071, cv2.THRESH_BINARY)
img = numpy.uint8(img)
# 提取分割结果中的轮廓,并填充孔洞
im2, contours, _ = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
mask = s(img.shape, numpy.uint8)
选址模型>网上数码冲印for contour in contours:
cv2.fillPoly(mask, [contour], 255)
img[(mask > 0)] = 255
# 对分割结果进⾏形态学的开操作
kernel = StructuringElement(cv2.MORPH_ELLIPSE,(2,2))
img = phologyEx(img, cv2.MORPH_OPEN, kernel)
# 根据分割mask获取分割结果的像素数据
img2 = slices[ int(len(slices)/2) ].py()
img2[(img == 0)] = -2000
# 显式原始数据,mask和分割结果
plt.figure(figsize=(12, 12))
plt.subplot(131)
plt.imshow(slices[int(len(slices) / 2)].image, 'gray')
plt.title('Original')
plt.subplot(132)
plt.imshow(img, 'gray')
plt.title('Mask')
plt.subplot(133)
plt.imshow(img2, 'gray')
plt.title('Result')
plt.show()
运⾏后的结果:
本例⼦以单张Dicom图像为例,分割图像中的⾻骼信息,也可以同时读取多张Dicom图像,分割其他组织器官。