python - 使用 cv2 进行医学图像分割

标签 python image opencv image-processing

我使用的是乳腺癌乳腺 X 线摄影图片的 MIAS 数据集。数据可在此处获得: http://peipa.essex.ac.uk/pix/mias/

例如,一张图片看起来是这样的:

import cv2
import numpy as np

img = cv2.imread("mdb168.pgm",0)

import matplotlib.pyplot as plt

plt.imshow(img, cmap="gray")

enter image description here

我想删除图像的所有伪像和不必要的部分。

为此,我首先将图像二值化

ret,thresh1 = cv2.threshold(img,0,255,cv2.THRESH_BINARY)
plt.imshow(thresh1, cmap="gray")

enter image description here

使用开口

kernel = np.ones((20,20),np.uint8)
opening = cv2.morphologyEx(thresh1, cv2.MORPH_OPEN, kernel)
plt.imshow(opening, cmap="gray")

enter image description here

然后侵 eclipse

kernel = np.ones((120,120),np.uint8)
erosion = cv2.erode(opening,kernel,iterations = 1)
plt.imshow(erosion, cmap="gray")

enter image description here

然后将这个 mask 与原始图像合并

merged = cv2.bitwise_and(img, img , mask=erosion)
plt.imshow(merged, cmap="gray")

enter image description here

我现在正尝试切除左上区域的胸肌。 在本出版物中:https://www.ncbi.nlm.nih.gov/pubmed/26742491 他们使用完全相同的数据集,并通过“种子区域增长”来做到这一点。 但是,没有提供代码,我在 opencv 中找不到它。

我可以通过再次进行扩张/侵 eclipse 等来获得类似的结果,但我正在寻找一种更通用的解决方案。 此外,其中一些图像没有显示肌肉,这也应该被检测到。

最佳答案

我会使用以下方法:

  1. (可选)我将通过重建 <=> 侵 eclipse 然后测地线扩张用开口替换开口和侵 eclipse 。它将保留原始形状,然后您将保持更大的投资返回率。
  2. 卷积滤波器(高斯或简单平均)来平滑图像
  3. 白色大礼帽,用于检测亮区。
  4. 然后将顶帽结果减去原始图像。

关于python - 使用 cv2 进行医学图像分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42297665/

相关文章:

python - tkinter 包或网格或放置错误

python - 为什么 Python ITK PyBuffer 不接受我的 numpy 数组?

java - 算法,图像处理,洪水填充

python - 如何卸载所有 python 软件包?

opencv - 如何在 stereoCalibrate() 方法中使用 objectPoints 参数,opencv 3.0

android - Tensorflow 中的 'Const Op' 是什么?

python - 如果我使用 [LOGLEVEL],如何向 python 标准记录器添加对齐方式?

image - VB6可以将图像保存为JPEG吗?

image - JavaFX显示场景背景图片

sorting - 我想使用轮廓检测​​对从图像中提取的单词按出现的顺序进行排序