本文主要是介绍基于OpenCV对胸部CT图像的预处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 . 传作灵感
胸部CT中所包含的噪声比较多,基于OpenCV简单的做一些处理,降低后续模型训练的难度。
2. 图像的合成
在语义分割任务中有的时候需要将原图(imput)和标注数据(groudtruth)合成一幅图像,观察图像分割的效果,涉及的代码如下:
import matplotlib.pyplot as plt
import os
import pandas as pd
from scipy.ndimage.interpolation import zoom
from PIL import Image
from matplotlib import image
import matplotlib.pyplot as pltimg=Image.open('dataset/train_image/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg',)
mask= Image.open('dataset/train_mask/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg')plt.subplot(2, 2, 1)
plt.imshow(img,cmap='bone')
plt.subplot(2, 2, 2)
plt.imshow(mask,cmap='bone')
# 图像融合显示
plt.subplot(2, 2, 3)
#原图以0.6的比例加入,mask以0.4的比例加入
plt.imshow(img, alpha=0.6,cmap='bone')
plt.imshow(mask, alpha=0.4,cmap='gray')
plt.show()
合成的效果如图所示:
还有一种方法使用Image.blend(img, mask, 0.5)函数,具体代码如下:
img=Image.open('dataset/train_image/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg',)
mask= Image.open('dataset/train_mask/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg')
#
img = img.convert('L')
mask = mask.convert('L')img.show()
mask.show()con = Image.blend(img, mask, 0.5)
con.show()
合成的效果如下:
3. 高斯滤波
img =cv.imread('dataset/train_image/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg', cv.IMREAD_GRAYSCALE)
mask = cv.imread('dataset/train_mask/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_66.jpg', cv.IMREAD_GRAYSCALE)
cv.imshow("img",img)
# 高斯滤波
img_Gauss=cv.GaussianBlur(img,(7,7),0,0)
dst2 = cv.GaussianBlur(img, (9, 9), 0, 0)
cv.imshow("img_Gauss", img_Gauss)
效果如下:
3.中值滤波
img_median = cv.medianBlur(img,5)
cv.imshow("img_median", img_median)
4.适应阈值滤波
#自适应阈值滤波
t2,img_ostu = cv.threshold(img_median, 0,255, cv.THRESH_OTSU)
t2,img_ostu = cv.threshold(img_median, 0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
cv.imshow("img_ostu", img_ostu)
这篇关于基于OpenCV对胸部CT图像的预处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!