잠토의 잠망경

[OpenCV] Sharpening 본문

공부/Python

[OpenCV] Sharpening

잠수함토끼 2019. 1. 2. 21:44

Sharpening

목적
1.영상을 선명하게

  1. edge검출
kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]])
dst = cv2.filter2D(src, -1, kernel)

응용

src = cv2.imread('circle.png')

# edge를 선명하게 함
dst0 = cv2.GaussianBlur(src, (5,5), 10,10) 

# 잡음을 제거한다.
dst1 = cv2.medianBlur(dst0, ksize=11)

# edge만 남기기
kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]])
dst = cv2.filter2D(src, -1, kernel)

dst2 = cv2.filter2D(dst1, -1, kernel)

sobel mask

목적: edge추출
장점: 노이즈에 강함

방법: 수직, 수평을 결합하여 추출
수직 마스크, 수평 마스크로 구분된다.

#수직 sobel_x
-1,0,1
-2,0,2
-1,0,1

#수평 sobel_y
1,2,1
0,0,0
-1,2,-1
src = cv2.imread('img.png')
sobel_x = cv2.Sobel(src, cv2.CV_64F, 1, 0, ksize=3)

sobel_y = cv2.Sobel(src, cv2.CV_64F, 0, 1, ksize=3)

sobel_x = cv2.convertScaleAbs(sobel_x)
sobel_y = cv2.convertScaleAbs(sobel_y)

img_sobel = cv2.addWeighted(sobel_x, 1, sobel_y, 1, 0)

laplacian

목적: edge를 찾는다.

ksize=-1 인 경우 아래와 같다.

0, 1, 0
1, -4, 1
0, 1, 0

src = cv2.imread('img.png', cv2.IMREAD_GRAYSCALE)

lap = cv2.Laplacian(src, cv2.CV_8U) # CV_8U를 변경하면서 봐야함

cv2.imshow('lap', lap)
Comments