- Published on
Computer Vision 01) - Image Representation
- Author
- Name
- yceffort
Image Representation & Classification
Images as Grids of Pixels
import numpy as np
from skimage import io
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import cv2
import urllib
%matplotlib inline
๋จผ์ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์จ๋ค.
waymo_car_url = 'https://zdnet2.cbsistatic.com/hub/i/r/2018/01/22/e270d68c-c028-421a-bc5b-5d2a9a9458d1/resize/770xauto/50e9d2f0fc86841ba455489d50651291/google-waymo-self-driving-atlanta.png'
f = urllib.request.urlopen(waymo_car_url)
image = mpimg.imread(f)
print('Image dimensions:', image.shape)
Image dimensions: (410, 770, 4)
# ์ด๋ฏธ์ง๋ฅผ ํ์์ผ๋ก ๋ฐ๊พผ๋ค.
gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
plt.imshow(gray_image, cmap='gray')
# ํน์ ์ขํ์ grayscale
x = 400
y = 300
print(gray_image[y,x])
0.543404
# ๋งฅ์๋ฉ / ๋ฏธ๋๋ฉ grayscale
max_val = np.amax(gray_image)
min_val = np.amin(gray_image)
print('Max: ', max_val)
print('Min: ', min_val)
Max: 0.9646824
Min: 0.040556863
RGB colorspace
plt.imshow(image)
## ๊ฐ๊ฐ์ RGB์์ญ ํ๋ณด
r = image[:,:,0]
g = image[:,:,1]
b = image[:,:,2]
fx, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,10))
ax1.set_title('R channel')
ax1.imshow(r, cmap='gray')
ax2.set_title('G channel')
ax2.imshow(g, cmap='gray')
ax3.set_title('B channel')
ax3.imshow(b, cmap='gray')
Color Threshold, Bluescreen
ํ๋์ ํฌ๋ก๋งํค์ ์๋ ์ฌ์ง์ ํฉ์ฑํ๋ ๊ณผ์ ์ด๋ค.
cromakey_blue = 'https://ak5.picdn.net/shutterstock/videos/548875/thumb/1.jpg'
f = urllib.request.urlopen(cromakey_blue)
image = mpimg.imread(f, 0)
print('This image is:', type(image), 'with dimensions:', image.shape)
This image is: <class 'numpy.ndarray'> with dimensions: (480, 852, 3)
# ์ด๋ฏธ์ง ๋ณต์ฌ
image_copy = np.copy(image)
# BGR์ด๋ฏธ์ง๋ฅผ RGB๋ก ๋ณํ
image_copy = cv2.cvtColor(image_copy, cv2.COLOR_BGR2RGB)
# ๋ณต์ฌ๋ ์ด๋ฏธ์ง ๋ณด์ฌ์ฃผ๊ธฐ
plt.imshow(image_copy)
lower_blue = np.array([0,0,200])
upper_blue = np.array([250,250,255])
# ๋ง์คํน๋ ์์ญ์ ์ ํํ๋ค.
mask = cv2.inRange(image, lower_blue, upper_blue)
# ๋ง์คํน ์ด๋ฏธ์ง ํ์
plt.imshow(mask, cmap='gray')
# ์ด๋ฏธ์ง๋ฅผ ์นดํผํ๋ค์
masked_image = np.copy(image_copy)
# ๋ง์คํน ์์ญ์ ์ ์ธํ๊ณ ๋ชจ๋ ๊ฒ์ ์์ผ๋ก ๋ฐ๊พผ๋ค๋ฉด
masked_image[mask != 0] = [0, 0, 0]
plt.imshow(masked_image)
ํจ๊ณผ์ ์ผ๋ก ํ๋์ ์์ญ์ ์ ๊ฑฐํ ๊ฒ์ ์ ์ ์๋ค. ์ฌ๊ธฐ์ ๋ฐฐ๊ฒฝ์ ํฉ์ฑํด๋ณด์.
space_url = 'https://images.unsplash.com/photo-1496715976403-7e36dc43f17b?ixlib=rb-1.2.1&w=1000&q=80'
sf = urllib.request.urlopen(space_url)
image = np.asarray(bytearray(sf.read()), dtype="uint8")
background_image = cv2.imdecode(image, cv2.IMREAD_COLOR)
background_image = cv2.cvtColor(background_image, cv2.COLOR_BGR2RGB)
crop_background = background_image[0:480, 0:852]
# ์ด๋ฒ์ ๋ฐ๋๋ก ๋ง์คํน ํด์ผํ ์์ญ์ ๊ฒ์ ์์ผ๋ก ์ฒ๋ฆฌํ๋ค.
crop_background[mask == 0] = [0, 0, 0]
plt.imshow(crop_background)
# ๋ ์ด๋ฏธ์ง๋ฅผ ํฉ์น๋ฉด
complete_image = masked_image + crop_background
plt.imshow(complete_image)