在BW图像去除噪声(Remove noise in BW image)

2019-09-29 20:13发布

我用MATLAB生成该图像(使用bwareaopen )。 在中间我有一个2D椭圆形。 如何清除所有的“噪音”的它周围,并得到清晰的椭圆形?

原始图像

Answer 1:

看看这个解决方案。 正如在评论中提到我用狗-高斯差分

什么是狗呢?

首先,你要拍摄图像的两个独立的高斯两个独立的内核。 (高斯我的意思是申请荷兰国际集团高斯模糊 )。 两个生成物的差异被称为

这是我做的:

  • 转换给定umage 灰阶

  • 然后,我申请双边滤波保持边缘,理顺非边缘:

(如果你专注地看你可以看到其中的差别)。

  • 施加高斯模糊上述图像:

  • 现在进行与上述两个图像,以获得这样的:(I仅仅减去上述两个图像)

  • 然后,我使用椭圆内核以增强小区的边缘进行形态学运算

  • 要删除我进行中值滤波 ,最终获得的本图像周围的不想要的斑点:

您可以完善这一过程中得到了提高图像。

编辑:

下面是我使用的代码:

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


文章来源: Remove noise in BW image