我使用的是乳腺癌乳腺 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")
我想删除图像的所有伪像和不必要的部分。
为此,我首先将图像二值化
ret,thresh1 = cv2.threshold(img,0,255,cv2.THRESH_BINARY)
plt.imshow(thresh1, cmap="gray")
使用开口
kernel = np.ones((20,20),np.uint8)
opening = cv2.morphologyEx(thresh1, cv2.MORPH_OPEN, kernel)
plt.imshow(opening, cmap="gray")
然后侵 eclipse
kernel = np.ones((120,120),np.uint8)
erosion = cv2.erode(opening,kernel,iterations = 1)
plt.imshow(erosion, cmap="gray")
然后将这个 mask 与原始图像合并
merged = cv2.bitwise_and(img, img , mask=erosion)
plt.imshow(merged, cmap="gray")
我现在正尝试切除左上区域的胸肌。 在本出版物中:https://www.ncbi.nlm.nih.gov/pubmed/26742491 他们使用完全相同的数据集,并通过“种子区域增长”来做到这一点。 但是,没有提供代码,我在 opencv 中找不到它。
我可以通过再次进行扩张/侵 eclipse 等来获得类似的结果,但我正在寻找一种更通用的解决方案。 此外,其中一些图像没有显示肌肉,这也应该被检测到。
最佳答案
我会使用以下方法:
- (可选)我将通过重建 <=> 侵 eclipse 然后测地线扩张用开口替换开口和侵 eclipse 。它将保留原始形状,然后您将保持更大的投资返回率。
- 卷积滤波器(高斯或简单平均)来平滑图像
- 白色大礼帽,用于检测亮区。
- 然后将顶帽结果减去原始图像。
关于python - 使用 cv2 进行医学图像分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42297665/