์ฝ๋ฉ ์ ํ ๋ณด๋ค๊ฐ ์ข์ ๋ด์ฉ์ด ์์ด์ ์คํฌ๋ฉ
์ค๋๋ ์ฌ์ง๋ค์ด๋ ์ธํฐ๋ท์์ ๋๊ณ ๋๋ ์ฌ์ง์
์๋ ์ฌ์ง์ฒ๋ผ ๊นจ์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ JPEG๋ ๋์งํธ ํํ๊ฐ ์๊ธธ๊น?
๋ง์ฝ ์ค๋งํธํฐ์ผ๋ก ์ฐ์ 1000*1000px ์ฌ์ง์ ์ ๋ก๋ํ๋ ค๋ฉด ์ ์ฅ ๊ณต๊ฐ์ด ์ผ๋ง๋ ํ์ํ ๊น?
๋จผ์ ์์ ํ๋(ํ๋์ ํฝ์ )๋ฅผ ์ ์ฅํ๋ ค๋ฉด 3Byte์ ์ฉ๋์ด ํ์ํ๋ค.
ํ๋์ ํฝ์ ์๋
ํ๋์ RGB์์์ด ๋ค์ด ์๋๋ฐ
์ผ๋ฐ์ ์ผ๋ก RGB๋ Red, Green, Blue 3๊ฐ์ ์์์ ์กฐํฉํด์ผ ํ๋์ ์์์ด ๋์จ๋ค.
๋ฐ๋ผ์ ํ๋์ ๊ฐ๋ก ์ธ๋ก 1000ํฝ์ ์ธ ์ฌ์ง ํ ์ฅ์ ์ ์ฅํ๋๋ฐ์๋ ์ ์ด๋ 3mb์ ๊ณต๊ฐ์ด ํ์ํ๋ค๊ณ ๊ณ์ฐ ํด ๋ณผ ์ ์๋ค.
ํ๋์ ์ฌ์ง ์ฉ๋ = 1000*1000*3Byte = 3mb
๊ทผ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ธํฐ๋ท์ ์ฌ์ง์ ์ ๋ก๋ ํด ๋ณด๋ฉด?
ํจ์ฌ ์์ ์ฉ๋์ธ 126KB ์ผ๋ก ๋ฌ๋ค.
์์ผ๊น?
ํ์ ๋ ์ ์ ์ ์ฅ ๊ณต๊ฐ์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ค๊ณ ์์ค ์์ถ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ JPEG(์ ์ดํฉ) ์์ถ๋ฐฉ๋ฒ์ ์ดํด ๋ณด์
1. JPEG ์์ถ
JPEG๋ ์์ค ์์ถ์ด๋ผ๋ ๊ฑธ ํ๋๋ฐ, ์๋ ๊ทธ๋ฆผ์ฒ๋ผ JPEG ์ ์ฅ์ ํ์ํ ์์์ซ์์ ์์ ์ง์๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
์ฆ ์์ค ์์ถ์ด ๋ฐ๋ณต๋ ์๋ก ์์ ๊ฐ์ง์๊ฐ ์ ์ด์ง๋ฉด์ ์ฌ์ง์ด ์ ๋ช ํ์ง ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
2. RGB -> YCbCr
JPEG์ ํต์ฌ์ ์ธ๊ฐ ์๋ ฅ์ ํ์ ์ ์ด์ฉํ๋ค. ์ฌ๋ ๋์ ์๊ฐ๋ณด๋ค ๋ฉ์ฒญํ๋ค. ๊ทธ๋์ ๋ฐ๊ธฐ ๊ตฌ๋ถ์ ์ ํ๋๋ฐ ์ฌ์ธํ ์๊น ๊ตฌ๋ถ์ ์ ํ์ง ๋ชปํ๋ค.
์๋ ๋ ์์ ๋ถ๋ช ํ ๋ค๋ฅธ ์์ธ๋ฐ ์ฌ๋์ ์๋ ฅ์ ๋ณ ์ฐจ์ด๋ฅผ ๋๋ผ์ง ๋ชปํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง์ ๋ฐ๊ธฐ๋ ๊ทธ๋๋ก ๋๊ณ ์ด๋ฏธ์ง์ ์์ ๋ถ๋ถ๋ง ์ถ์ถํ๊ณ ์ธ์ ํ ํฝ์ ์ ๊ทธ๋ฅ ํ๋์ ์์ผ๋ก ์น ํด๋ฒ๋ฆฐ๋ค. ์ฆ, ์ด๋ฐ ์์ผ๋ก ์์ ๋ญ๊ฐ๋ฒ๋ ค๋ ์ฌ๋์ ๋์ ํฐ ์ฐจ์ด๋ฅผ ๋๋ผ์ง ๋ชปํ๋ค.
์๋ณธ์์๋ ์ด๋ ๊ฒ ์๊ธด ํฝ์ ์กฐ๊ฐ๋ค์ ์๋์ ๊ฐ์ด 4์์ญ์ผ๋ก ๋๋์ด ์กฐ๊ฐ์ด ๊ฐ์ง ํ๊ท ์์ 4๊ฐ์ง๋ก ์ธ์ ํ ์์๋ค์ ์ฑ์๋ฒ๋ฆฐ๋ค.
JPEG์ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ์ผ๋จ ์ด๋ฏธ์ง ์์์ ์๋ RGB ์ ๋ณด๋ฅผ YCbCr๋ก ๋ณํํด ์ค๋ค.
R : 130, G : 90, B : 62 ๊ฐ์ธ ๊ฐ์ ๋ธ๋ญ์ด ์๋ค.
RGB์์ R์ Red, G๋ Green, B๋ Blue์ ๋ํ๋ด๋ ๊ฐ์ผ๋ก ๊ฐ์์
๋ ๋๊ฐ 130๋งํผ, ๊ทธ๋ฆฐ์ด 90๋งํผ, ๋ธ๋ฃจ๊ฐ 62๋งํผ ํผํฉ๋์๋ค๋ ๋ป์ด๋ค.
ํ์ง๋ง ์ด๊ฑธ Y, Cb, Cr๋ก ๋ฐ๊ฟ ์ ์๋ค.
Y: ๋ฐ๊ธฐ
Cb: ์ด๋ก์์์ ํ๋์์ด ์ผ๋ง๋ ์์๋๊ฐ
Cr: ์ด๋ก์์์ ๋นจ๊ฐ์ด ์ผ๋ง๋ ์์๋๊ฐ?
ํ๋์ ์ด๋ฏธ์ง์์ ๋ฐ๊ธฐ, Cb, Cr ์ ์ถ์ถํ๋ฉด ์ด๋ ๊ฒ ์ธ ์ฅ์ ์ด๋ฏธ์ง๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
์ธ ์ฅ์ ์ด๋ฏธ์ง๋ฅผ ํ๋๋ก ๊ฒน์น๋ฉด, ์๋ณธ์ด๋ฏธ์ง๊ฐ ๋๋ค.
3. Downsampling(๋ค์ด์ํ๋ง)
RGB๋ฅผ Y, Cb, Cr๋ก ๋ถ๋ฆฌํ๊ณ Cr์์ 4*4 ํฝ์ ๋ธ๋ญ์ ํ๋ ํด ๋ณด์
๋น์ทํ ๊ณ์ด์ ๋ค์ํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
2ํฝ์ ์ฉ ์นธ์ ๋๋์ด ๊ฒฉ์๋ฅผ ๊ทธ๋ฆฌ๊ณ , ๊ฒฉ์ ์์ ์๋ ๋ถ๋ถ์ ๋ชจ๋ ๊ฐ์ ์์ผ๋ก ์น ํด์ ๋ญ๊ฐ๋ฒ๋ฆฐ๋ค.
๊ทธ๋ผ ์ฉ๋์ด 4๋ถ์ 1๋ก ์ค์ด ๋๋๋ฐ!?
ํ์ง๋ง ์ด๋ ๊ฒ ํด๋ ์๊ฐ๋ณด๋ค ์ ์ฅ์ฉ๋์ด ๋ง์ด ์ค์ด๋ค์ง๋ ์๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ DCT ์ Quantization์ ์จ์ ์ฉ๋์ ๋ ์ค์ฌ์ค๋ค.
4. DCT(์ด์ฐ์ฝ์ฌ์ธ๋ณํ) ์ Quantization(์์ํ)
์ด๋ฏธ์ง๋ฅผ 8 * 8 ํฝ์ ๋ธ๋ก๋ค๋ก ๋๋์ด์ ์ด ๋ธ๋ก์ ๊ฐ์ง๊ณ ์ฃผํ์ ๋จ์๋ก ํจํด์ ์ฐพ๋ ๊ฒ์ด DCT์ด๋ค.
์ด ์ฌ์ง์ ํ๋ํ๋ฉด, ๊ฐ๋ก์ , ์ธ๋ก์ , ์ ๋ฐ์ด ํจํด ๋ฑ ๊ฐ์ข ํจํด์ด ์๋ค.
๋๋ํ ์ฌ๋๋ค์ ํํ๊ฒ ์ฌ์ฉ๋๋ 64๊ฐ์ ํจํด ํ๋ฅผ ๋ง๋ค์ด ๋์๋ค.
ํ์ฌ ์ด๋ฏธ์ง๋ฅผ 64๊ฐ์ ํจํด๋ง์ ์ฌ์ฉํด์ ์ฌ๊ตฌ์ฑ ํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค.
์ ๋ฌธ ์ฉ์ด๋ก ๋งํ๋ฉด ํธ๋ฆฌ์ ๋ณํ(Fourier transform, FT)์ ํ๋ ๊ฒ์ด๋ค. ์๊ฐ์ด๋ ๊ณต๊ฐ์ ๋ํ ํจ์๋ฅผ ์๊ฐ ๋๋ ๊ณต๊ฐ ์ฃผํ์ ์ฑ๋ถ์ผ๋ก ๋ถํดํ๋ ๋ณํ์ ๋งํ๋ค. ์ด๊ฑธ ํ๋ ค๋ฉด ์ด๋ฏธ์ง๋ฅผ 8*8ํฝ์ ๋ก ์๋ฅด๊ณ , ํด๋น ๊ตฌ์ญ์ ํจํด๋ค์ ๊ฐ๊ฐ ๋ช๊ฐ์ฉ ์จ์ผ ์ฌํํ ์ ์๋์ง ๊ธฐ๋ก์ ํด ๋๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์นธ๋ง๋ค ๊ฐ ํจํด์ด ๋ช ๊ฐ์ฉ ํ์ํ์ง ๊ณ์ฐํด์ ์ซ์๋ฅผ ๋ฃ์ด ์ค๋ค.
์ด ์ํ์์ ๊ฐ์ฅ ์ฝ๊ฒ ์์ถํ๋ ๋ฐฉ๋ฒ์ ์ฐ์๋ ์ซ์๋ฅผ ์ง๋ถ์ํค๋ ๊ฒ์ด๋ค.
1 1 1 1 1 1 1 1 1 1 ์ด๋ ๊ฒ 1์ด ์ด ๊ฐ ์ด๋ฉด 1 * 10์ด๋ผ๊ณ ๋ง ์ ์ฅํด ์ฃผ๋ฉด ๋๋ค.
๋ ์ซ์๋ฅผ 10์ผ๋ก ๋๋ ์ค ๋ค์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผ ํด ๋ฒ๋ฆฐ๋ค. ๊ทธ๋ฌ๋ฉด ๋ง์ด ์ฌ์ฉ์ด ๋๋ ๊ฒ๋ค์ ์ซ์ ๋ณํ๊ฐ ๊ฑฐ์์์ผ๋ ๋ง์ด ์ฌ์ฉ๋์ง ์๋ ๊ฒ๋ค์ 0๊ฐ์ด ๋๋ค. 0์ด ๋ง์์ง๋ฉด ์์ถ์ด ์ฌ์์ ธ์ ์ฉ๋์ด ์ ์ด์ง๋ค.
๊ทผ๋ฐ ์์์ 10๊ฐ์ ์ซ์๋ก ์ผ๊ด์ ์ผ๋ก ๋๋ ๋ฒ๋ฆฌ๋ ๊ฒ๋ณด๋ค
์ค์ํ ํจํด๋ค์ 10๋ณด๋ค ๋ฎ์ ์ซ์, ์ ์ค์ํ ํจํด์ ๋์ ์ซ์๋ก ๋๋ ์ฃผ๋ฉด ์ด๋ฏธ์ง ํ์ง์ด๋ ์์ถ๋ฅ ์ด ๊ณ์ฐ๋๋ค.
๊ทธ๋์ ๋๋ํ ์ฌ๋๋ค์ด ๋ง๋ค์ด ๋์ quantization table์ด๋ผ๋ ํ ์ด๋ธ์ด ์๋ค.
์ด ํ ์ด๋ธ์ ์๋ ๊ฐ์ผ๋ก ๋๋์ด ์ง๋ฉด ์ค๋ฅธ์ชฝ ๋ฐ์ผ๋ก ๊ฐ์๋ก 0์ด ๋ง์ ์ง๋ค.
(์ค๋ฅธ์ชฝ ํ๋จ์ ์๋ ํจํด์ ๊ฑฐ์ ์ฐ์ง์ง ์๋ ํ ์ด๋ธ์)
์ด quantization ํ ์ด๋ธ๋ก ์ซ์๋ฅผ ๋๋๊ณ , ๋๋ ๊ฐ์ ์ฐจ๋ก๋ก ๋์ด ํ๋ค.
์ค๋ณต๋ ์ซ์๋ค์ * ๊ณฑ์ ๊ธฐํธ๋ก ์์ถ ํด ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ํํ๋ง ํ ์ด๋ธ์ ์ด์ฉํด์ ํํ๋ง ์ธ์ฝ๋ฉ์ ๊ฑฐ์น๋ฉด ์์ถ์ด ์๋ฃ ๋๋ค!
์ด๊ฒ ๋ฐ๋ก JPEG์ ์์ถ ์๊ณ ๋ฆฌ์ฆ
์ง๊ธ๊น์ง JPEG ์ฌ์ง์ ํ๋ํ๋ฉด ์ ๊ฒฉ์๋ฌด๋ฌ๋ก ๋์งํธ ํํ๊ฐ ์ผ์ด๋๋์ง ์์๋ณด์๋ค.
๊ฒฐ๋ก
8*8 ํฝ์ ๋จ์๋ก quantization์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ ๋ฒ ์์ถ์ด ์ผ์ด๋๋ฉด ์๋ณธ์ด๋ฏธ์ง๋ก ๋๋๋ฆฌ๊ธฐ ์ด๋ ต๋ค.
ํ๊ฒฝ ์ฌ์ง์ ๋ํ ์ผ์ด ๋ญ๊ฐ์ ธ๋ ์ด๋ฏธ์ง์ ๋ณ ์ฐจ์ด๊ฐ ์๋ค.
ํ์ง๋ง ๋ค๋ฃจ๋ ์ด๋ฏธ์ง๊ฐ ๋ก๊ณ , ํ ์คํธ ๋ฑ ๋ ์นด๋ก์ด ํจํด์ด ๋ง์ด ๋ค์ด๊ฐ๋ฉด
JPEG์ผ๋ก ์์ถํ์ ๋ ์ด๋ฏธ์ง๊ฐ ๋ ๋ง์ด ๊นจ์ง๋ค.