1.bilateral filter
Bilateral filter is a simple, non-iterative scheme for edge-preserving smoothing.
detail:Bilateral Filtering
Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst
- Sigma values: For simplicity, you can set the 2 sigma values to be the same. If they are small (< 10), the filter will not have much effect, whereas if they are large (> 150), they will have a very strong effect, making the image look “cartoonish”.
- Filter size: Large filters (d > 5) are very slow, so it is recommended to use d=5 for real-time applications, and perhaps d=9 for offline applications that need heavy noise filtering.
01 from cv2 import *
02
03 im_kitten_orig = imread("kitten-orig.jpg")
04 im_face_orig = imread("face-orig.jpg")
05
06 im_kitten_bilfilter = bilateralFilter(im_kitten_orig, 7, 100, 100)
07 im_face_bilfilter = bilateralFilter(im_face_orig, 7, 100, 100)
08
09 imwrite("face-bilfilter.jpg", im_face_bilfilter)
10 imwrite("kitten-bilfilter.jpg", im_kitten_bilfilter)
11
12 namedWindow("kitten-orig", 1)
13 namedWindow("kitten-bilfilter", 1)
14 imshow("kitten-orig", im_kitten_orig)
15 imshow("kitten-bilfilter", im_kitten_bilfilter)
16
17 namedWindow("face-orig", 1)
18 namedWindow("face-bilfilter", 1)
19 imshow("face-orig", im_face_orig)
20 imshow("face-bilfilter", im_face_bilfilter)
21 waitKey()
02
03 im_kitten_orig = imread("kitten-orig.jpg")
04 im_face_orig = imread("face-orig.jpg")
05
06 im_kitten_bilfilter = bilateralFilter(im_kitten_orig, 7, 100, 100)
07 im_face_bilfilter = bilateralFilter(im_face_orig, 7, 100, 100)
08
09 imwrite("face-bilfilter.jpg", im_face_bilfilter)
10 imwrite("kitten-bilfilter.jpg", im_kitten_bilfilter)
11
12 namedWindow("kitten-orig", 1)
13 namedWindow("kitten-bilfilter", 1)
14 imshow("kitten-orig", im_kitten_orig)
15 imshow("kitten-bilfilter", im_kitten_bilfilter)
16
17 namedWindow("face-orig", 1)
18 namedWindow("face-bilfilter", 1)
19 imshow("face-orig", im_face_orig)
20 imshow("face-bilfilter", im_face_bilfilter)
21 waitKey()
![]() |
| kitten-orig |
![]() |
| kitten-bilfilter |
![]() |
| face-orig |
![]() |
| face-bilfilter |
2.blur
Blurs an image using the normalized box filterPython: cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst
- ksize: blurring kernal size (tuple)
01 from cv2 import *
02
03 im_face_orig = imread("face-orig.jpg")
04 im_face_blur = blur(im_face_orig, (5, 5))
05 imwrite("face-blur.jpg", im_face_blur)
06
07 namedWindow("face-orig", 1)
08 imshow("face-orig", im_face_orig)
09 namedWindow("face-blur", 1)
10 imshow("face-blur", im_face_blur)
11 waitKey()
02
03 im_face_orig = imread("face-orig.jpg")
04 im_face_blur = blur(im_face_orig, (5, 5))
05 imwrite("face-blur.jpg", im_face_blur)
06
07 namedWindow("face-orig", 1)
08 imshow("face-orig", im_face_orig)
09 namedWindow("face-blur", 1)
10 imshow("face-blur", im_face_blur)
11 waitKey()
![]() |
| face-blur |
3.Gaussian blur
Blurs an image using a Gaussian filter.Python: cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) → dst
01 from cv2 import *
02
03 im_face_orig = imread("face-orig.jpg")
04 im_face_gaussblur = GaussianBlur(im_face_orig, (5, 5), 10)
05 imwrite("face-gaussblur.jpg", im_face_gaussblur)
06
07 namedWindow("face-orig", 1)
08 imshow("face-orig", im_face_orig)
09 namedWindow("face-gaussblur", 1)
10 imshow("face-gaussblur", im_face_gaussblur)
11 waitKey()
02
03 im_face_orig = imread("face-orig.jpg")
04 im_face_gaussblur = GaussianBlur(im_face_orig, (5, 5), 10)
05 imwrite("face-gaussblur.jpg", im_face_gaussblur)
06
07 namedWindow("face-orig", 1)
08 imshow("face-orig", im_face_orig)
09 namedWindow("face-gaussblur", 1)
10 imshow("face-gaussblur", im_face_gaussblur)
11 waitKey()
![]() |
| face-gaussblur |
4.Median filter
Blurs an image using the median filter.Python: cv2.medianBlur(src, ksize[, dst]) → dst
- ksize: 3, 5, 7, ...
01 import random
02 from cv2 import *
03
04 def addnoise(src, rate):
05 '''add salt and pepper noise'''
06 h, w, c = src.shape
07 for i in range(h):
08 for j in range(w):
09 r = random.randint(1, 200)
10 if r <= 100*rate:
11 src[i][j] = [0, 0, 0]
12 if 100*rate < r <= 200*rate:
13 src[i][j] = [255, 255, 255]
14 return src
15
16 # add salt and pepper noise
17 im_face_orig = imread("face-orig.jpg")
18 im_face_noise = addnoise(im_face_orig, 0.2)
19 imwrite("face-noise.jpg", im_face_noise)
20
21 # median filter
22 im_face_medfilter = medianBlur(im_face_noise, 5)
23 imwrite("face-medfilter.jpg", im_face_medfilter)
24
25 # show image
26 namedWindow("face-noise", 1)
27 imshow("face-noise", im_face_noise)
28 namedWindow("face-medblur", 1)
29 imshow("face-medblur", im_face_medfilter)
30 waitKey()
02 from cv2 import *
03
04 def addnoise(src, rate):
05 '''add salt and pepper noise'''
06 h, w, c = src.shape
07 for i in range(h):
08 for j in range(w):
09 r = random.randint(1, 200)
10 if r <= 100*rate:
11 src[i][j] = [0, 0, 0]
12 if 100*rate < r <= 200*rate:
13 src[i][j] = [255, 255, 255]
14 return src
15
16 # add salt and pepper noise
17 im_face_orig = imread("face-orig.jpg")
18 im_face_noise = addnoise(im_face_orig, 0.2)
19 imwrite("face-noise.jpg", im_face_noise)
20
21 # median filter
22 im_face_medfilter = medianBlur(im_face_noise, 5)
23 imwrite("face-medfilter.jpg", im_face_medfilter)
24
25 # show image
26 namedWindow("face-noise", 1)
27 imshow("face-noise", im_face_noise)
28 namedWindow("face-medblur", 1)
29 imshow("face-medblur", im_face_medfilter)
30 waitKey()
![]() |
| face-noise |
![]() |
| face-medfilter |
5.smoothing.py in opencv Official_Tutorial_Python
01 import cv2
02 import numpy as np
03
04 DELAY_CAPTION = 1500;
05 DELAY_BLUR = 500;
06
07 img = cv2.imread('lena.jpg')
08
09 # blur
10 for i in xrange(1,31,2):
11 blur = cv2.blur(img,(i,i))
12 string = 'blur : kernel size - '+str(i)
13 cv2.putText(blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
14 cv2.imshow('Blur',blur)
15 cv2.waitKey(DELAY_BLUR)
16
17 cv2.waitKey(DELAY_CAPTION)
18
19 # GaussianBlur
20 for i in xrange(1,31,2):
21 gaussian_blur = cv2.GaussianBlur(img,(i,i),0)
22 string = 'guassian_blur : kernel size - '+str(i)
23 cv2.putText(gaussian_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
24 cv2.imshow('Blur',gaussian_blur)
25 cv2.waitKey(DELAY_BLUR)
26
27 cv2.waitKey(DELAY_CAPTION)
28
29 # medianBlur
30 for i in xrange(1,31,2):
31 median_blur = cv2.medianBlur(img,i)
32 string = 'median_blur : kernel size - '+str(i)
33 cv2.putText(median_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
34 cv2.imshow('Blur',median_blur)
35 cv2.waitKey(DELAY_BLUR)
36
37 cv2.waitKey(DELAY_CAPTION)
38
39 # bilateralFilter
40 for i in xrange(1,31,2): # Remember, bilateral is a bit slow, so as value go higher, it takes long time
41 bilateral_blur = cv2.bilateralFilter(img,i, i*2,i/2)
42 string = 'bilateral_blur : kernel size - '+str(i)
43 cv2.putText(bilateral_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
44 cv2.imshow('Blur',bilateral_blur)
45 cv2.waitKey(DELAY_BLUR)
46
47 cv2.waitKey(DELAY_CAPTION)
48
49 cv2.destroyAllWindows()
02 import numpy as np
03
04 DELAY_CAPTION = 1500;
05 DELAY_BLUR = 500;
06
07 img = cv2.imread('lena.jpg')
08
09 # blur
10 for i in xrange(1,31,2):
11 blur = cv2.blur(img,(i,i))
12 string = 'blur : kernel size - '+str(i)
13 cv2.putText(blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
14 cv2.imshow('Blur',blur)
15 cv2.waitKey(DELAY_BLUR)
16
17 cv2.waitKey(DELAY_CAPTION)
18
19 # GaussianBlur
20 for i in xrange(1,31,2):
21 gaussian_blur = cv2.GaussianBlur(img,(i,i),0)
22 string = 'guassian_blur : kernel size - '+str(i)
23 cv2.putText(gaussian_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
24 cv2.imshow('Blur',gaussian_blur)
25 cv2.waitKey(DELAY_BLUR)
26
27 cv2.waitKey(DELAY_CAPTION)
28
29 # medianBlur
30 for i in xrange(1,31,2):
31 median_blur = cv2.medianBlur(img,i)
32 string = 'median_blur : kernel size - '+str(i)
33 cv2.putText(median_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
34 cv2.imshow('Blur',median_blur)
35 cv2.waitKey(DELAY_BLUR)
36
37 cv2.waitKey(DELAY_CAPTION)
38
39 # bilateralFilter
40 for i in xrange(1,31,2): # Remember, bilateral is a bit slow, so as value go higher, it takes long time
41 bilateral_blur = cv2.bilateralFilter(img,i, i*2,i/2)
42 string = 'bilateral_blur : kernel size - '+str(i)
43 cv2.putText(bilateral_blur,string,(20,20),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255,255,255))
44 cv2.imshow('Blur',bilateral_blur)
45 cv2.waitKey(DELAY_BLUR)
46
47 cv2.waitKey(DELAY_CAPTION)
48
49 cv2.destroyAllWindows()








没有评论:
发表评论