728x90
1. 블러처리 (이미지블러, 가우시안블러)
1. 이미지블러 cv2.blur() 함수활용
import cv2
import matplotlib.pyplot as plt
image_path = "./data/cat.png"
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image_blurry = cv2.blur(image, (5,5)) # cv2.blur() 를 활용함
# 33 55 77 # 블러강도를 나타냄
plt.imshow(image)
plt.show()
plt.imshow(image_blurry)
plt.show()

2. 가우시안블러 cv2.Gaussianblur() 함수활용
이걸 더 많이씀
import cv2
import matplotlib.pyplot as plt
import numpy as np
image_path = "./data/cat.png"
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image_g = cv2.GaussianBlur(image, (9,9), 0) # cv2.GaussianBlur() 를 사용함
# (9,9): 주변 커널수-> 세기조절이 됨
# 0 : 표준편차
plt.imshow(image)
plt.show()
plt.imshow(image_g)
plt.show()

2. 이미지 선명하게하기
import cv2
import matplotlib.pyplot as plt
import numpy as np
image_path = "./data/cat.png"
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
kernel_ = np.array([[0,-1,0],
[-1,5,-1],
[0,-1,0]
])
image_sharp = cv2.filter2D(image, -1, kernel_)
plt.imshow(image)
plt.show()
plt.imshow(image_sharp)
plt.show()

3. 이미지 대비높이기
1 . 그레이스케일 일때 : 히스토그램 평활화 cv2.equalizeHist()에 BGR2Gray 활용 :
import cv2
import matplotlib.pyplot as plt
import numpy as np
image_path = "./data/cat.png"
image = cv2.imread(image_path)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 단일 이미지에서만 적용가능!
image_enhanced = cv2.equalizeHist(image_gray)
plt.imshow(image_gray, 'gray')
plt.show()
plt.imshow(image_enhanced, 'gray')
plt.show()

2. 컬러일때 : RGB에 YUV를 추가함
import cv2
import matplotlib.pyplot as plt
import numpy as np
image_path = "./data/cat.png"
image = cv2.imread(image_path)
# RGB 타입으로 변경
image_org = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# YUV 타입으로 변경
image_yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
# 히스토그램 평활화 적용
image_yuv[:,:,0] = cv2.equalizeHist(image_yuv[:,:,0])
# YUV > RGB
image_rgb = cv2.cvtColor(image_yuv , cv2.COLOR_YUV2RGB)
plt.imshow(image_yuv)
plt.show()
plt.imshow(image_org)
plt.show()
plt.imshow(image_rgb)
plt.show()

4. 이진화(흑백)
import cv2
import matplotlib.pyplot as plt
import numpy as np
image_path = "./data/cat.png"
image = cv2.imread(image_path)
image_gray_01 = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 이미지 이진화
max_output_value = 255
neighborhood_size = 99
subtract_from_mean = 10
image_binarized = cv2.adaptiveThreshold(
image_gray_01,
max_output_value,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, # cv2.THRESH_BINARY_INV(반전)
neighborhood_size,
subtract_from_mean
)
plt.imshow(image_binarized, 'gray')
plt.show()

728x90
'ComputerVision > [CV]' 카테고리의 다른 글
[CV] 이미지 기본세팅 6 (머신러닝 특성 만들기-flatten()) (0) | 2023.06.08 |
---|---|
[CV] 이미지 기본세팅 4 (이미지 회전, 상하좌우반전) (1) | 2023.06.08 |
[CV] 이미지 기본세팅 2 (리사이징, 크롭) (0) | 2023.06.08 |
[CV] 이미지 기본세팅 1 (불러오기, 저장하기) (0) | 2023.06.07 |
[CV] SAM - Segment Anything Model by META (0) | 2023.04.06 |