失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java如何去除噪点 消除黑白图像中的噪点

java如何去除噪点 消除黑白图像中的噪点

时间:2021-02-09 13:57:02

相关推荐

java如何去除噪点 消除黑白图像中的噪点

I used MATLAB to generate this image (using bwareaopen). In the middle I have a 2D ellipsoid. How can I clear all the "noise" surrounding of it and get a clear ellipsoid?

original image

解决方案

Have a look at this solution. As mentioned in the comments I used DoG - Difference of Gaussians

What does DoG mean ?

First you have to take two separate Gaussians of an image with two separate kernels. (By Gaussian I mean apply ing gaussian blur). The difference of the two resultants is called the DoG.

This is what I did:

Converted the given umage to gray scale:

Then I applied bilateral filtering to preserve edges and smoothen non-edges:

(If you look intently you can see the difference).

Applied Gaussian blur to the above image:

Now performed DoG with the above two images to obtain this: (I merely subtracted the two images above)

Then I performed Morphological operation using the ellipse kernel to enhance the edge of the cell:

To remove the unwanted speckles around the image I performed median filtering and finally obtained this:

You can refine this process to get an enhance image .

EDIT:

Here is the code I used:

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

如果觉得《java如何去除噪点 消除黑白图像中的噪点》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。