image processing - 실습 3주차
average filter
- image를 부드럽게 해주는 효과로
-
잡음을 제거하는데 사용된다.
- python 코드
import cv2
import numpy as np
def my_average_filter_3x3(src):
mask = np.array([[1/9,1/9,1/9],
[1/9,1/9,1/9],
[1/9,1/9,1/9]])
dst = cv2.filter2D(src,-1,mask)
return dst
if __name__ == '__main__':
src = cv2.imread('../imgs/Lena.png',cv2.IMREAD_GRAYSCALE)
dst = my_average_filter_3x3(src)
cv2.imshow('original',src)
cv2.imshow('average ',dst)
cv2.waitKey()
cv2.destroyAllWindows()


보면 합이 1인것을 확인할 수 있는데 이것은 밝기를 유지해준다는 의미이다.
합이 1보다 작으면 원래 사진보다 더 어두워지게 되고 1보다 크면 원래 사진보다 밝아지게 된다.
sharpening filter
-
image를 선명하게 해주는 효과
-
예시 python 코드
def my_shaprpening_filter_3x3(src):
mask = np.array([[-1/9,-1/9,-1/9],
[-1/9,17/9,-1/9],
[-1/9,-1/9,-1/9]])
dst = cv2.filter2D(src,-1,mask)
return dst



padding
: 실제 이미지에는 없는 가장자리 부분을 채우는 역할을 한다.
- zero padding
- 단순히 0으로 채운다.
- repetition padding
- 가장자리의 값을 복사해온다.
def my_padding(src,pad_shape, pad_type='zero'):
(h,w) = src.shape
(p_h,p_w) = pad_shape
pad_img = np.zeros((h+2*p_h, w+2*p_w))
pad_img[p_h:p_h+h,p_w:p_w+w] = src
if pad_type == 'repetition':
print('repetition padding')
#up
pad_img[:p_h,p_w:p_w+w] = src[0,:]
#down
pad_img[p_h+h:,p_w:p_w+w] = src[h-1,:]
#left
pad_img[:,:p_w] = pad_img[:,p_w:p_w+1]
#right
pad_img[:,p_w+w:] = pad_img[:,p_w+w-1:p_w+w]
else :
print('zero padding')
return pad_img
padding으로 만들 부분

