영역 기반 처리 : 화소가 모인 특정 범위( 영역 )의 화소 배열을 기반으로 연산을 수행한다.
특정 범위( 규정된 영역 ) 내에서 연산을 하기 때문에 마스크 기반 처리라고도 한다.
마스크 기반 처리는 마스크 내의 원소값과 공간 영역에 있는 입력 영상의 화소값들을 대응되게 곱하여 출력 화소값을 계산하는 것을 말한다.
이러한 처리를 이미지의 모든 영역에 대해 이동하면서 수행하는 것을 회선( Convolution ) 이라고 한다.
이미지에 곱해지는 마스크를 커널, 윈도우, 필터 등의 이름으로 불린다
블러링은 영상에서 화소값이 급격하게 변하는 부분들을 감소시켜 점진적으로 변하게 함으로써 영상이 전체적으로 부드러운 느낌이 나게 하는 기술이다. 스무싱이라고 부르기도 한다.
마스크의 모든 값을 같게 구성하고 전체 원소의 합이 1이 되어야 입력 영상의 밝기가 출력 영상에서 유지된다.import cv2 import numpy as np ex_pixel = np.random.randint(255,size = (10,10)).astype(np.float32) print(ex_pixel) blur_mask = np.ones((3,3),np.float32)/9 print(cv2.filter2D(ex_pixel,-1,blur_mask).astype(np.uint8))
시각적 효과를 위한 그래프
=> 이미지 화소값이 점진적으로 변하였다.
=> 마스크의 사이즈가 커질 수록 화소값은 변화가 줄어들게 되고 이미지가 뿌옇게된다.
샤프닝은 입력 화소에서 이웃화소끼리 차이를 크게 되도록 출력 화소를 만들어서 날카로운 느낌이 나게 만든다.
세세한 부분이 강조되며 경계 부분에서 명암 대비가 증가된다.
마스크 중심 계수의 비중이 크면 출력 영상은 입력 영상의 형태를 유지한다.
마스크 원소의 전체 합이 1이 되어야 입력 영상의 밝기 손실이 없다.
ex2 = cv2.filter2D(ex_pixel,-1,blur_mask).astype(np.uint8) sharp_mask = np.ones((3,3),np.float32)*-1 sharp_mask[1,1] = 9 cv2.filter2D(ex2,-1,sharp_mask).astype(np.uint8)
시각적 효과를 위한 그래프
=> 블러링한 결과를 샤프닝 해보았다
=> 어두운 부분은 더욱 어둡게 밝은 부분은 더욱 밝게 해주며 경계부분에서는 0과 255 값이 출력되며 뚜렷한 명암대비를 보여준다.