【发布时间】:2016-08-11 05:35:06
【问题描述】:
我正在尝试从图像中提取血管,为此,我首先对图像进行均衡化,应用 CLAHE 直方图获得以下结果:
clahe = cv2.createCLAHE(clipLimit=100.0, tileGridSize=(100,100))
self.cl1 = clahe.apply(self.result_array)
self.cl1 = 255 - self.cl1
然后我正在使用 OTSU 阈值来提取血管,但做得不好:
self.ret, self.thresh = cv2.threshold(self.cl1, 0,255,cv2.THRESH_BINARY + cv2.THRESH_OTSU)
kernel = np.ones((1,1),np.float32)/1
self.thresh = cv2.erode(self.thresh, kernel, iterations=3)
self.thresh = cv2.dilate(self.thresh, kernel, iterations=3)
结果如下:
显然有很多噪音。我尝试过使用中值模糊,但它只是在某些地方将噪声聚集并使其变成一个斑点。如何去除噪音以获取血管?
这是我试图从中提取血管的原始图像:
【问题讨论】:
-
请附上原始图像和预期输出。
-
我没有想要的输出,抱歉。我已附上原件。
-
您会尝试将 tileGridSize=(8,8) 设置为更类似于 (20,20) 的值吗?我认为euqlizing有点过于激进。它不会完全解决问题,但可能会带来更好的结果。
-
是的,我已经尝试过了,你是对的,它确实改善了结果,但没有多大意义。
-
哦,好吧。我不熟悉 OpenCV,我可以解释一下我将如何尝试解决它。第 1 步:创建每个像素周围的噪声级别图。第二步:计算中值噪声。第 3 步:对于每个像素,将原始图像的亮度乘以噪声水平(来自地图第 1 步)减去中值+阈值。
标签: python image opencv image-processing