์ค๋ ๋งค์ง์์ด๋ฅผ ์ฌ์ฉํด์ผ ํ ์ผ(?)์ด ์์๋ค. ํ์ง๋ง ๋๋ ๋งค์ง์์ด๋ฅผ ์ ํ ํ ์ค ๋ชจ๋ฅธ๋ค. ํ์ง๋ง ๊ณฐ๊ณฐํ ์๊ฐํด๋ณด๋ ๋งค์ง์์ด๊ฐ ๋จ์ํ ์ด์ ์ ์กฐ์ ํด์ ๋ณด๋ ๊ฒ์ด๋ผ๋ฉด, ์ผ์ชฝ ๋์ผ๋ก ๋ณด๋ ์ด๋ฏธ์ง์ ์ค๋ฅธ์ชฝ ๋์ผ๋ก ๋ณด๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ ํ ๊ฒน์ณ๋ณด๋ ๊ฒ์ด ์ ๋ถ๋ผ๋ฉด, ๊ตฌํ ๋ชปํ ๊ฒ๋ ์๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋ฌธ์ ๋ ๋ ๋์ด ๊ฐ๊ฐ ๋ณด๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ๋์์ ์ด๋ป๊ฒ ์กฐํฉ๋๊ธธ๋ ๋ด๊ฐ ํ์ฌ ์ฅ๋ฉด์ ๋ณผ ์ ์๋ ๊ฒ์ธ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ด๋ค.
๋์ผ๋ก ๋ค์ด์ค๋ ๋น์ ํผํฉํ๋๊ฑฐ๋๊น ๊ทธ๋ฅ ๋ํ๊ฑฐ๋, ๋ ์์์ ํ๊ท ์ ๋ด์ผํ๋ ๊ฒ ์๋๊ฐ ํ ์๋ ์๋ค. ํ์ง๋ง ๋งค์ง์์ด(๋ฟ๋ง ์๋๋ผ 3D์ํ, VR ๋ฑ)๋ ์ฐ๋ฆฌ ๋๊ฐ ์์ชฝ ๋์ด ๋ฐ์๋ค์ด๋ ์ด๋ฏธ์ง์ ์ฐจ์ด๋ฅผ ์ด์ฉํ ๊ฒฐ๊ณผ์ด๋ค. ์ฐ๋ฆฌ ๋์ ๊ฐ๊ฒฉ์ ๋๊ณ ์์นํด ์๊ธฐ ๋๋ฌธ์, ๋ฐ์๋ค์ด๋ ์ด๋ฏธ์ง์ ์ฐจ์ด๊ฐ ์๊ณ , ์ฐ๋ฆฌ ๋๋ ๊ฑฐ๋ฆฌ๊ฐ์ ํ์ ์ ์ํด ์ด ์ฐจ์ด๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ณ์ฐํด ์ ์ฒด์ ์ธ ๊ณต๊ฐ์ ์ธ์ํ ์ ์๊ฒ๋ ํ๋ค. ๊ฒฐ๊ตญ ๋ํ๊ฑฐ๋ ํ๊ท ์ ๋ด๋ ๊ฒ ๋ณด๋ค๋ ๋์ ์๋์๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ ๋, ๋ ์ด๋ฏธ์ง์ ์ฐจ์ด๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค. ์ ์์์ ์ฐธ๊ณ ํ๋ฉด ๋ ์ดํด๊ฐ ์ฌ์ธ ๊ฒ์ด๋ค.
๋ฐฉํฅ์ ์ ํ๊ณ ๊ตฌํ์ ์ํด ๊ฒ์ํด๋ณด๋ค๊ฐ ๋งค์ง์์ด๋ฅผ ๊ฐ๋จํ๊ฒ ํ์ธํ๋ ๋ฐฉ๋ฒ ์ค, ํฌํ ์ต์์ ์ด๋ฏธ์ง๋ฅผ ๋ณต์ฌํ์ฌ ํผํฉ ๋ชจ๋๋ฅผ '์ฐจ์ด'๋ก ๋๊ณ ํฉ์ณ์ ๋ณด๋ฉด ์จ๊ฒจ์ง ๊ทธ๋ฆผ์ด ๋ณด์ธ๋ค๋ ๊ธ์ด ์์๋ค. ์ด ๊ฒ์ด ๊ตฌํ์ ๋จ์๊ฐ ๋ ๊น ์ถ์ด Photoshop์ ๋ํ๋จผํธ๋ฅผ ์ฐพ์๋ดค๋ค.
Difference
Looks at the color information in each channel and subtracts either the blend color from the base color or the base color from the blend color, depending on which has the greater brightness value. Blending with white inverts the base color values; blending with black produces no change.
๊ณต์ ๋ฌธ์ ์ค๋ช ์ ๊ทธ๋๋ก ๊ตฌํํด๋ณด์๋ค. ๋งค์ง ์์ด ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ก 5ํฝ์ ์ฉ ๋ฐ์ด ๊ฒน์น๋ค. ๊ฒน์น๋ ๋ถ๋ถ์ ํฝ์ ์ฐจ์ด์ ์ ๋๊ฐ์ด๋ค. ์๋์๋ ๊ทธ ๊ฒฐ๊ณผ์ธ๋ฐ, ์๊ฐ๋๋ ๋๋ก ์ง๊ด์ ์ผ๋ก ์์ฑํ ์ฝ๋๋ผ ๊ฒฐ๊ณผ๋ฌผ์ด ๋๋ ทํ์ง๋ ์๊ณ , ํจ์จ์ ์ด์ง๋ ์๊ณ , ์ฌ์ค ์ด๊ฒ ๋ง๋ ๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ์กฐ๊ธ ๋ ์ฐพ์๋ณด๋ฉฐ ๋งค์ง์์ด ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ๋ฉด ๋งค์ง์์ด ์์์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์ ํธ๋ฆฌํฐ๋ก ๋ง๋ค์ด๋ด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
import numpy as np
import cv2
MOVING_SIZE = 5
# 01. ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์จ๋ค.
left_img = cv2.imread("img1.png", 1)
right_img = cv2.imread("img1.png", 1)
height, width, _ = left_img.shape
# 02. ์ด๋ฏธ์ง๋ฅผ 5ํฝ์
๋จ์๋ก ๊ฒน์ณ๋ณด์.
result_img = np.zeros((height, width * 2, 3), dtype=np.uint8)
for d in range(width-1, 0, -MOVING_SIZE):
for y in range(height):
# ์ผ์ชฝ ๋ถ๋ถ
for x in range(0, width - d):
result_img[y][x] = left_img[y][x]
# ๊ฒน์น ๋ถ๋ถ
for x in range(width - d, width):
result_img[y][x] = abs(left_img[y][x] - right_img[y][x - width + d])
# ์ค๋ฅธ์ชฝ ๋ถ๋ถ
for x in range(width, width + width - d):
result_img[y][x] = right_img[y][x - width + d]
# ๋๋จธ์ง ๋ถ๋ถ(๊ฒ์ )
for x in range(width + width - d, width + width):
result_img[y][x] = 0
# 03. ๋งค ์ด๋ฏธ์ง๋ฅผ ํ์ผ๋ก ๊ธฐ๋กํ๋ค.
# cv2.imwrite(f"page{d}.png", result_img)\
'๐ป > ๋ฉํฐ๋ฏธ๋์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ ๋น์ ] Image Segmentation - Clustering (0) | 2021.06.07 |
---|---|
[์ปดํจํฐ ๋น์ ] Image Segmentation (0) | 2021.06.07 |
[์ปดํจํฐ ๋น์ ] Optical Flow (0) | 2021.06.07 |
[์ปดํจํฐ ๋น์ ] Lucas-Kanade Alignment (0) | 2021.06.07 |
[์ปดํจํฐ๋น์ ] ์ํธ๋กํผ? (0) | 2021.04.21 |