즐거운프로그래밍

[딥러닝] 필터 역할 살펴보기 - 연습문제

수수께끼 고양이 2023. 11. 1. 11:29
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
반응형