less than 1 minute read


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()

image

image

보면 합이 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

image

imageimage


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으로 만들 부분

image

image