├── requirements.txt
├── .gitignore
├── Image_Generated
├── DIY.jpg
├── Naive.jpg
├── Embossing_.jpg
├── Gaussian_Blur.jpg
├── Motion_Blur.jpg
├── Averaging_Blur.jpg
├── Completed_Blur.jpg
├── Sharpness_Edge.jpg
├── Sharpness_Center.jpg
├── Embossing_45_degree.jpg
├── Embossing_Asymmetric.jpg
├── Averaging_Blur_Enhanced.jpg
├── Edge_Detection_360_degree.jpg
└── Edge_Detection_45_degree.jpg
├── Image_Origin
└── girl.jpg
├── LICENSE.md
├── src
├── run.sh
├── convolution.py
├── main.py
└── filter.py
└── README.md
/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy>=1.11.1
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Generated by IDE
3 | .idea/
4 | src/__pycache__/
5 |
--------------------------------------------------------------------------------
/Image_Generated/DIY.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/DIY.jpg
--------------------------------------------------------------------------------
/Image_Origin/girl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Origin/girl.jpg
--------------------------------------------------------------------------------
/Image_Generated/Naive.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Naive.jpg
--------------------------------------------------------------------------------
/Image_Generated/Embossing_.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Embossing_.jpg
--------------------------------------------------------------------------------
/Image_Generated/Gaussian_Blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Gaussian_Blur.jpg
--------------------------------------------------------------------------------
/Image_Generated/Motion_Blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Motion_Blur.jpg
--------------------------------------------------------------------------------
/Image_Generated/Averaging_Blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Averaging_Blur.jpg
--------------------------------------------------------------------------------
/Image_Generated/Completed_Blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Completed_Blur.jpg
--------------------------------------------------------------------------------
/Image_Generated/Sharpness_Edge.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Sharpness_Edge.jpg
--------------------------------------------------------------------------------
/Image_Generated/Sharpness_Center.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Sharpness_Center.jpg
--------------------------------------------------------------------------------
/Image_Generated/Embossing_45_degree.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Embossing_45_degree.jpg
--------------------------------------------------------------------------------
/Image_Generated/Embossing_Asymmetric.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Embossing_Asymmetric.jpg
--------------------------------------------------------------------------------
/Image_Generated/Averaging_Blur_Enhanced.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Averaging_Blur_Enhanced.jpg
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2017 https://github.com/JNingWei/Image_Filter
4 |
5 | For open source sharing.
6 |
--------------------------------------------------------------------------------
/src/run.sh:
--------------------------------------------------------------------------------
1 |
2 | echo -e '\n\n == == Filterring Image == ==\n'
3 | python main.py
4 |
5 | find . -name "*.pyc" -type f -delete
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Image_Generated/Edge_Detection_360_degree.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Edge_Detection_360_degree.jpg
--------------------------------------------------------------------------------
/Image_Generated/Edge_Detection_45_degree.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JNingWei/Image_Filter/HEAD/Image_Generated/Edge_Detection_45_degree.jpg
--------------------------------------------------------------------------------
/src/convolution.py:
--------------------------------------------------------------------------------
1 | # coding=utf-8
2 |
3 | """
4 | Image-Filter
5 | Convolution module.
6 |
7 | __author__ = 'JNingWei'
8 | """
9 |
10 | import numpy as np
11 |
12 | def conv(image, filter, image_center_x, image_center_y):
13 | size = 3
14 | radius = int((size-1)/2)
15 | view = np.zeros((size, size, 3), dtype=np.float)
16 | for i in range(size):
17 | for j in range(size):
18 | for z in range(3):
19 | view[i][j][z] = image[image_center_x-radius+i][image_center_y-radius+j][z] * filter[i][j][z]
20 | return np.sum(view)
21 |
--------------------------------------------------------------------------------
/src/main.py:
--------------------------------------------------------------------------------
1 | # coding=utf-8
2 |
3 | """
4 | Image-Filter
5 | Main program.
6 |
7 | __author__ = 'JNingWei'
8 | """
9 |
10 | import os
11 | import cv2
12 | import numpy as np
13 |
14 | import filter
15 | import convolution
16 |
17 | def main(src, dst):
18 |
19 | src_pic_paths = [os.path.join(src, name) for name in os.listdir(src)
20 | if os.path.splitext(name)[-1] in [".jpg", ".JPG", ".png", ".PNG"]]
21 | filters = [
22 | 'Naive', # Naive Filter 原图滤波(相当于无变化)
23 | 'Sharpness_Center', # Sharpness_Center Filter 中心锐化 滤波
24 | 'Sharpness_Edge', # Sharpness_Edge Filter 边缘锐化 滤波
25 | 'Edge_Detection_360_degree', # Edge_Detection_360° Filter 360°边缘检测 滤波
26 | 'Edge_Detection_45_degree', # Edge_Detection_45° Filter 45°边缘检测 滤波
27 | 'Embossing_45_degree', # Embossing_45° Filter 45°浮雕 滤波
28 | 'Embossing_Asymmetric', # Embossing_Asymmetric Filter 非对称浮雕 滤波
29 | 'Averaging_Blur', # Averaging_Blur Filter 均值模糊 滤波
30 | 'Completed_Blur', # Completed_Blur Filter 完全模糊 滤波
31 | 'Motion_Blur', # Motion_Blur Filter 运动模糊 滤波
32 | 'Gaussian_Blur', # Gaussian_Blur Filter 高斯模糊 滤波
33 |
34 | 'DIY' # DIY Filter 自定义 滤波
35 | ]
36 |
37 | # ===================================================================
38 | ## Choose the filter from list: "filter_names" 选择你需要的滤波器
39 |
40 | filter_name = 'Sharpness_Center'
41 | # filter_name = 'DIY'
42 | # ===================================================================
43 |
44 | for src_pic_path in src_pic_paths:
45 | img = cv2.imread(src_pic_path)
46 | h, w, c = img.shape
47 | assert c == 3, "Error! Please use the picture of 3 color channels."
48 | filter_0, filter_1, filter_2 = filter.Filter(filter_name)
49 | img2 = np.zeros((h, w, c), dtype=np.float)
50 | for i in range(1, h-1, 1):
51 | for j in range(1, w-1, 1):
52 | img2[i][j][0] = convolution.conv(img, filter_0, i, j)
53 | img2[i][j][1] = convolution.conv(img, filter_1, i, j)
54 | img2[i][j][2] = convolution.conv(img, filter_2, i, j)
55 | dst_pic_name = filter_name + '.jpg'
56 | dst_pic_path = os.path.join(dst, dst_pic_name)
57 | cv2.imwrite(dst_pic_path, img2)
58 |
59 | img3 = cv2.imread(dst_pic_path)
60 | cv2.imshow(dst_pic_name, img3)
61 | cv2.waitKey(0)
62 | cv2.destroyAllWindows()
63 |
64 |
65 | if __name__ == "__main__":
66 | SRC = '../Image_Origin' # dir for origin pics 原图像文件夹
67 | DST = '../Image_Generated' # dir for filtered pics 滤波后生成图像存放的文件夹
68 | main(SRC, DST)
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Image Filter   [](./LICENSE.md) 
2 |
3 | __Update 13-05-2017__: __It's an image filter entirely written by myself.__
4 |
5 | MIT license. Contributions welcome.
6 |
7 | ## Overview
8 |
9 | Image-Filter/ root directory
10 | |
11 | +-- src/ code files that implement the function
12 | |
13 | +-- Image_Origin/ images which be chosen to filtering
14 | |
15 | +-- Image_Generated/ images which be generated after filtering
16 | |
17 | +-- README.md manual of project
18 | |
19 | +-- LICENSE.md license of project
20 | |
21 | +-- requirements.txt environment required for this program
22 |
23 | There are 11 filters can choose:
24 |
25 | - [x] 1. Naive Filter 原图滤波(相当于无变化)
26 | - [x] 2. Sharpness_Center Filter 中心锐化 滤波
27 | - [x] 3. Sharpness_Edge Filter 边缘锐化 滤波
28 | - [x] 4. Edge_Detection_360° Filter 360°边缘检测 滤波
29 | - [x] 5. Edge_Detection_45° Filter 45°边缘检测 滤波
30 | - [x] 6. Embossing_45° Filter 45°浮雕 滤波
31 | - [x] 7. Embossing_Asymmetric Filter 非对称浮雕 滤波
32 | - [x] 8. Averaging_Blur Filter 均值模糊 滤波
33 | - [x] 9. Completed_Blur Filter 完全模糊 滤波
34 | - [x] 10. Motion_Blur Filter 运动模糊 滤波
35 | - [x] 11. Gaussian_Blur Filter 高斯模糊 滤波
36 |
37 | Choose the filter you need, and the filtered image will generated at folder ```Image_Generated/```.
38 | 选择你需要的滤波器,卷积结果会自动保存在 ```Image_Generated/``` 文件夹。
39 |
40 | ## Usage
41 |
42 | 1. Run ```python src/main.py``` to generated the image you need. Need to wait patiently for a while to get results.
43 | 2. In ```src/main.py```, you can also design a filter yourself to experiment.
44 |
45 |
46 | 1. 运行 ```python src / main.py``` 来生成你需要的图像,卷积结果需要耐心等待一会儿。
47 | 2. 在 ```src/main.py``` 中,自己还可以设计一个滤波器来做实验以加深对滤波器的了解。
48 |
49 | ## Requirements
50 |
51 | * Python
52 |
53 | * OpenCV
54 |
55 | ## Demo
56 |
57 |
58 |
59 | 1. Naive Filter 原图滤波(相当于无变化)
60 | 
61 |
62 |
63 | 2. Sharpness_Center Filter 中心锐化 滤波
64 | 
65 |
66 | 3. Sharpness_Edge Filter 边缘锐化 滤波
67 | 
68 |
69 | 4. Edge_Detection_360° Filter 360°边缘检测 滤波
70 | 
71 |
72 | 5. Edge_Detection_45° Filter 45°边缘检测 滤波
73 | 
74 |
75 | 6. Embossing_45° Filter 45°浮雕 滤波
76 | 
77 |
78 | 7. Embossing_Asymmetric Filter 非对称浮雕 滤波
79 | 
80 |
81 | 8. Averaging_Blur Filter 均值模糊 滤波
82 | 
83 |
84 | 9. Completed_Blur Filter 完全模糊 滤波
85 | 
86 |
87 | 10. Motion_Blur Filter 运动模糊 滤波
88 | 
89 |
90 | 11. Gaussian_Blur Filter 高斯模糊 滤波
91 | 
92 |
93 | ## License
94 |
95 | [MIT](https://github.com/JNingWei/Image_Filter/blob/master/LICENSE.md)
96 |
--------------------------------------------------------------------------------
/src/filter.py:
--------------------------------------------------------------------------------
1 | # coding=utf-8
2 |
3 | """
4 | Image-Filter
5 | Provide optional filter.
6 |
7 | __author__ = 'JNingWei'
8 | """
9 |
10 | import numpy as np
11 |
12 | def Naive_Filter():
13 | # Naive Filter 原图 滤波
14 | filter_0 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
15 | [[0,0,0],[1,0,0],[0,0,0]],
16 | [[0,0,0],[0,0,0],[0,0,0]]],
17 | dtype=np.int16)
18 | filter_1 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
19 | [[0,0,0],[0,1,0],[0,0,0]],
20 | [[0,0,0],[0,0,0],[0,0,0]]],
21 | dtype=np.int16)
22 | filter_2 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
23 | [[0,0,0],[0,0,1],[0,0,0]],
24 | [[0,0,0],[0,0,0],[0,0,0]]],
25 | dtype=np.int16)
26 | return filter_0, filter_1, filter_2
27 |
28 | def Sharpness_Center_Filter():
29 | # Sharpness_Center Filter 中心锐化 滤波
30 | filter_0 = np.array([[[-1,0,0],[-1,0,0],[-1,0,0]],
31 | [[-1,0,0],[9,0,0],[-1,0,0]],
32 | [[-1,0,0],[-1,0,0],[-1,0,0]]],
33 | dtype=np.int16)
34 | filter_1 = np.array([[[0,-1,0],[0,-1,0],[0,-1,0]],
35 | [[0,-1,0],[0,9,0],[0,-1,0]],
36 | [[0,-1,0],[0,-1,0],[0,-1,0]]],
37 | dtype=np.int16)
38 | filter_2 = np.array([[[0,0,-1],[0,0,-1],[0,0,-1]],
39 | [[0,0,-1],[0,0,9],[0,0,-1]],
40 | [[0,0,-1],[0,0,-1],[0,0,-1]]],
41 | dtype=np.int16)
42 | return filter_0, filter_1, filter_2
43 |
44 | def Sharpness_Edge_Filter():
45 | # Sharpness_Edge Filter 边缘锐化 滤波
46 | filter_0 = np.array([[[1,0,0],[1,0,0],[1,0,0]],
47 | [[1,0,0],[-7,0,0],[1,0,0]],
48 | [[1,0,0],[1,0,0],[1,0,0]]],
49 | dtype=np.int16)
50 | filter_1 = np.array([[[0,1,0],[0,1,0],[0,1,0]],
51 | [[0,1,0],[0,-7,0],[0,1,0]],
52 | [[0,1,0],[0,1,0],[0,1,0]]],
53 | dtype=np.int16)
54 | filter_2 = np.array([[[0,0,1],[0,0,1],[0,0,1]],
55 | [[0,0,1],[0,0,-7],[0,0,1]],
56 | [[0,0,1],[0,0,1],[0,0,1]]],
57 | dtype=np.int16)
58 | return filter_0, filter_1, filter_2
59 |
60 | def Edge_Detection_360_degree_Filter():
61 | # Edge_Detection_360° Filter 360°边缘检测 滤波
62 | filter_0 = np.array([[[-1,0,0],[-1,0,0],[-1,0,0]],
63 | [[-1,0,0],[8,0,0],[-1,0,0]],
64 | [[-1,0,0],[-1,0,0],[-1,0,0]]],
65 | dtype=np.int16)
66 | filter_1 = np.array([[[0,-1,0],[0,-1,0],[0,-1,0]],
67 | [[0,-1,0],[0,8,0],[0,-1,0]],
68 | [[0,-1,0],[0,-1,0],[0,-1,0]]],
69 | dtype=np.int16)
70 | filter_2 = np.array([[[0,0,-1],[0,0,-1],[0,0,-1]],
71 | [[0,0,-1],[0,0,8],[0,0,-1]],
72 | [[0,0,-1],[0,0,-1],[0,0,-1]]],
73 | dtype=np.int16)
74 | return filter_0, filter_1, filter_2
75 |
76 | def Edge_Detection_45_degree_Filter():
77 | # Edge_Detection_45° Filter 45°边缘检测 滤波
78 | filter_0 = np.array([[[-1,0,0],[0,0,0],[0,0,0]],
79 | [[0,0,0],[2,0,0],[0,0,0]],
80 | [[0,0,0],[0,0,0],[-1,0,0]]],
81 | dtype=np.int16)
82 | filter_1 = np.array([[[0,-1,0],[0,0,0],[0,0,0]],
83 | [[0,0,0],[0,2,0],[0,0,0]],
84 | [[0,0,0],[0,0,0],[0,-1,0]]],
85 | dtype=np.int16)
86 | filter_2 = np.array([[[0,0,-1],[0,0,0],[0,0,0]],
87 | [[0,0,0],[0,0,2],[0,0,0]],
88 | [[0,0,0],[0,0,0],[0,0,-1]]],
89 | dtype=np.int16)
90 | return filter_0, filter_1, filter_2
91 |
92 | def Embossing_45_degree_Filter():
93 | # Embossing_45° Filter 45°浮雕 滤波
94 | filter_0 = np.array([[[-1,0,0],[-1,0,0],[0,0,0]],
95 | [[-1,0,0],[1,0,0],[1,0,0]],
96 | [[0,0,0],[1,0,0],[1,0,0]]],
97 | dtype=np.int16)
98 | filter_1 = np.array([[[0,-1,0],[0,-1,0],[0,0,0]],
99 | [[0,-1,0],[0,1,0],[0,1,0]],
100 | [[0,0,0],[0,1,0],[0,1,0]]],
101 | dtype=np.int16)
102 | filter_2 = np.array([[[0,0,-1],[0,0,-1],[0,0,0]],
103 | [[0,0,-1],[0,0,1],[0,0,1]],
104 | [[0,0,0],[0,0,1],[0,0,1]]],
105 | dtype=np.int16)
106 | return filter_0, filter_1, filter_2
107 |
108 | def Embossing_Asymmetric_Filter():
109 | # Embossing_Asymmetric Filter 非对称浮雕 滤波
110 | filter_0 = np.array([[[2,0,0],[0,0,0],[0,0,0]],
111 | [[0,0,0],[-1,0,0],[0,0,0]],
112 | [[0,0,0],[0,0,0],[-1,0,0]]],
113 | dtype=np.int16)
114 | filter_1 = np.array([[[0,2,0],[0,0,0],[0,0,0]],
115 | [[0,0,0],[0,-1,0],[0,0,0]],
116 | [[0,0,0],[0,0,0],[0,-1,0]]],
117 | dtype=np.int16)
118 | filter_2 = np.array([[[0,0,2],[0,0,0],[0,0,0]],
119 | [[0,0,0],[0,0,-1],[0,0,0]],
120 | [[0,0,0],[0,0,0],[0,0,-1]]],
121 | dtype=np.int16)
122 | return filter_0, filter_1, filter_2
123 |
124 | def Averaging_Blur_Filter():
125 | # Averaging_Blur Filter 均值模糊 滤波
126 | filter_0 = np.array([[[0,0,0],[0.25,0,0],[0,0,0]],
127 | [[0.25,0,0],[0,0,0],[0.25,0,0]],
128 | [[0,0,0],[0.25,0,0],[0,0,0]]],
129 | dtype=np.float)
130 | filter_1 = np.array([[[0,0,0],[0,0.25,0],[0,0,0]],
131 | [[0,0.25,0],[0,0,0],[0,0.25,0]],
132 | [[0,0,0],[0,0.25,0],[0,0,0]]],
133 | dtype=np.float)
134 | filter_2 = np.array([[[0,0,0],[0,0,0.25],[0,0,0]],
135 | [[0,0,0.25],[0,0,0],[0,0,0.25]],
136 | [[0,0,0],[0,0,0.25],[0,0,0]]],
137 | dtype=np.float)
138 | return filter_0, filter_1, filter_2
139 |
140 | def Completed_Blur_Filter():
141 | # Completed_Blur Filter 完全模糊 滤波
142 | filter_0 = np.array([[[1.0/9,0,0],[1.0/9,0,0],[1.0/9,0,0]],
143 | [[1.0/9,0,0],[1.0/9,0,0],[1.0/9,0,0]],
144 | [[1.0/9,0,0],[1.0/9,0,0],[1.0/9,0,0]]],
145 | dtype=np.float)
146 | filter_1 = np.array([[[0,1.0/9,0],[0,1.0/9,0],[0,1.0/9,0]],
147 | [[0,1.0/9,0],[0,1.0/9,0],[0,1.0/9,0]],
148 | [[0,1.0/9,0],[0,1.0/9,0],[0,1.0/9,0]]],
149 | dtype=np.float)
150 | filter_2 = np.array([[[0,0,1.0/9],[0,0,1.0/9],[0,0,1.0/9]],
151 | [[0,0,1.0/9],[0,0,1.0/9],[0,0,1.0/9]],
152 | [[0,0,1.0/9],[0,0,1.0/9],[0,0,1.0/9]]],
153 | dtype=np.float)
154 | return filter_0, filter_1, filter_2
155 |
156 | def Motion_Blur_Filter():
157 | # Motion_Blur Filter 运动模糊 滤波
158 | filter_0 = np.array([[[1,0,0],[0,0,0],[0,0,0]],
159 | [[0,0,0],[1,0,0],[0,0,0]],
160 | [[0,0,0],[0,0,0],[1,0,0]]],
161 | dtype=np.int16)
162 | filter_1 = np.array([[[0,1,0],[0,0,0],[0,0,0]],
163 | [[0,0,0],[0,1,0],[0,0,0]],
164 | [[0,0,0],[0,0,0],[0,1,0]]],
165 | dtype=np.int16)
166 | filter_2 = np.array([[[0,0,1],[0,0,0],[0,0,0]],
167 | [[0,0,0],[0,0,1],[0,0,0]],
168 | [[0,0,0],[0,0,0],[0,0,1]]],
169 | dtype=np.int16)
170 | return filter_0, filter_1, filter_2
171 |
172 | def Gaussian_Blur_Filter():
173 | # Gaussian_Blur Filter 高斯模糊 滤波
174 | filter_0 = np.array([[[1.0/36,0,0],[4.0/36,0,0],[1.0/36,0,0]],
175 | [[4.0/36,0,0],[16.0/36,0,0],[4.0/36,0,0]],
176 | [[1.0/36,0,0],[4.0/36,0,0],[1.0/36,0,0]]],
177 | dtype=np.float)
178 | filter_1 = np.array([[[0,1.0/36,0],[0,4.0/36,0],[0,1.0/36,0]],
179 | [[0,4.0/36,0],[0,16.0/36,0],[0,4.0/36,0]],
180 | [[0,1.0/36,0],[0,4.0/36,0],[0,1.0/36,0]]],
181 | dtype=np.float)
182 | filter_2 = np.array([[[0,0,1.0/36],[0,0,4.0/36],[0,0,1.0/36]],
183 | [[0,0,4.0/36],[0,0,16.0/36],[0,0,4.0/36]],
184 | [[0,0,1.0/36],[0,0,4.0/36],[0,0,1.0/36]]],
185 | dtype=np.float)
186 | return filter_0, filter_1, filter_2
187 |
188 | def DIY_Filter():
189 | # Design a filter yourself 自己设计一个滤波器
190 | filter_0 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
191 | [[0,0,0],[1,0,0],[0,0,0]],
192 | [[0,0,0],[0,0,0],[0,0,0]]],
193 | dtype=np.int16)
194 | filter_1 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
195 | [[0,0,0],[0,1,0],[0,0,0]],
196 | [[0,0,0],[0,0,0],[0,0,0]]],
197 | dtype=np.int16)
198 | filter_2 = np.array([[[0,0,0],[0,0,0],[0,0,0]],
199 | [[0,0,0],[0,0,1],[0,0,0]],
200 | [[0,0,0],[0,0,0],[0,0,0]]],
201 | dtype=np.int16)
202 | return filter_0, filter_1, filter_2
203 |
204 | def No_Exist_Filter():
205 | # When filter name doesn't exist 当滤波器不存在时
206 | filter_0 = np.zeros((3, 3, 3), dtype=np.float)
207 | filter_1 = np.zeros((3, 3, 3), dtype=np.float)
208 | filter_2 = np.zeros((3, 3, 3), dtype=np.float)
209 | return filter_0, filter_1, filter_2
210 |
211 | def Filter(filter_name):
212 | # Choose which filter to be returned 根据用户指定的 滤波器名称,挑选对应的 滤波器配置 返回
213 | if filter_name == 'Naive':
214 | filter_0, filter_1, filter_2 = Naive_Filter()
215 | elif filter_name == 'Sharpness_Center':
216 | filter_0, filter_1, filter_2 = Sharpness_Center_Filter()
217 | elif filter_name == 'Sharpness_Edge':
218 | filter_0, filter_1, filter_2 = Sharpness_Edge_Filter()
219 | elif filter_name == 'Edge_Detection_360_degree':
220 | filter_0, filter_1, filter_2 = Edge_Detection_360_degree_Filter()
221 | elif filter_name == 'Edge_Detection_45_degree':
222 | filter_0, filter_1, filter_2 = Edge_Detection_45_degree_Filter()
223 | elif filter_name == 'Embossing_45_degree':
224 | filter_0, filter_1, filter_2 = Embossing_45_degree_Filter()
225 | elif filter_name == 'Embossing_Asymmetric':
226 | filter_0, filter_1, filter_2 = Embossing_Asymmetric_Filter()
227 | elif filter_name == 'Averaging_Blur':
228 | filter_0, filter_1, filter_2 = Averaging_Blur_Filter()
229 | elif filter_name == 'Completed_Blur':
230 | filter_0, filter_1, filter_2 = Completed_Blur_Filter()
231 | elif filter_name == 'Motion_Blur':
232 | filter_0, filter_1, filter_2 = Motion_Blur_Filter()
233 | elif filter_name == 'Gaussian_Blur':
234 | filter_0, filter_1, filter_2 = Gaussian_Blur_Filter()
235 | elif filter_name == 'DIY':
236 | filter_0, filter_1, filter_2 = DIY_Filter()
237 | else:
238 | print("\n No such Filter !")
239 | exit(0)
240 | filter_0, filter_1, filter_2 = No_Exist_Filter()
241 |
242 | return filter_0, filter_1, filter_2
243 |
244 |
--------------------------------------------------------------------------------