** Mia Nanasawa is cute, isn't she? ** **
"that?" "It's different than usual. It's strange ..."
If you zoom in ...
Is there something ** like sesame salt with black and white dots ** mixed in?
This doesn't allow you to focus on your cute face.
** Smooth ** and ** remove black and white dots **!
** Blur the image **. OpenCV provides four types of blurring methods (filters).
―― 1: Moving average filter (averaging filter)
-2: Gaussian filter
―― 3: Median filter
―― 4: Bilateral filter
【Caution】 -"Brightness" is simply a desaturation of a color. -"Brightness" takes into account the difference in brightness depending on the color.
** ex) For blue (R: 0 G: 0 B: 255) **
#blur means "blurring".
img = cv2.imread("nana.jpg ")#Load image file with openCV
img_blur = cv2.blur(img, (3, 3))#First argument=Image file,Second argument=Filter width,Vertical width
imgs = cv2.hconcat([img, img_blur])#Connect images of equal height horizontally
cv2.imwrite("nana1.jpg ",imgs)#Save image file with openCV
☚ The left figure is the original image ☛ The right figure is the image with ** averaging filter **
The noise on the right is blurred. It seems difficult to erase it completely. ..
img1 = cv2.blur(img, (1, 1))
img2 = cv2.blur(img, (2, 2))
img3 = cv2.blur(img, (3, 3))
img4 = cv2.blur(img, (4, 4))
img5 = cv2.blur(img, (5, 5))
img6 = cv2.blur(img, (6, 6))
imgs_1 = cv2.hconcat([img1, img2, img3])
imgs_2 = cv2.hconcat([img4, img5, img6])
imgs = cv2.vconcat([imgs_1, imgs_2])#Vertically concatenate images of equal width
cv2.imwrite("nana2.jpg ", imgs)
From the upper left, the image will have the filter size increased. You can see that the blurring of the image is ** stronger and stronger **. ** The photo on the bottom right is now able to concentrate on Mia-chan without worrying about white sesame seeds! !! ** **
Calculated weights in the filter according to ** Gaussian distribution **.
** [Difference from averaging filter] ** The ** replacement value ** is to be replaced so that the pixel of interest in the center ** has the largest weight ** and the outer pixel has the smaller weight **. This characteristic makes it possible to blur the image ** while leaving more information around the pixels.
img_gauss = cv2.GaussianBlur(img, (3, 3), 3)#The third argument is the Gaussian function σ
imgs = cv2.hconcat([img, img_gauss])
cv2.imwrite("nana3.jpg ", imgs)
☚ The left figure is the original image ☛ The right figure is the image with ** Gaussian filter (σ = 3) **
It's not much different from the ** 1 averaging filter **
The ** median ** extracted from the pixels contained in the specified filter and replaced.
** [Difference from averaging filter] ** The ** replacement value ** is not the averaged pixel value, but the ** always existing ** pixel value is used.
img_med = cv2.medianBlur(img, 3)
imgs = cv2.hconcat([img, img_med])
cv2.imwrite("nana4.jpg ", imgs)
☚ The left figure is the original image ☛ The right figure is the image with ** median filter **
** Wow ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ** ** Sesame salt is gone ** ** I'm the cutest Mia ever! !! ** **
** Other than edges ** are Gaussian filters. The Gaussian filter is performed by setting the weight to "0" in the portion where the brightness difference is large.
→
** [Differences from conventional smoothing filters] ** ** Being able to blur the image while leaving the edges **
img_bi = cv2.bilateralFilter(img, 9, 75, 75)
imgs = cv2.hconcat([img, img_bi])
cv2.imwrite("nana5.jpg ", imgs)
☚ The left figure is the original image ☛ The right figure is the image with ** bilateral filter **
Since the salt and pepper this time was a clear noise, it turned out that it was best to apply a ** median filter **.
I also felt that ** bilateral filter ** would be suitable if ** noise saturation ** is close to ** original data ** noise.
If you find noise in your favorite images, filter them!
Recommended Posts