基于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 plt

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')

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)

上一篇:java使用正则表达式


下一篇:UDP广播