v import cv 2 import numpy as np

  • Slides: 57
Download presentation

이미지 읽기 v이미지 흑백 출력 # 라이브러리를 임포트 import cv 2 import numpy as

이미지 읽기 v이미지 흑백 출력 # 라이브러리를 임포트 import cv 2 import numpy as np from matplotlib import pyplot as plt # 흑백 이미지로 로드 image = cv 2. imread(". /data/images/plane. jpg", cv 2. IMREAD_GRAYSCALE) # 이미지를 출력 plt. imshow(image, cmap="gray") plt. axis("off") plt. show() 4

이미지 읽기 v이미지 컬러 출력 #이미지를 컬러로 로드해서 출력 image_bgr = cv 2. imread(".

이미지 읽기 v이미지 컬러 출력 #이미지를 컬러로 로드해서 출력 image_bgr = cv 2. imread(". /data/images/plane. jpg", cv 2. IMREAD_COLOR) #색상 변환 image_rgb = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 RGB) # 이미지를 출력 plt. imshow(image_rgb) plt. axis("off") plt. show() 7

이미지 크기 변경 v 이미지 크기 변경 import cv 2 import numpy as np

이미지 크기 변경 v 이미지 크기 변경 import cv 2 import numpy as np from matplotlib import pyplot as plt # 흑백 이미지로 로드 image = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 이미지 크기를 64 x 64 픽셀로 변경 image_64 x 64 = cv 2. resize(image, (64, 64)) # 이미지를 출력 plt. imshow(image_64 x 64, cmap="gray"), plt. axis("off") plt. show() 10

이미지 선명도 조절 v 이미지 흐리게 하기 import cv 2 import numpy as np

이미지 선명도 조절 v 이미지 흐리게 하기 import cv 2 import numpy as np from matplotlib import pyplot as plt image = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 이미지를 흐리게 하기 image_blurry = cv 2. blur(image, (5, 5)) # 이미지를 출력 plt. imshow(image_blurry, cmap="gray"), plt. axis("off") plt. show() 14

이미지 선명도 조절 v 이미지 흐리게 하기 # 이미지를 흐리게 image_very_hundred = cv 2.

이미지 선명도 조절 v 이미지 흐리게 하기 # 이미지를 흐리게 image_very_hundred = cv 2. blur(image, (100, 100)) # 이미지를 출력 plt. imshow(image_very_hundred, cmap="gray") plt. xticks([]) plt. yticks([]) plt. show() 15

이미지 선명도 조절 v 이미지 흐리게 하기 # 커널을 생성 kernel = np. ones((5,

이미지 선명도 조절 v 이미지 흐리게 하기 # 커널을 생성 kernel = np. ones((5, 5)) / 25. 0 # 커널을 확인 print(kernel) # 커널을 적용 image_kernel = cv 2. filter 2 D(image, -1, kernel) plt. imshow(image_kernel, cmap="gray") plt. xticks([]) plt. yticks([]) plt. show() 16

이미지 선명도 조절 v 이미지 선명하게 하기 import cv 2 import numpy as np

이미지 선명도 조절 v 이미지 선명하게 하기 import cv 2 import numpy as np from matplotlib import pyplot as plt # 흑백 이미지로 로드 image = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 커널 생성 kernel = np. array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]]) # 커널을 적용해서 이미지를 선명하게 하기 image_sharp = cv 2. filter 2 D(image, -1, kernel) plt. imshow(image_sharp, cmap="gray"), plt. axis("off") plt. show() 19

이미지 대비 조절 v 이미지 대비 조절 import cv 2 import numpy as np

이미지 대비 조절 v 이미지 대비 조절 import cv 2 import numpy as np from matplotlib import pyplot as plt image = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 이미지 대비를 향상 image_enhanced = cv 2. equalize. Hist(image) plt. imshow(image_enhanced, cmap="gray"), plt. axis("off") plt. show() 22

이미지 대비 조절 v 이미지 대비 조절 image_bgr = cv 2. imread(". /data/images/plane. jpg")

이미지 대비 조절 v 이미지 대비 조절 image_bgr = cv 2. imread(". /data/images/plane. jpg") # YUV로 변경 image_yuv = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 YUV) # 히스토그램 평활화를 적용 image_yuv[: , 0] = cv 2. equalize. Hist(image_yuv[: , 0]) # RGB로 변경 image_rgb = cv 2. cvt. Color(image_yuv, cv 2. COLOR_YUV 2 RGB) plt. imshow(image_rgb), plt. axis("off") plt. show() 23

색상 구분 v 이미지에서 하나의 색상 구분 import cv 2 import numpy as np

색상 구분 v 이미지에서 하나의 색상 구분 import cv 2 import numpy as np from matplotlib import pyplot as plt # 이미지를 로드 image_bgr = cv 2. imread('. /data/images/plane_256 x 256. jpg') # BGR에서 HSV로 변환 image_hsv = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 HSV) # HSV에서 파랑 값의 범위를 정의 lower_blue = np. array([50, 100, 50]) upper_blue = np. array([130, 255]) # 마스크를 생성 mask = cv 2. in. Range(image_hsv, lower_blue, upper_blue) # 이미지에 마스크를 적용 image_bgr_masked = cv 2. bitwise_and(image_bgr, mask=mask) # BGR에서 RGB로 변환 image_rgb = cv 2. cvt. Color(image_bgr_masked, cv 2. COLOR_BGR 2 RGB) 25

이미지 임계처리 v 이미지 임계처리 import cv 2 import numpy as np from matplotlib

이미지 임계처리 v 이미지 임계처리 import cv 2 import numpy as np from matplotlib import pyplot as plt image_grey = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 적응적 임계처리를 적용 max_output_value = 255 neighborhood_size = 99 subtract_from_mean = 10 image_binarized = cv 2. adaptive. Threshold(image_grey, max_output_value, cv 2. ADAPTIVE_THRESH_GAUSSIAN_C, cv 2. THRESH_BINARY, neighborhood_size, subtract_from_mean) plt. imshow(image_binarized, cmap="gray"), plt. axis("off") plt. show() 29

이미지 임계처리 v 이미지 임계처리 # cv 2. ADAPTIVE_THRESH_MEAN_C를 적용 image_mean_threshold = cv 2.

이미지 임계처리 v 이미지 임계처리 # cv 2. ADAPTIVE_THRESH_MEAN_C를 적용 image_mean_threshold = cv 2. adaptive. Threshold(image_grey, max_output_value, cv 2. ADAPTIVE_THRESH_MEAN_C, cv 2. THRESH_BINARY, neighborhood_size, subtract_from_mean) # 이미지를 출력 plt. imshow(image_mean_threshold, cmap="gray"), plt. axis("off") plt. show() 31

배경 제거 v 배경 제거 import cv 2 import numpy as np from matplotlib

배경 제거 v 배경 제거 import cv 2 import numpy as np from matplotlib import pyplot as plt image_bgr = cv 2. imread('. /data/images/plane_256 x 256. jpg') image_rgb = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 RGB) # 배경의 사각형 좌표: 시작점의 x, 시작점의 y, 너비, 높이 rectangle = (0, 56, 256, 150) # 초기 마스크를 셍성 mask = np. zeros(image_rgb. shape[: 2], np. uint 8) # grab. Cut에 사용할 임시 배열을 생성 bgd. Model = np. zeros((1, 65), np. float 64) fgd. Model = np. zeros((1, 65), np. float 64) 33

배경 제거 v 배경 제거 # 마스크를 출력 plt. imshow(mask, cmap='gray'), plt. axis("off") plt.

배경 제거 v 배경 제거 # 마스크를 출력 plt. imshow(mask, cmap='gray'), plt. axis("off") plt. show() 35

배경 제거 v 배경 제거 # 마스크를 출력 plt. imshow(mask_2, cmap='gray'), plt. axis("off") plt.

배경 제거 v 배경 제거 # 마스크를 출력 plt. imshow(mask_2, cmap='gray'), plt. axis("off") plt. show() 36

경계선 감지 v 이미지 경계선 감지 import cv 2 import numpy as np from

경계선 감지 v 이미지 경계선 감지 import cv 2 import numpy as np from matplotlib import pyplot as plt image_gray = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 픽셀 강도의 중간값을 계산 median_intensity = np. median(image_gray) # 중간 픽셀 강도에서 위아래 1 표준 편차 떨어진 값을 임계값으로 지정 lower_threshold = int(max(0, (1. 0 - 0. 33) * median_intensity)) upper_threshold = int(min(255, (1. 0 + 0. 33) * median_intensity)) # 캐니 경계선 감지기를 적용 image_canny = cv 2. Canny(image_gray, lower_threshold, upper_threshold) plt. imshow(image_canny, cmap="gray") plt. axis("off") plt. show() 38

모서리 감지 v 이미지 모서리 감지 import cv 2 import numpy as np from

모서리 감지 v 이미지 모서리 감지 import cv 2 import numpy as np from matplotlib import pyplot as plt image_bgr = cv 2. imread(". /data/images/plane_256 x 256. jpg") image_gray = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 GRAY) image_gray = np. float 32(image_gray) # 모서리 감지 매개변수를 설정 block_size = 2 aperture = 29 free_parameter = 0. 04 # 모서리를 감지 detector_responses = cv 2. corner. Harris(image_gray, block_size, aperture, free_parameter) 41

모서리 감지 v 이미지 모서리 감지 # 모서리 표시를 부각 detector_responses = cv 2.

모서리 감지 v 이미지 모서리 감지 # 모서리 표시를 부각 detector_responses = cv 2. dilate(detector_responses, None) # 임계값보다 큰 감지 결과만 남기고 흰색으로 표시 threshold = 0. 02 image_bgr[detector_responses > threshold * detector_responses. max()] = [255, 255] # 흑백으로 변환 image_gray = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 GRAY) # 이미지를 출력 plt. imshow(image_gray, cmap="gray") plt. axis("off") plt. show() 42

모서리 감지 v 이미지 모서리 감지 # 가능성이 높은 모서리만 출력 plt. imshow(detector_responses, cmap='gray')

모서리 감지 v 이미지 모서리 감지 # 가능성이 높은 모서리만 출력 plt. imshow(detector_responses, cmap='gray') plt. axis("off") plt. show() 44

모서리 감지 v 이미지 모서리 감지 image_bgr = cv 2. imread('. /data/images/plane_256 x 256.

모서리 감지 v 이미지 모서리 감지 image_bgr = cv 2. imread('. /data/images/plane_256 x 256. jpg') image_gray = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 GRAY) # 감지할 모서리 개수 설정 corners_to_detect = 10 #모서리가 될 최소 품질(0 -1) minimum_quality_score = 0. 05 #모서리 사이의 최소 거리(유클리디안 거리) minimum_distance = 25 # 모서리를 감지 corners = cv 2. good. Features. To. Track(image_gray, corners_to_detect, minimum_quality_score, minimum_distance) corners = np. float 32(corners) 46

모서리 감지 v 이미지 모서리 감지 # 모서리마다 흰 원을 그림 for corner in

모서리 감지 v 이미지 모서리 감지 # 모서리마다 흰 원을 그림 for corner in corners: x, y = corner[0] cv 2. circle(image_bgr, (x, y), 10, (255, 255), -1) image_rgb = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 GRAY) plt. imshow(image_rgb, cmap='gray'), plt. axis("off") plt. show() 47

머신러닝 특성 만들기 v 머신러닝 특성 만들기 import cv 2 import numpy as np

머신러닝 특성 만들기 v 머신러닝 특성 만들기 import cv 2 import numpy as np from matplotlib import pyplot as plt image = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_GRAYSCALE) # 이미지를 10 x 10 픽셀 크기로 변환 image_10 x 10 = cv 2. resize(image, (10, 10)) print(image_10 x 10) #이미지 출력 plt. imshow(image_10 x 10, cmap="gray"), plt. axis("off") plt. show() 49

머신러닝 특성 만들기 v 머신러닝 특성 만들기 [[133 130 129 128 127] [135 131

머신러닝 특성 만들기 v 머신러닝 특성 만들기 [[133 130 129 128 127] [135 131 131 130 129 128 128] [134 132 131 130 129 128 130 133] [132 158 130 133 130 46 97 26 132 143] [141 36 54 91 9 9 49 144 179 41] [142 95 32 36 29 43 113 141 179 187] [141 124 26 25 132 135 151 175 174 184] [143 151 38 133 134 139 174 177 169 174] [155 141 135 137 152 169 168 179] [152 139 136 135 137 143 159 166 171 175]] 50

머신러닝 특성 만들기 v 머신러닝 특성 만들기 #일차원 벡터로 만들기 image_100 = image_10 x

머신러닝 특성 만들기 v 머신러닝 특성 만들기 #일차원 벡터로 만들기 image_100 = image_10 x 10. flatten() print(image_100) [133 130 129 128 127 135 131 131 130 129 128 128 134 132 131 130 129 128 130 133 132 158 130 133 130 46 97 26 132 143 141 36 54 91 9 9 49 144 179 41 142 95 32 36 29 43 113 141 179 187 141 124 26 25 132 135 151 175 174 184 143 151 38 133 134 139 174 177 169 174 155 141 135 137 152 169 168 179 152 139 136 135 137 143 159 166 171 175] 51

머신러닝 특성 만들기 v 머신러닝 특성 만들기 image_color = cv 2. imread(". /data/images/plane_256 x

머신러닝 특성 만들기 v 머신러닝 특성 만들기 image_color = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_COLOR) image_color_10 x 10 = cv 2. resize(image_color, (10, 10)) # 이미지 데이터를 1차원 벡터로 변환하고 출력 print(image_color_10 x 10. flatten()) [197 196 197 195 196 198 109 68 183 34 200 199 43 204 199 203 145 142 144 141 143 145 100 59 180 34 152 159 42 174 149 161 166 85 196 143 80 195 142 79 197 143 80 196 142 79 79 195 141 78 194 140 77 199 146 89 197 144 81 81 197 144 81 197 143 80 196 142 79 195 141 78 78 195 141 78 198 146 86 198 144 83 197 144 81 80 196 143 77 196 142 79 195 141 78 195 143 82 194 147 84 82 199 166 126 197 144 77 199 146 84 186 139 89 58 52 31 88 32 28 18 174 139 103 196 152 105 201 151 97 47 41 21 39 103 94 81 24 12 0 23 12 0 87 56 22 199 154 102 173 57 46 26 200 153 100 134 106 59 40 36 23 40 41 23 18 53 47 29 124 118 99 152 145 127 190 182 169 206 190 174 96 170 134 90 33 29 17 35 28 17 198 145 82 193 147 88 117 202 178 159 202 178 156 208 187 172 201 153 100 203 160 114 27 199 145 83 198 146 85 198 150 96 206 179 153 205 181 158 146 206 179 153 206 164 119 201 152 96 198 148 87 201 149 89 89 202 160 117 204 174 145 202 174 143 203 174 143 206 182 162 116 201 151 93 200 149 87 199 148 86 199 150 88 201 154 100 128 201 173 138 201 176 150 202 179 157] 52

평균 색을 특성으로 인코딩 v 평균 색을 특성으로 인코딩 ü 하나의 샘플에 대해 컬러

평균 색을 특성으로 인코딩 v 평균 색을 특성으로 인코딩 ü 하나의 샘플에 대해 컬러 채널마다 하나씩 3개의 특성값을 출력 ü 학습 알고리즘에서 컬러를 기반하여 이미지를 분류하는데 사용 import cv 2 import numpy as np from matplotlib import pyplot as plt image_bgr = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_COLOR) #각 채널의 평균을 계산 channels = cv 2. mean(image_bgr) # 파랑과 빨강을 변경(BGR에서 RGB로 변경) observation = np. array([(channels[2], channels[1], channels[0])]) # 채널 평균 값을 확인 print(observation) # 이미지를 출력 plt. imshow(observation), plt. axis("off") plt. show() 53

Color Histogram v 컬러 히스토그램 import cv 2 import numpy as np from matplotlib

Color Histogram v 컬러 히스토그램 import cv 2 import numpy as np from matplotlib import pyplot as plt import pandas as pd image_bgr = cv 2. imread(". /data/images/plane_256 x 256. jpg", cv 2. IMREAD_COLOR) image_rgb = cv 2. cvt. Color(image_bgr, cv 2. COLOR_BGR 2 RGB) # RGB 채널 값을 확인 print(image_rgb[0, 0]) 55

Color Histogram v 컬러 히스토그램 [107 163 212] 57

Color Histogram v 컬러 히스토그램 [107 163 212] 57