Showing
10 changed files
with
1552 additions
and
0 deletions
code 제출/CIFAR-10-origin-khu.zip
0 → 100644
This file is too large to display.
code 제출/data transform-2by2(1).py
0 → 100644
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 1 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 1 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + | ||
53 | + img = cv2.imread(j, 1) | ||
54 | + b, g, r = cv2.split(img) | ||
55 | + img = cv2.merge([r, g, b]) | ||
56 | + img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + f = np.fft.fft2(img) | ||
59 | + fshift = np.fft.fftshift(f) | ||
60 | + rows, cols = img.shape | ||
61 | + crow, ccol = rows//2, cols//2 | ||
62 | + d = l | ||
63 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + f_ishift = np.fft.ifftshift(fshift) | ||
65 | + img_back = np.fft.ifft2(f_ishift) | ||
66 | + img_back = np.abs(img_back) | ||
67 | + | ||
68 | + cv2.imwrite(new_file2, img_back) | ||
69 | + | ||
70 | +for i in valid_dirList: | ||
71 | + print(i) | ||
72 | + # filelist에는 "사진 파일들의 리스트" | ||
73 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
74 | + filelist = glob(i+'\\*') | ||
75 | + | ||
76 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
77 | + before_last_path, last = os.path.split(i) | ||
78 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
79 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
80 | + new_dir = os.path.join(before_last, last) | ||
81 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
82 | + print(new_dir) | ||
83 | + os.makedirs(new_dir, exist_ok=True) | ||
84 | + | ||
85 | + for j in filelist: | ||
86 | + img = im.open(j) | ||
87 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
88 | + img.save(new_file) | ||
89 | + | ||
90 | +for i in test_dirList: | ||
91 | + print(i) | ||
92 | + # filelist에는 "사진 파일들의 리스트" | ||
93 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
94 | + filelist = glob(i+'\\*') | ||
95 | + | ||
96 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
97 | + before_last_path, last = os.path.split(i) | ||
98 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
99 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
100 | + new_dir = os.path.join(before_last, last) | ||
101 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
102 | + print(new_dir) | ||
103 | + os.makedirs(new_dir, exist_ok=True) | ||
104 | + | ||
105 | + for j in filelist: | ||
106 | + img = im.open(j) | ||
107 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
108 | + img.save(new_file) | ||
109 | + | ||
110 | + | ||
111 | +def printMatrix(a): | ||
112 | + m = len(a) | ||
113 | + n = len(a[0]) | ||
114 | + for i in range(m): | ||
115 | + for j in range(n): | ||
116 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
117 | + print() | ||
118 | + print() | ||
119 | + | ||
120 | + | ||
121 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
122 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
123 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
124 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
125 | +# image_pil = im.open('n04461696_3346.png') | ||
126 | +# # image_pil.show() | ||
127 | +# img1 = np.array(image_pil) | ||
128 | +# print(img1.shape) | ||
129 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
130 | + | ||
131 | + | ||
132 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
133 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
134 | +print(img0.shape) | ||
135 | +# plt.subplot(211), plt.imshow(img0) | ||
136 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
137 | + | ||
138 | +# plt.subplot(212), plt.imshow(image_pil) | ||
139 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
140 | +# plt.show() | ||
141 | + | ||
142 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
143 | +img2 = img1 | ||
144 | +i = 0 | ||
145 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
146 | + | ||
147 | +# Fourier Transform을 적용. | ||
148 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
149 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
150 | + | ||
151 | +for img in img1: | ||
152 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
153 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
154 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
155 | + fshift = np.fft.fftshift(f) | ||
156 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
157 | + | ||
158 | + print(img.shape, fshift.shape) | ||
159 | + rows, cols = img.shape | ||
160 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
161 | + | ||
162 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
163 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
164 | + d = 1 | ||
165 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
166 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
167 | + | ||
168 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
169 | + f_ishift = np.fft.ifftshift(fshift) | ||
170 | + img_back = np.fft.ifft2(f_ishift) | ||
171 | + img_back = np.abs(img_back) | ||
172 | + img2[i] = img_back | ||
173 | + i += 1 | ||
174 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
175 | + img_new = np.uint8(img_back) | ||
176 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
177 | + # plt.subplot(231), plt.imshow(img) | ||
178 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
179 | + | ||
180 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
181 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
182 | + | ||
183 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
184 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
185 | + | ||
186 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
187 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
188 | + | ||
189 | + # plt.subplot(236), plt.imshow(thresh) | ||
190 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
191 | + # plt.show() | ||
192 | + | ||
193 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
194 | +printMatrix(img2[:, :, 0]) | ||
195 | +printMatrix(img2[:, :, 1]) | ||
196 | +printMatrix(img2[:, :, 2]) | ||
197 | + | ||
198 | +plt.subplot(231), plt.imshow(img0) | ||
199 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
200 | + | ||
201 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
202 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
203 | + | ||
204 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
205 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
206 | + | ||
207 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
208 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
209 | + | ||
210 | +print(img2.shape) | ||
211 | +plt.subplot(235), plt.imshow(img2) | ||
212 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
213 | + | ||
214 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
215 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
216 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
217 | +plt.show() | ||
218 | + | ||
219 | + | ||
220 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
221 | +print(cv2.__version__) |
code 제출/data transform-2by2(255).py
0 → 100644
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 255 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 1 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + | ||
53 | + img = cv2.imread(j, 1) | ||
54 | + b, g, r = cv2.split(img) | ||
55 | + img = cv2.merge([r, g, b]) | ||
56 | + img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + f = np.fft.fft2(img) | ||
59 | + fshift = np.fft.fftshift(f) | ||
60 | + rows, cols = img.shape | ||
61 | + crow, ccol = rows//2, cols//2 | ||
62 | + d = l | ||
63 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + f_ishift = np.fft.ifftshift(fshift) | ||
65 | + img_back = np.fft.ifft2(f_ishift) | ||
66 | + img_back = np.abs(img_back) | ||
67 | + | ||
68 | + cv2.imwrite(new_file2, img_back) | ||
69 | + | ||
70 | +for i in valid_dirList: | ||
71 | + print(i) | ||
72 | + # filelist에는 "사진 파일들의 리스트" | ||
73 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
74 | + filelist = glob(i+'\\*') | ||
75 | + | ||
76 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
77 | + before_last_path, last = os.path.split(i) | ||
78 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
79 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
80 | + new_dir = os.path.join(before_last, last) | ||
81 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
82 | + print(new_dir) | ||
83 | + os.makedirs(new_dir, exist_ok=True) | ||
84 | + | ||
85 | + for j in filelist: | ||
86 | + img = im.open(j) | ||
87 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
88 | + img.save(new_file) | ||
89 | + | ||
90 | +for i in test_dirList: | ||
91 | + print(i) | ||
92 | + # filelist에는 "사진 파일들의 리스트" | ||
93 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
94 | + filelist = glob(i+'\\*') | ||
95 | + | ||
96 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
97 | + before_last_path, last = os.path.split(i) | ||
98 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
99 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
100 | + new_dir = os.path.join(before_last, last) | ||
101 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
102 | + print(new_dir) | ||
103 | + os.makedirs(new_dir, exist_ok=True) | ||
104 | + | ||
105 | + for j in filelist: | ||
106 | + img = im.open(j) | ||
107 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
108 | + img.save(new_file) | ||
109 | + | ||
110 | + | ||
111 | +def printMatrix(a): | ||
112 | + m = len(a) | ||
113 | + n = len(a[0]) | ||
114 | + for i in range(m): | ||
115 | + for j in range(n): | ||
116 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
117 | + print() | ||
118 | + print() | ||
119 | + | ||
120 | + | ||
121 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
122 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
123 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
124 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
125 | +# image_pil = im.open('n04461696_3346.png') | ||
126 | +# # image_pil.show() | ||
127 | +# img1 = np.array(image_pil) | ||
128 | +# print(img1.shape) | ||
129 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
130 | + | ||
131 | + | ||
132 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
133 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
134 | +print(img0.shape) | ||
135 | +# plt.subplot(211), plt.imshow(img0) | ||
136 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
137 | + | ||
138 | +# plt.subplot(212), plt.imshow(image_pil) | ||
139 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
140 | +# plt.show() | ||
141 | + | ||
142 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
143 | +img2 = img1 | ||
144 | +i = 0 | ||
145 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
146 | + | ||
147 | +# Fourier Transform을 적용. | ||
148 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
149 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
150 | + | ||
151 | +for img in img1: | ||
152 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
153 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
154 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
155 | + fshift = np.fft.fftshift(f) | ||
156 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
157 | + | ||
158 | + print(img.shape, fshift.shape) | ||
159 | + rows, cols = img.shape | ||
160 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
161 | + | ||
162 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
163 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
164 | + d = 1 | ||
165 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
166 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
167 | + | ||
168 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
169 | + f_ishift = np.fft.ifftshift(fshift) | ||
170 | + img_back = np.fft.ifft2(f_ishift) | ||
171 | + img_back = np.abs(img_back) | ||
172 | + img2[i] = img_back | ||
173 | + i += 1 | ||
174 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
175 | + img_new = np.uint8(img_back) | ||
176 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
177 | + # plt.subplot(231), plt.imshow(img) | ||
178 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
179 | + | ||
180 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
181 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
182 | + | ||
183 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
184 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
185 | + | ||
186 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
187 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
188 | + | ||
189 | + # plt.subplot(236), plt.imshow(thresh) | ||
190 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
191 | + # plt.show() | ||
192 | + | ||
193 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
194 | +printMatrix(img2[:, :, 0]) | ||
195 | +printMatrix(img2[:, :, 1]) | ||
196 | +printMatrix(img2[:, :, 2]) | ||
197 | + | ||
198 | +plt.subplot(231), plt.imshow(img0) | ||
199 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
200 | + | ||
201 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
202 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
203 | + | ||
204 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
205 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
206 | + | ||
207 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
208 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
209 | + | ||
210 | +print(img2.shape) | ||
211 | +plt.subplot(235), plt.imshow(img2) | ||
212 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
213 | + | ||
214 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
215 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
216 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
217 | +plt.show() | ||
218 | + | ||
219 | + | ||
220 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
221 | +print(cv2.__version__) |
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 1 # fft한 후 바깥 픽셀 값 | ||
30 | +l = 15 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + | ||
53 | + img = cv2.imread(j, 1) | ||
54 | + b, g, r = cv2.split(img) | ||
55 | + img = cv2.merge([r, g, b]) | ||
56 | + img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + f = np.fft.fft2(img) | ||
59 | + fshift = np.fft.fftshift(f) | ||
60 | + rows, cols = img.shape | ||
61 | + crow, ccol = rows//2, cols//2 | ||
62 | + d = l | ||
63 | + mask = np.zeros((rows, cols), np.uint8) | ||
64 | + mask[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
65 | + fshift = fshift*mask | ||
66 | + f_ishift = np.fft.ifftshift(fshift) | ||
67 | + img_back = np.fft.ifft2(f_ishift) | ||
68 | + img_back = np.abs(img_back) | ||
69 | + | ||
70 | + cv2.imwrite(new_file2, img_back) | ||
71 | + | ||
72 | +for i in valid_dirList: | ||
73 | + print(i) | ||
74 | + # filelist에는 "사진 파일들의 리스트" | ||
75 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
76 | + filelist = glob(i+'\\*') | ||
77 | + | ||
78 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
79 | + before_last_path, last = os.path.split(i) | ||
80 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
81 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
82 | + new_dir = os.path.join(before_last, last) | ||
83 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
84 | + print(new_dir) | ||
85 | + os.makedirs(new_dir, exist_ok=True) | ||
86 | + | ||
87 | + for j in filelist: | ||
88 | + img = im.open(j) | ||
89 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
90 | + img.save(new_file) | ||
91 | + | ||
92 | +for i in test_dirList: | ||
93 | + print(i) | ||
94 | + # filelist에는 "사진 파일들의 리스트" | ||
95 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
96 | + filelist = glob(i+'\\*') | ||
97 | + | ||
98 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
99 | + before_last_path, last = os.path.split(i) | ||
100 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
101 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
102 | + new_dir = os.path.join(before_last, last) | ||
103 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
104 | + print(new_dir) | ||
105 | + os.makedirs(new_dir, exist_ok=True) | ||
106 | + | ||
107 | + for j in filelist: | ||
108 | + img = im.open(j) | ||
109 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
110 | + img.save(new_file) | ||
111 | + | ||
112 | + | ||
113 | +def printMatrix(a): | ||
114 | + m = len(a) | ||
115 | + n = len(a[0]) | ||
116 | + for i in range(m): | ||
117 | + for j in range(n): | ||
118 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
119 | + print() | ||
120 | + print() | ||
121 | + | ||
122 | + | ||
123 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
124 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
125 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
126 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
127 | +# image_pil = im.open('n04461696_3346.png') | ||
128 | +# # image_pil.show() | ||
129 | +# img1 = np.array(image_pil) | ||
130 | +# print(img1.shape) | ||
131 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
132 | + | ||
133 | + | ||
134 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
135 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
136 | +print(img0.shape) | ||
137 | +# plt.subplot(211), plt.imshow(img0) | ||
138 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
139 | + | ||
140 | +# plt.subplot(212), plt.imshow(image_pil) | ||
141 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
142 | +# plt.show() | ||
143 | + | ||
144 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
145 | +img2 = img1 | ||
146 | +i = 0 | ||
147 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
148 | + | ||
149 | +# Fourier Transform을 적용. | ||
150 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
151 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
152 | + | ||
153 | +for img in img1: | ||
154 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
155 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
156 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
157 | + fshift = np.fft.fftshift(f) | ||
158 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
159 | + | ||
160 | + print(img.shape, fshift.shape) | ||
161 | + rows, cols = img.shape | ||
162 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
163 | + | ||
164 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
165 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
166 | + d = 1 | ||
167 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
168 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
169 | + | ||
170 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
171 | + f_ishift = np.fft.ifftshift(fshift) | ||
172 | + img_back = np.fft.ifft2(f_ishift) | ||
173 | + img_back = np.abs(img_back) | ||
174 | + img2[i] = img_back | ||
175 | + i += 1 | ||
176 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
177 | + img_new = np.uint8(img_back) | ||
178 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
179 | + # plt.subplot(231), plt.imshow(img) | ||
180 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
181 | + | ||
182 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
183 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
184 | + | ||
185 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
186 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
187 | + | ||
188 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
189 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
190 | + | ||
191 | + # plt.subplot(236), plt.imshow(thresh) | ||
192 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
193 | + # plt.show() | ||
194 | + | ||
195 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
196 | +printMatrix(img2[:, :, 0]) | ||
197 | +printMatrix(img2[:, :, 1]) | ||
198 | +printMatrix(img2[:, :, 2]) | ||
199 | + | ||
200 | +plt.subplot(231), plt.imshow(img0) | ||
201 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
202 | + | ||
203 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
204 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
205 | + | ||
206 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
207 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
208 | + | ||
209 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
210 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
211 | + | ||
212 | +print(img2.shape) | ||
213 | +plt.subplot(235), plt.imshow(img2) | ||
214 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
215 | + | ||
216 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
217 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
218 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
219 | +plt.show() | ||
220 | + | ||
221 | + | ||
222 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
223 | +print(cv2.__version__) |
code 제출/data transform-4by4(255).py
0 → 100644
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 255 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 2 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + | ||
53 | + img = cv2.imread(j, 1) | ||
54 | + b, g, r = cv2.split(img) | ||
55 | + img = cv2.merge([r, g, b]) | ||
56 | + img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + f = np.fft.fft2(img) | ||
59 | + fshift = np.fft.fftshift(f) | ||
60 | + rows, cols = img.shape | ||
61 | + crow, ccol = rows//2, cols//2 | ||
62 | + d = l | ||
63 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + f_ishift = np.fft.ifftshift(fshift) | ||
65 | + img_back = np.fft.ifft2(f_ishift) | ||
66 | + img_back = np.abs(img_back) | ||
67 | + | ||
68 | + cv2.imwrite(new_file2, img_back) | ||
69 | + | ||
70 | +for i in valid_dirList: | ||
71 | + print(i) | ||
72 | + # filelist에는 "사진 파일들의 리스트" | ||
73 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
74 | + filelist = glob(i+'\\*') | ||
75 | + | ||
76 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
77 | + before_last_path, last = os.path.split(i) | ||
78 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
79 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
80 | + new_dir = os.path.join(before_last, last) | ||
81 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
82 | + print(new_dir) | ||
83 | + os.makedirs(new_dir, exist_ok=True) | ||
84 | + | ||
85 | + for j in filelist: | ||
86 | + img = im.open(j) | ||
87 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
88 | + img.save(new_file) | ||
89 | + | ||
90 | +for i in test_dirList: | ||
91 | + print(i) | ||
92 | + # filelist에는 "사진 파일들의 리스트" | ||
93 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
94 | + filelist = glob(i+'\\*') | ||
95 | + | ||
96 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
97 | + before_last_path, last = os.path.split(i) | ||
98 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
99 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
100 | + new_dir = os.path.join(before_last, last) | ||
101 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
102 | + print(new_dir) | ||
103 | + os.makedirs(new_dir, exist_ok=True) | ||
104 | + | ||
105 | + for j in filelist: | ||
106 | + img = im.open(j) | ||
107 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
108 | + img.save(new_file) | ||
109 | + | ||
110 | + | ||
111 | +def printMatrix(a): | ||
112 | + m = len(a) | ||
113 | + n = len(a[0]) | ||
114 | + for i in range(m): | ||
115 | + for j in range(n): | ||
116 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
117 | + print() | ||
118 | + print() | ||
119 | + | ||
120 | + | ||
121 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
122 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
123 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
124 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
125 | +# image_pil = im.open('n04461696_3346.png') | ||
126 | +# # image_pil.show() | ||
127 | +# img1 = np.array(image_pil) | ||
128 | +# print(img1.shape) | ||
129 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
130 | + | ||
131 | + | ||
132 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
133 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
134 | +print(img0.shape) | ||
135 | +# plt.subplot(211), plt.imshow(img0) | ||
136 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
137 | + | ||
138 | +# plt.subplot(212), plt.imshow(image_pil) | ||
139 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
140 | +# plt.show() | ||
141 | + | ||
142 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
143 | +img2 = img1 | ||
144 | +i = 0 | ||
145 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
146 | + | ||
147 | +# Fourier Transform을 적용. | ||
148 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
149 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
150 | + | ||
151 | +for img in img1: | ||
152 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
153 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
154 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
155 | + fshift = np.fft.fftshift(f) | ||
156 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
157 | + | ||
158 | + print(img.shape, fshift.shape) | ||
159 | + rows, cols = img.shape | ||
160 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
161 | + | ||
162 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
163 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
164 | + d = 1 | ||
165 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
166 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
167 | + | ||
168 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
169 | + f_ishift = np.fft.ifftshift(fshift) | ||
170 | + img_back = np.fft.ifft2(f_ishift) | ||
171 | + img_back = np.abs(img_back) | ||
172 | + img2[i] = img_back | ||
173 | + i += 1 | ||
174 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
175 | + img_new = np.uint8(img_back) | ||
176 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
177 | + # plt.subplot(231), plt.imshow(img) | ||
178 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
179 | + | ||
180 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
181 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
182 | + | ||
183 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
184 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
185 | + | ||
186 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
187 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
188 | + | ||
189 | + # plt.subplot(236), plt.imshow(thresh) | ||
190 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
191 | + # plt.show() | ||
192 | + | ||
193 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
194 | +printMatrix(img2[:, :, 0]) | ||
195 | +printMatrix(img2[:, :, 1]) | ||
196 | +printMatrix(img2[:, :, 2]) | ||
197 | + | ||
198 | +plt.subplot(231), plt.imshow(img0) | ||
199 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
200 | + | ||
201 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
202 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
203 | + | ||
204 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
205 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
206 | + | ||
207 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
208 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
209 | + | ||
210 | +print(img2.shape) | ||
211 | +plt.subplot(235), plt.imshow(img2) | ||
212 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
213 | + | ||
214 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
215 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
216 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
217 | +plt.show() | ||
218 | + | ||
219 | + | ||
220 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
221 | +print(cv2.__version__) |
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 1 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 1 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + ImageEnhance.Sharpness(img).enhance(5).save(new_file2) | ||
53 | + img = cv2.imread(j, 1) | ||
54 | + b, g, r = cv2.split(img) | ||
55 | + img = cv2.merge([r, g, b]) | ||
56 | + img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + f = np.fft.fft2(img) | ||
59 | + fshift = np.fft.fftshift(f) | ||
60 | + rows, cols = img.shape | ||
61 | + crow, ccol = rows//2, cols//2 | ||
62 | + d = l | ||
63 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + f_ishift = np.fft.ifftshift(fshift) | ||
65 | + img_back = np.fft.ifft2(f_ishift) | ||
66 | + img_back = np.abs(img_back) | ||
67 | + | ||
68 | + new_file3 = path_without_extension + '(2)' + extension | ||
69 | + cv2.imwrite(new_file3, img_back) | ||
70 | + | ||
71 | +for i in valid_dirList: | ||
72 | + print(i) | ||
73 | + # filelist에는 "사진 파일들의 리스트" | ||
74 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
75 | + filelist = glob(i+'\\*') | ||
76 | + | ||
77 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
78 | + before_last_path, last = os.path.split(i) | ||
79 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
80 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
81 | + new_dir = os.path.join(before_last, last) | ||
82 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
83 | + print(new_dir) | ||
84 | + os.makedirs(new_dir, exist_ok=True) | ||
85 | + | ||
86 | + for j in filelist: | ||
87 | + img = im.open(j) | ||
88 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
89 | + img.save(new_file) | ||
90 | + | ||
91 | +for i in test_dirList: | ||
92 | + print(i) | ||
93 | + # filelist에는 "사진 파일들의 리스트" | ||
94 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
95 | + filelist = glob(i+'\\*') | ||
96 | + | ||
97 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
98 | + before_last_path, last = os.path.split(i) | ||
99 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
100 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
101 | + new_dir = os.path.join(before_last, last) | ||
102 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
103 | + print(new_dir) | ||
104 | + os.makedirs(new_dir, exist_ok=True) | ||
105 | + | ||
106 | + for j in filelist: | ||
107 | + img = im.open(j) | ||
108 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
109 | + img.save(new_file) | ||
110 | + | ||
111 | + | ||
112 | +def printMatrix(a): | ||
113 | + m = len(a) | ||
114 | + n = len(a[0]) | ||
115 | + for i in range(m): | ||
116 | + for j in range(n): | ||
117 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
118 | + print() | ||
119 | + print() | ||
120 | + | ||
121 | + | ||
122 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
123 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
124 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
125 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
126 | +# image_pil = im.open('n04461696_3346.png') | ||
127 | +# # image_pil.show() | ||
128 | +# img1 = np.array(image_pil) | ||
129 | +# print(img1.shape) | ||
130 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
131 | + | ||
132 | + | ||
133 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
134 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
135 | +print(img0.shape) | ||
136 | +# plt.subplot(211), plt.imshow(img0) | ||
137 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
138 | + | ||
139 | +# plt.subplot(212), plt.imshow(image_pil) | ||
140 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
141 | +# plt.show() | ||
142 | + | ||
143 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
144 | +img2 = img1 | ||
145 | +i = 0 | ||
146 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
147 | + | ||
148 | +# Fourier Transform을 적용. | ||
149 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
150 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
151 | + | ||
152 | +for img in img1: | ||
153 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
154 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
155 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
156 | + fshift = np.fft.fftshift(f) | ||
157 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
158 | + | ||
159 | + print(img.shape, fshift.shape) | ||
160 | + rows, cols = img.shape | ||
161 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
162 | + | ||
163 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
164 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
165 | + d = 1 | ||
166 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
167 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
168 | + | ||
169 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
170 | + f_ishift = np.fft.ifftshift(fshift) | ||
171 | + img_back = np.fft.ifft2(f_ishift) | ||
172 | + img_back = np.abs(img_back) | ||
173 | + img2[i] = img_back | ||
174 | + i += 1 | ||
175 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
176 | + img_new = np.uint8(img_back) | ||
177 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
178 | + # plt.subplot(231), plt.imshow(img) | ||
179 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
180 | + | ||
181 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
182 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
183 | + | ||
184 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
185 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
186 | + | ||
187 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
188 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
189 | + | ||
190 | + # plt.subplot(236), plt.imshow(thresh) | ||
191 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
192 | + # plt.show() | ||
193 | + | ||
194 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
195 | +printMatrix(img2[:, :, 0]) | ||
196 | +printMatrix(img2[:, :, 1]) | ||
197 | +printMatrix(img2[:, :, 2]) | ||
198 | + | ||
199 | +plt.subplot(231), plt.imshow(img0) | ||
200 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
201 | + | ||
202 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
203 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
204 | + | ||
205 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
206 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
207 | + | ||
208 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
209 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
210 | + | ||
211 | +print(img2.shape) | ||
212 | +plt.subplot(235), plt.imshow(img2) | ||
213 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
214 | + | ||
215 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
216 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
217 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
218 | +plt.show() | ||
219 | + | ||
220 | + | ||
221 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
222 | +print(cv2.__version__) |
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 1 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 1 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + ImageEnhance.Sharpness(img).enhance(5).save(new_file2) | ||
53 | + # img = cv2.imread(j, 1) | ||
54 | + # b, g, r = cv2.split(img) | ||
55 | + # img = cv2.merge([r, g, b]) | ||
56 | + # img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + # f = np.fft.fft2(img) | ||
59 | + # fshift = np.fft.fftshift(f) | ||
60 | + # rows, cols = img.shape | ||
61 | + # crow, ccol = rows//2, cols//2 | ||
62 | + # d = l | ||
63 | + # fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + # f_ishift = np.fft.ifftshift(fshift) | ||
65 | + # img_back = np.fft.ifft2(f_ishift) | ||
66 | + # img_back = np.abs(img_back) | ||
67 | + | ||
68 | + # new_file3 = path_without_extension + '(2)' + extension | ||
69 | + # cv2.imwrite(new_file3, img_back) | ||
70 | + | ||
71 | +for i in valid_dirList: | ||
72 | + print(i) | ||
73 | + # filelist에는 "사진 파일들의 리스트" | ||
74 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
75 | + filelist = glob(i+'\\*') | ||
76 | + | ||
77 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
78 | + before_last_path, last = os.path.split(i) | ||
79 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
80 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
81 | + new_dir = os.path.join(before_last, last) | ||
82 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
83 | + print(new_dir) | ||
84 | + os.makedirs(new_dir, exist_ok=True) | ||
85 | + | ||
86 | + for j in filelist: | ||
87 | + img = im.open(j) | ||
88 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
89 | + img.save(new_file) | ||
90 | + | ||
91 | +for i in test_dirList: | ||
92 | + print(i) | ||
93 | + # filelist에는 "사진 파일들의 리스트" | ||
94 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
95 | + filelist = glob(i+'\\*') | ||
96 | + | ||
97 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
98 | + before_last_path, last = os.path.split(i) | ||
99 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
100 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
101 | + new_dir = os.path.join(before_last, last) | ||
102 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
103 | + print(new_dir) | ||
104 | + os.makedirs(new_dir, exist_ok=True) | ||
105 | + | ||
106 | + for j in filelist: | ||
107 | + img = im.open(j) | ||
108 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
109 | + img.save(new_file) | ||
110 | + | ||
111 | + | ||
112 | +def printMatrix(a): | ||
113 | + m = len(a) | ||
114 | + n = len(a[0]) | ||
115 | + for i in range(m): | ||
116 | + for j in range(n): | ||
117 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
118 | + print() | ||
119 | + print() | ||
120 | + | ||
121 | + | ||
122 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
123 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
124 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
125 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
126 | +# image_pil = im.open('n04461696_3346.png') | ||
127 | +# # image_pil.show() | ||
128 | +# img1 = np.array(image_pil) | ||
129 | +# print(img1.shape) | ||
130 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
131 | + | ||
132 | + | ||
133 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
134 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
135 | +print(img0.shape) | ||
136 | +# plt.subplot(211), plt.imshow(img0) | ||
137 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
138 | + | ||
139 | +# plt.subplot(212), plt.imshow(image_pil) | ||
140 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
141 | +# plt.show() | ||
142 | + | ||
143 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
144 | +img2 = img1 | ||
145 | +i = 0 | ||
146 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
147 | + | ||
148 | +# Fourier Transform을 적용. | ||
149 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
150 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
151 | + | ||
152 | +for img in img1: | ||
153 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
154 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
155 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
156 | + fshift = np.fft.fftshift(f) | ||
157 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
158 | + | ||
159 | + print(img.shape, fshift.shape) | ||
160 | + rows, cols = img.shape | ||
161 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
162 | + | ||
163 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
164 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
165 | + d = 1 | ||
166 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
167 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
168 | + | ||
169 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
170 | + f_ishift = np.fft.ifftshift(fshift) | ||
171 | + img_back = np.fft.ifft2(f_ishift) | ||
172 | + img_back = np.abs(img_back) | ||
173 | + img2[i] = img_back | ||
174 | + i += 1 | ||
175 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
176 | + img_new = np.uint8(img_back) | ||
177 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
178 | + # plt.subplot(231), plt.imshow(img) | ||
179 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
180 | + | ||
181 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
182 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
183 | + | ||
184 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
185 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
186 | + | ||
187 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
188 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
189 | + | ||
190 | + # plt.subplot(236), plt.imshow(thresh) | ||
191 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
192 | + # plt.show() | ||
193 | + | ||
194 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
195 | +printMatrix(img2[:, :, 0]) | ||
196 | +printMatrix(img2[:, :, 1]) | ||
197 | +printMatrix(img2[:, :, 2]) | ||
198 | + | ||
199 | +plt.subplot(231), plt.imshow(img0) | ||
200 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
201 | + | ||
202 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
203 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
204 | + | ||
205 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
206 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
207 | + | ||
208 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
209 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
210 | + | ||
211 | +print(img2.shape) | ||
212 | +plt.subplot(235), plt.imshow(img2) | ||
213 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
214 | + | ||
215 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
216 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
217 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
218 | +plt.show() | ||
219 | + | ||
220 | + | ||
221 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
222 | +print(cv2.__version__) |
1 | +""" | ||
2 | +# Fourier Transform(푸리에 변환) | ||
3 | + . 시간 도메인(X축)에서 표현된 신호(일반적인 파형 도표)를 주파수 도메인으로 변환. | ||
4 | + . 시간축이 제거되어 대상의 전체적인 특징을 파악할 수 있음. | ||
5 | + . 이미지에 적용이 되어 중심이 저주파 영역, 주변이 고주파 영역을 나타냄. | ||
6 | + . 푸리에 변환을 하여 저주파 또는 고주파를 제거하고 다시 역으로 이미지로 변환 함으로써 | ||
7 | + 이미지가공을 할 수 있음. | ||
8 | + (ex; 푸리에 변환 후 중심의 저주파를 제거하고 다시 Image로 전환 하면 이미지의 경계선만 남게 됨. | ||
9 | + 푸리에 변환 후 주변의 고주파를 제거하면 모아레 패턴(휴대폰으로 모니터를 찍었을 때 나타나는 현상) | ||
10 | + 을 제거할 수 있음.(모니터의 고주파를 제거함.) | ||
11 | + ) | ||
12 | +""" | ||
13 | + | ||
14 | +from PIL import ImageFilter | ||
15 | +from PIL import ImageEnhance | ||
16 | +import PIL.Image as im | ||
17 | +import cv2 | ||
18 | +import numpy as np | ||
19 | +from matplotlib import pyplot as plt | ||
20 | +from glob import glob | ||
21 | +import os | ||
22 | + | ||
23 | + | ||
24 | +test_dirList = glob('.\\CIFAR-10-origin-khu\\test\\*') | ||
25 | +train_dirList = glob('.\\CIFAR-10-origin-khu\\train\\*') | ||
26 | +valid_dirList = glob('.\\CIFAR-10-origin-khu\\valid\\*') | ||
27 | +SAVEPATH = '.\\CIFAR10-PILimageEnhance-sharpness(5)+2by2(middlewhite)' | ||
28 | +os.makedirs(SAVEPATH, exist_ok=True) | ||
29 | +k = 1 # fft한 후 가운데 픽셀 바꿀 값 | ||
30 | +l = 1 | ||
31 | +for i in train_dirList: | ||
32 | + print(i) | ||
33 | + # filelist에는 "사진 파일들의 리스트" | ||
34 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
35 | + filelist = glob(i+'\\*') | ||
36 | + | ||
37 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
38 | + before_last_path, last = os.path.split(i) | ||
39 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
40 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
41 | + new_dir = os.path.join(before_last, last) | ||
42 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
43 | + print(new_dir) | ||
44 | + os.makedirs(new_dir, exist_ok=True) | ||
45 | + | ||
46 | + for j in filelist: | ||
47 | + img = im.open(j) | ||
48 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
49 | + img.save(new_file) | ||
50 | + path_without_extension, extension = os.path.splitext(new_file) | ||
51 | + new_file2 = path_without_extension + '(1)' + extension | ||
52 | + img.filter(ImageFilter.SHARPEN).save(new_file2) | ||
53 | + # img = cv2.imread(j, 1) | ||
54 | + # b, g, r = cv2.split(img) | ||
55 | + # img = cv2.merge([r, g, b]) | ||
56 | + # img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | ||
57 | + | ||
58 | + # f = np.fft.fft2(img) | ||
59 | + # fshift = np.fft.fftshift(f) | ||
60 | + # rows, cols = img.shape | ||
61 | + # crow, ccol = rows//2, cols//2 | ||
62 | + # d = l | ||
63 | + # fshift[crow-d:crow+d, ccol-d:ccol+d] = k | ||
64 | + # f_ishift = np.fft.ifftshift(fshift) | ||
65 | + # img_back = np.fft.ifft2(f_ishift) | ||
66 | + # img_back = np.abs(img_back) | ||
67 | + | ||
68 | + # new_file3 = path_without_extension + '(2)' + extension | ||
69 | + # cv2.imwrite(new_file3, img_back) | ||
70 | + | ||
71 | +for i in valid_dirList: | ||
72 | + print(i) | ||
73 | + # filelist에는 "사진 파일들의 리스트" | ||
74 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
75 | + filelist = glob(i+'\\*') | ||
76 | + | ||
77 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
78 | + before_last_path, last = os.path.split(i) | ||
79 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
80 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
81 | + new_dir = os.path.join(before_last, last) | ||
82 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
83 | + print(new_dir) | ||
84 | + os.makedirs(new_dir, exist_ok=True) | ||
85 | + | ||
86 | + for j in filelist: | ||
87 | + img = im.open(j) | ||
88 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
89 | + img.save(new_file) | ||
90 | + | ||
91 | +for i in test_dirList: | ||
92 | + print(i) | ||
93 | + # filelist에는 "사진 파일들의 리스트" | ||
94 | + # glob는 괄호 안 (어떤 path(폴더,파일 다 가능)명 조건) 에 맞는 "path명의 리스트" 뽑을때 | ||
95 | + filelist = glob(i+'\\*') | ||
96 | + | ||
97 | + # i는 '.\khu-machine-learning-competition\train\airplane'이므로 os.path.spilt(i) 결과는 ('.\khu-machine-learning-competition\train','airplane') 튜플 | ||
98 | + before_last_path, last = os.path.split(i) | ||
99 | + before2_last_path, before_last = os.path.split(before_last_path) | ||
100 | + # 해보니까 new_dir = os.path.join(before_last, last) 이건 new_dir = before_last+'\\'+ last 와 동일함... | ||
101 | + new_dir = os.path.join(before_last, last) | ||
102 | + new_dir = os.path.join(SAVEPATH, new_dir) | ||
103 | + print(new_dir) | ||
104 | + os.makedirs(new_dir, exist_ok=True) | ||
105 | + | ||
106 | + for j in filelist: | ||
107 | + img = im.open(j) | ||
108 | + new_file = new_dir+'\\'+os.path.basename(j) | ||
109 | + img.save(new_file) | ||
110 | + | ||
111 | + | ||
112 | +def printMatrix(a): | ||
113 | + m = len(a) | ||
114 | + n = len(a[0]) | ||
115 | + for i in range(m): | ||
116 | + for j in range(n): | ||
117 | + print('{:6.2f}'.format(a[i][j]), end=' ') | ||
118 | + print() | ||
119 | + print() | ||
120 | + | ||
121 | + | ||
122 | +# OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는다... ㅠ | ||
123 | +# colab에서는 openCV의 imshow 돌아가지 않는다. | ||
124 | +# 두번째 파라미터 1 의미는 cv2.IMREAD_COLOR cf) cv2.IMREAD_COLOR : 1, cv2.IMREAD_GRAYSCALE : 0, cv2.IMREAD_UNCHANGED : -1 | ||
125 | +# img = cv2.imread('cifar10-train-29.png', 1) | ||
126 | +# image_pil = im.open('n04461696_3346.png') | ||
127 | +# # image_pil.show() | ||
128 | +# img1 = np.array(image_pil) | ||
129 | +# print(img1.shape) | ||
130 | +img = cv2.imread('cifar10-train-29.png', 1) | ||
131 | + | ||
132 | + | ||
133 | +b, g, r = cv2.split(img) # 이미지를 b,g,r 채널로 분리 (opencv에서는 bgr순서) | ||
134 | +img0 = cv2.merge([r, g, b]) # r,g,b 순서로 병합 | ||
135 | +print(img0.shape) | ||
136 | +# plt.subplot(211), plt.imshow(img0) | ||
137 | +# plt.title('Input Image_cv2'), plt.xticks([]), plt.yticks([]) | ||
138 | + | ||
139 | +# plt.subplot(212), plt.imshow(image_pil) | ||
140 | +# plt.title('Input Image_PIL'), plt.xticks([]), plt.yticks([]) | ||
141 | +# plt.show() | ||
142 | + | ||
143 | +img1 = np.array([img0[:, :, 0], img0[:, :, 1], img0[:, :, 2]]) | ||
144 | +img2 = img1 | ||
145 | +i = 0 | ||
146 | +# img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # color->gray로 변환 | ||
147 | + | ||
148 | +# Fourier Transform을 적용. | ||
149 | +# 적용을 하면 0, 0, 즉 화면 좌측상단점이 중심이고, 거기에 저주파가 모여 있음. | ||
150 | +# 분석을 용이하게 하기 위해 0, 0을 이미지의 중심으로 이동 시키고 Log Scaling을 하여 분석이 용이한 결과값으로 변환 | ||
151 | + | ||
152 | +for img in img1: | ||
153 | + f = np.fft.fft2(img) # 이미지에 푸리에 변환 적용 | ||
154 | + # 분석을 용이하게 하기 위해 주파수가 0인 부분을 중앙에 위치시킴. 중앙에 저주파가 모이게 됨. | ||
155 | + magnitude_spectrum_no_shift = 20*np.log(np.abs(f)) | ||
156 | + fshift = np.fft.fftshift(f) | ||
157 | + magnitude_spectrum = 20*np.log(np.abs(fshift)) # spectrum 구하는 수학식. | ||
158 | + | ||
159 | + print(img.shape, fshift.shape) | ||
160 | + rows, cols = img.shape | ||
161 | + crow, ccol = rows//2, cols//2 # 이미지의 중심 좌표 | ||
162 | + | ||
163 | + # 중앙에서 10X10 사이즈의 사각형의 값을 1로 설정함. 중앙의 저주파를 모두 제거 | ||
164 | + # 저주파를 제거하였기 때문에 배경이 사라지고 경계선만 남게 됨. | ||
165 | + d = 1 | ||
166 | + fshift[crow-d:crow+d, ccol-d:ccol+d] = 1 | ||
167 | + aft_magnitude_spectrum = 20*np.log(np.abs(fshift)) | ||
168 | + | ||
169 | + # 푸리에 변환결과를 다시 이미지로 변환 | ||
170 | + f_ishift = np.fft.ifftshift(fshift) | ||
171 | + img_back = np.fft.ifft2(f_ishift) | ||
172 | + img_back = np.abs(img_back) | ||
173 | + img2[i] = img_back | ||
174 | + i += 1 | ||
175 | + # threshold를 적용하기 위해 float type을 int type으로 변환 | ||
176 | + img_new = np.uint8(img_back) | ||
177 | + ret, thresh = cv2.threshold(img_new, 20, 255, cv2.THRESH_BINARY) | ||
178 | + # plt.subplot(231), plt.imshow(img) | ||
179 | + # plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
180 | + | ||
181 | + # plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
182 | + # plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
183 | + | ||
184 | + # plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
185 | + # plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
186 | + | ||
187 | + # plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
188 | + # plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
189 | + | ||
190 | + # plt.subplot(236), plt.imshow(thresh) | ||
191 | + # plt.title('Threshold With FT'), plt.xticks([]), plt.yticks([]) | ||
192 | + # plt.show() | ||
193 | + | ||
194 | +img2 = np.transpose(img2, (1, 2, 0)) | ||
195 | +printMatrix(img2[:, :, 0]) | ||
196 | +printMatrix(img2[:, :, 1]) | ||
197 | +printMatrix(img2[:, :, 2]) | ||
198 | + | ||
199 | +plt.subplot(231), plt.imshow(img0) | ||
200 | +plt.title('Input Image'), plt.xticks([]), plt.yticks([]) | ||
201 | + | ||
202 | +plt.subplot(232), plt.imshow(magnitude_spectrum_no_shift) | ||
203 | +plt.title('noShift_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
204 | + | ||
205 | +plt.subplot(233), plt.imshow(magnitude_spectrum) | ||
206 | +plt.title('Spectrum'), plt.xticks([]), plt.yticks([]) | ||
207 | + | ||
208 | +plt.subplot(234), plt.imshow(aft_magnitude_spectrum) | ||
209 | +plt.title('aft_Spectrum'), plt.xticks([]), plt.yticks([]) | ||
210 | + | ||
211 | +print(img2.shape) | ||
212 | +plt.subplot(235), plt.imshow(img2) | ||
213 | +plt.title('FT'), plt.xticks([]), plt.yticks([]) | ||
214 | + | ||
215 | +# plt.subplot(236), plt.imshow(im.fromarray( | ||
216 | +# img0).filter(ImageFilter.FIND_EDGES)) | ||
217 | +# plt.title('ImageFilter.CONTOUR'), plt.xticks([]), plt.yticks([]) | ||
218 | +plt.show() | ||
219 | + | ||
220 | + | ||
221 | +# im.fromarray(img2).save("cifar10-train-16513 (2)-1.png") | ||
222 | +print(cv2.__version__) |
File mode changed
This diff could not be displayed because it is too large.
-
Please register or login to post a comment