去除黑白图像中的噪声

Remove noise in BW image

我使用 MATLAB 生成此图像(使用 bwareaopen)。在中间我有一个二维椭圆体。我怎样才能清除它周围的所有 "noise" 并得到一个清晰的椭圆体?

原图

看看这个解决方案。正如评论中提到的,我使用了 DoG - 高斯差异

DoG 是什么意思?

首先,您必须对具有两个独立核的图像进行两个独立的高斯分布。 (我所说的高斯是指应用高斯模糊)。两者之差称为DoG.

这是我所做的:

  • 将给定的 umage 转换为 灰度:

  • 然后我应用双边过滤来保留边缘并平滑non-edges:

(仔细看就能看出区别)

  • 对上图应用高斯模糊

  • 现在对上面两张图进行DoG得到:(我只是把上面两张图相减)

  • 然后我使用椭圆核进行了形态学操作来增强细胞的边缘:

  • 为了去除图像周围不需要的斑点,我执行了中值滤波,最终得到了这个:

您可以优化此过程以获得增强图像。

编辑:

这是我使用的代码:

import cv2

filename = 'Cell.jpg'
img = cv2.imread(filename)
cv2.imwrite('img.jpg',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imwrite('gray.jpg',gray)

bi = cv2.bilateralFilter(gray,7,75,75)
cv2.imwrite('bi.jpg',bi)
blur = cv2.GaussianBlur(bi,(3,3),0)
cv2.imwrite('blur.jpg',blur)
blur1 = cv2.GaussianBlur(bi,(17,17),0)
dog = blur1 - bi
cv2.imwrite('DoG.jpg',dog)

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
close = cv2.morphologyEx(dog, cv2.MORPH_CLOSE, kernel, 13)
cv2.imwrite('close.jpg',close)

median = cv2.medianBlur(close,3)
cv2.imwrite('median.jpg',median)

cv2.waitKey(0)
cv2.destroyAllWindows()