728x90
반응형
1. 1~9 사이의 정수값으로 구성된 3x3 랜덤 필터를 만들어 적용해보시오
import numpy as np
import cv2
import matplotlib.pyplot as plt
image_color=cv2.imread('../images/cat.jpg')
print('image_color.shape =',image_color.shape)
image=cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)
print('image.shape =',image.shape)
np.random.seed(1)
filter=np.random.randint(1,10, size=(3,3,3))/9
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad.shape =', image_pad.shape)
convolution=np.zeros_like(image)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
window=image_pad[row:row+3, col:col+3]
convolution[row,col]=np.clip(np.sum(window*filter),0,255)
image=[image, convolution]
label=['gray','convolution']
plt.figure(figsize=(10,5))
for i in range(len(image)):
plt.subplot(1,2,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(image[i],cmap=plt.cm.gray)
plt.xlabel(label[i])
plt.show()
2. -9~9 사이의 정수값으로 구성된 3x3 랜덤 필터를 만들어 적용해보시오
import numpy as np
import cv2
import matplotlib.pyplot as plt
image_color=cv2.imread('../images/cat.jpg')
print('image_color.shape =',image_color.shape)
image=cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)
print('image.shape =',image.shape)
np.random.seed(1)
filter=np.random.randint(-9,10, size=(3,3,3))/9
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad.shape =', image_pad.shape)
convolution=np.zeros_like(image)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
window=image_pad[row:row+3, col:col+3]
convolution[row,col]=np.clip(np.sum(window*filter),0,255)
image=[image, convolution]
label=['gray','convolution']
plt.figure(figsize=(10,5))
for i in range(len(image)):
plt.subplot(1,2,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(image[i],cmap=plt.cm.gray)
plt.xlabel(label[i])
plt.show()
3. 0.0~1.0 사이의 실수값으로 구성된 3x3 랜덤 필터를 만들어 적용해보시오
import numpy as np
import cv2
import matplotlib.pyplot as plt
image_color=cv2.imread('../images/cat.jpg')
print('image_color.shape =',image_color.shape)
image=cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)
print('image.shape =',image.shape)
np.random.seed(1)
filter=np.random.random(size=(3,3))
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad.shape =', image_pad.shape)
convolution=np.zeros_like(image)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
window=image_pad[row:row+3, col:col+3]
convolution[row,col]=np.clip(np.sum(window*filter),0,255)
image=[image, convolution]
label=['gray','convolution']
plt.figure(figsize=(10,5))
for i in range(len(image)):
plt.subplot(1,2,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(image[i],cmap=plt.cm.gray)
plt.xlabel(label[i])
plt.show()
4. -1.0~1.0 사이의 실수값으로 구성된 3x3 랜덤 필터를 만들어 적용해보시오.
import numpy as np
import cv2
import matplotlib.pyplot as plt
image_color=cv2.imread('../images/cat.jpg')
print('image_color.shape =',image_color.shape)
image=cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)
print('image.shape =',image.shape)
np.random.seed(1)
filter=np.random.random(size=(3,3))*2-1/9
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad.shape =', image_pad.shape)
convolution=np.zeros_like(image)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
window=image_pad[row:row+3, col:col+3]
convolution[row,col]=np.clip(np.sum(window*filter),0,255)
image=[image, convolution]
label=['gray','convolution']
plt.figure(figsize=(10,5))
for i in range(len(image)):
plt.subplot(1,2,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(image[i],cmap=plt.cm.gray)
plt.xlabel(label[i])
plt.show()
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 6x6x2, 6x6x3 입력 이미지의 합성곱과 필터 늘리기 (0) | 2023.11.01 |
---|---|
[딥러닝] 3x3x2 입력 이미지의 합성곱 (0) | 2023.11.01 |
[딥러닝] 필터 역할 살펴보기(다양한 이미지 출력) (0) | 2023.11.01 |
[딥러닝] 필터 역할 살펴보기(컬러이미지로 적용하기) (0) | 2023.11.01 |
[딥러닝] 필터 역할 살펴보기(부드러운 이미지 추출하기) (0) | 2023.10.31 |