๐ŸŽž ์ ์ž๋กœ ๋ณด๋Š” ๋ฎค์ง ๋น„๋””์˜ค

์ด ๊ธ€์˜ ๋ชฉํ‘œ๋Š” ๋™์˜์ƒ์„ ์ ์ž ํŒจํ„ด ์ŠคํŠธ๋ฆผ (Braille Pattern Stream, โ จโ Žโ ขโ จโ €โ ™โ —โ “โ พโ €โ  โ ชโ “โ ชโ โ •โ ข)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ ๋ฌ˜ํ™”๋กœ ๋งŒ๋“œ๋Š” ๋™์˜์ƒ์ด๋‚˜ ์•„์Šคํ‚ค ์•„ํŠธ๋กœ ๋งŒ๋“œ๋Š” ๋™์˜์ƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹์„ ๊ฒƒ์ด๋‹ค (๋ฌผ๋ก  ์ ์ž๋Š” ASCII๊ฐ€ ์•„๋‹Œ Unicode์ด๋‹ค.) ์•„์ง ์ ์ž ๋™์˜์ƒ์ด ๋ฌด์Šจ ๋œป์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ์™„์„ฑ๋ณธ์„ ๋จผ์ € ๋ณด์ž.

์ž๋ง‰์„ ์ผœ๊ณ  5-10์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋œ๋‹ค. ์ž๋ง‰์ด 10MB๋ผ ๋กœ๋”ฉ์ด ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ ์ž๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค์Œ ์˜์ƒ์„ ๋ณด์ž.

์ ์ž ํŒจํ„ด ์ŠคํŠธ๋ฆผ์€ ๋ง ๊ทธ๋Œ€๋กœ ์—ฐ์†๋œ ํ˜•ํƒœ์˜ ์ ์ž ํŒจํ„ด์ด๊ธฐ์— ๋™์˜์ƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ  ์•„์˜ˆ ์ž๋ง‰์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๋„ฃ์–ด๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ์ž๋ง‰์ด์•ผ๋ง๋กœ ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ˆ˜๋‹จ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋•Œ๋ฌธ์— ์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋ฅผ ๋™์˜์ƒ์„ ๋ณ€ํ™˜ํ•ด์„œ YouTube ์ž๋ง‰์œผ๋กœ ๋„ฃ์–ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ ์žก์•˜๋‹ค. ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • OpenCV (C++ cv2) โ€” ๋™์˜์ƒ์„ ์—ฐ์†๋œ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
  • Python Image Library (Python 3 Pillow) โ€” ์ด๋ฏธ์ง€๋ฅผ ์ ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
  • Python Standard Library (sys, os, pathlib) โ€” ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
  • ffmpeg (optional) โ€” ๋™์˜์ƒ์„ ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ

anaclumos/video-in-dots์— ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ๋‹ค.


์„ค๊ณ„

๋ชฉํ‘œ๋ฅผ ์œ„ํ•ด์„œ ๋‹ค์Œ์˜ ๊ธฐ์ˆ ๋“ค์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

  1. ์ž„์˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 
  2. ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋ฅผ ์ž„์˜ ํฌ๊ธฐ์˜ ์ ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 
  3. ๋™์˜์ƒ์„ ํ”„๋ ˆ์ž„์˜ ์—ฐ์†์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ 
  4. 3๋ฒˆ์—์„œ ์–ป์€ ํ”„๋ ˆ์ž„์„ 2๋ฒˆ์—์„œ ์–ป์€ ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ •ํ˜•ํ™”๋œ ์ž๋ง‰์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 
  5. (๋‚˜์ค‘์— ์•Œ๊ฒŒ ๋จ) ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์„ ํŠน์ • ํฌ๊ธฐ ์ดํ•˜๋กœ ์••์ถ•ํ•˜๋Š” ๊ธฐ์ˆ 
  6. (๋‚˜์ค‘์— ์•Œ๊ฒŒ ๋จ) Dithering ์ฒ˜๋ฆฌ ๊ธฐ์ˆ 

1. ์ž„์˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜

๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋Š” 1๋น„ํŠธ ๊นŠ์ด์˜ ์ด๋ฏธ์ง€๋กœ, #000000์˜ ์™„๋ฒฝํ•œ ๊ฒ€์ •๊ณผ #FFFFFF์˜ ์™„๋ฒฝํ•œ ํ•˜์–‘์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๋Š” ์ด๋ฏธ์ง€์ด๋‹ค. ์ด ํ•˜์–‘๊ณผ ๊ฒ€์ •์„ ์ ์ž์—์„œ ๊ฐ ์ ์ด ์น ํ•ด์ง„ (raised) ์ƒํƒœ์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ƒํƒœ์— ๋Œ€์‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์ ์ž์˜ ๊ธฐ๋ณธ์ ์ธ ์—ญํ• ์€ ๊ฒฝ๊ณ„์„ ๊ณผ ํ˜•์ฒด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ํ‘๋ฐฑ์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค 1๋น„ํŠธ ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ ์ž๋ง‰์€ ๋Œ€๊ฐœ ์‹œ์Šคํ…œ ๊ธฐ๋ณธ๊ฐ’์ด ํ•˜์–€์ƒ‰์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ 1๋น„ํŠธ ํ‘๋ฐฑ ์ด๋ฏธ์ง€์—์„œ๋Š” ๋ฐ์€ ํ”ฝ์…€์ด 1์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ์ธก 3๊ฐœ์˜ ์ด๋ฏธ์ง€์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ๊ทธ ์‚ฌ์ด์˜ Gray ์—†์ด #000000 ๊ฒ€์ •๊ณผ #FFFFFF ํ•˜์–‘๋งŒ์œผ๋กœ ๊ฒฝ๊ณ„์„ ๊ณผ ํ˜•์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. DemonDeLuxe (Dominique Toussaint), CC BY-SA 3.0, via Wikimedia Commons.

์ œ์ผ ์™ผ์ชฝ์˜ ์˜๋ฏธ์ง€๋Š” 256๋‹จ๊ณ„์˜ grayscale ์ด๋ฏธ์ง€์ด๊ณ , ๋‚˜๋จธ์ง€ 3๊ฐœ์˜ ์ด๋ฏธ์ง€๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€์ด๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ตœ์ข…์ ์œผ๋กœ Floyd-Steinberg ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋…ธํฌ๋กฌ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

์ด๋ฏธ์ง€๋ฅผ 1๋น„ํŠธ ํ‘๋ฐฑ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•œ๋ฐ, ์ด ํ”„๋กœ์ ํŠธ๋Š” sRGB ์˜์—ญ๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ์— CIE 1931 sRGB์— ์ •์˜๋œ Luminance ๊ธฐ๋ฐ˜ ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ 

def grayscale(red: int, green: int, blue: int) -> int:
    return int(0.2126 * red + 0.7152 * green + 0.0722 * blue)

์—ฌ๊ธฐ์—์„œ red, green, blue๋Š” 0-255์˜ int์ด๋‹ค. ์ด ํ•ฉ์ด ์ž„์˜์˜ hex_threshold๋ฅผ ๋„˜์œผ๋ฉด ํ•ด๋‹น ํ”ฝ์…€์˜ ๊ฐ’์„ 1๋กœ ์„ค์ •ํ•œ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ชจ๋“  ํ”ฝ์…€๋งˆ๋‹ค ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋ฌผ๋ก  ์œ„์˜ grayscale ์ฝ”๋“œ๋Š” ์ด๋ก ์ ์ธ ๋ถ€๋ถ„์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•จ์ด๊ณ , ์ตœ์ข…์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด Python PIL์— ๋‚ด์žฅ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ํ›„์ˆ ํ•˜๊ฒ ์ง€๋งŒ, ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋””๋”๋ง ์ฒ˜๋ฆฌ๋„ ํ•ด์ค€๋‹ค.

resized_image_bw = resized_image.convert("1")  # apply dithering

2. ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋ฅผ ์ž„์˜ ํฌ๊ธฐ์˜ ์ ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

์œ„ ๋ฌธ์žฅ์€ 3๊ฐ€์ง€ ํŒŒํŠธ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. โ‘  1๋น„ํŠธ ๋ชจ๋…ธํฌ๋กฌ ์ด๋ฏธ์ง€๋ฅผ โ‘ก ์ž„์˜ ํฌ๊ธฐ์˜ โ‘ข ์ ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ . 1๋ฒˆ์€ ์™„๋ฃŒํ–ˆ์œผ๋‹ˆ ์šฐ์„  2๋ฒˆ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.

PIL์„ ํ†ตํ•ด ์ด๋ฏธ์ง€ ํฌ๊ธฐ ๋ณ€ํ™˜ํ•˜๊ธฐ

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๋ฏธ์ง€๋ฅผ PIL์„ ์‚ฌ์šฉํ•ด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ž„์˜ ํฌ๊ธฐ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

def resize(image: Image.Image, width: int, height: int) -> Image.Image:
    if height == 0:
        height = int(im.height / im.width * width)
    if height % braille_config.height != 0:
        height = int(braille_config.height * (height // braille_config.height))
    if width % braille_config.width != 0:
        width = int(braille_config.width * (width // braille_config.width))
    return image.resize((width, height))

์ด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ ์ž๋Š” ํฌ๊ธฐ๊ฐ€ 2 x 3 ํฌ๊ธฐ์ด๊ธฐ์— ์ด๋ฏธ์ง€์˜ ๋„ˆ๋น„, ๋†’์ด๊ฐ€ ์—ฌ๊ธฐ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋„๋ก ํฌ๊ธฐ๋ฅผ ๋ฏธ์„ธํ•˜๊ฒŒ ์กฐ์ •ํ•œ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ์ ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

์ด๊ฑด ์‚ฌ์ง„์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ๋” ํŽธํ•˜๋‹ค. ์™ผ์ชฝ๊ณผ ๊ฐ™์ด 6 x 6 ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋„ˆ๋น„๋ฅผ 2ํ”ฝ์…€, ๋†’์ด๋ฅผ 3ํ”ฝ์…€๋งˆ๋‹ค ์ž˜๋ผ 2 x 3 ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“  ๋’ค ์ด๋ฅผ ์ ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

์™ผ์ชฝ โ†’ ์˜ค๋ฅธ์ชฝ

์ ์ž ๋ณ€ํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ ์–ด๋–ป๊ฒŒ ํ”ฝ์…€ ๋ฐฐ์—ด์— ํ•ด๋‹นํ•˜๋Š” ์ ์ž๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ๋А๋ƒ๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ๋ชจ๋“  ํ”ฝ์…€ ๋ฐฐ์—ด ์กฐํ•ฉ์„ ์ ์ž์™€ ๋งคํ•‘ํ•ด๋†“๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ํŠนํžˆ๋‚˜ 2 x 3์˜ ์ ์ž๋Š” 26๊ฐœ์˜ ์กฐํ•ฉ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์ ์ž ๊ทœ๊ฒฉ์ด ์ œ์ •๋  ๋•Œ ์ ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜์—ˆ๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ : Braille Patterns ์œ„ํ‚ค๋ฐฑ๊ณผ, ์œ ๋‹ˆ์ฝ”๋“œ ํ…Œ์ด๋ธ”.

๊ฐ„๋‹จํ•œ ์œ ํ‹ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ์ด ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ์œ„์˜ ๋กœ์ง์„ ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ฆฌ์‚ฌ์ด์ง•ํ•œ ๋’ค ์ ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ƒ‰์„ ์ž…ํ˜€ terminal์— ์ ์ž ๋ฐฐ์—ด์„ printํ•œ๋‹ค. Terminal์— print๋˜๋Š” ๊ธ€์ž์˜ ์ƒ‰์€ \033[38;2;{};{};{}m{}\033[38;2;255;255;255m".format(r, g, b chr(output)) ์˜ ํ˜•ํƒœ๋กœ ์ž…ํž ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋” ๊ถ๊ธˆํ•œ ๊ฒฝ์šฐ ANSI Color Escape Code๋ฅผ ์•Œ์•„๋ณด๋ฉด ๋œ๋‹ค. ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด ๋ณด์ž. anaclumos/tools-image-to-braille

์ด ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ 1600๋งŒ ์ƒ‰์ƒ์˜ ANSI True Color๋ผ๋Š” ์ƒ‰์ƒ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, macOS์— ๋‚ด์žฅ๋œ terminal.app์—์„œ๋Š” True Color 1600๋งŒ ์ƒ‰์ƒ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  256๊ฐœ์˜ ์ƒ‰์ƒ๋งŒ ์ง€์›ํ•œ๋‹ค. ๋•Œ๋ฌธ์— True Color์„ ์ง€์›ํ•˜๋Š” iTerm์ด๋‚˜ VS Code ๋‚ด์žฅ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰ํ•˜์ž.


3. ๋™์˜์ƒ์„ ํ”„๋ ˆ์ž„์˜ ์—ฐ์†์œผ๋กœ ๋ณ€ํ™˜

๊ฐ™์€ ์˜์ƒ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ผ์ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ์— ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์‚ฌ์ง„์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ–ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Python OpenCV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๋‹ค์Œ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

  1. ๊ธฐ๋ณธ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ณ€์ˆ˜ ์„ค์ •
  2. ๋™์˜์ƒ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ํ‘œ์‹œ
  3. ํ”„๋ ˆ์ž„ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์ €์žฅ๋  ํด๋” ์ƒ์„ฑ
  4. ๊ฐ ํ”„๋ ˆ์ž„์„ ์ €์žฅ.

์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. GPU ๊ฐ€์†์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ์— 19๋ถ„ 15์ดˆ๋กœ ์ƒ๋‹นํžˆ ์˜ค๋ž˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.


4. ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•ด ์ •ํ˜•ํ™”๋œ ์ž๋ง‰์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜

์ด๋ฏธ 2๋ฒˆ์—์„œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด ์ด ์ฝ”๋“œ๋ฅผ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋ฉด ๋˜๋Š” ๊ตฌ์กฐ์˜€๋‹ค. ์ฒ˜์Œ์—๋Š” .srt ํŒŒ์ผ, ์ฆ‰ SubRip ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ์ž๋ง‰์„ ์ƒ์„ฑํ•˜๋ ค ํ–ˆ๋‹ค. ๋‹ค์Œ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. .srt ์ž๋ง‰์€ ๋‹ค์Œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

1
00:01:00,000 --> 00:02:00,000
This is an example
SubRip caption file.

๊ฐ€์žฅ ์œ„์— Sequence ๋ฒˆํ˜ธ, Start --> End ํƒ€์ž„ ์Šคํƒฌํ”„ ( HH:mm:ss,SSS ), ๊ทธ๋ฆฌ๊ณ  ์ž๋ง‰ ํ…์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒ˜์Œ์— SubRip์„ ์„ ํƒํ•œ ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ํ…์ŠคํŠธ ์ƒ‰์ƒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

SubRip ํŒŒ์ผ์˜ Text Styling์— ๋ถ„๋ช… Yes๋ผ๊ณ  ๋‚˜์™€์žˆ์—ˆ๋Š”๋ฐ ์ด๋Š” ๋น„๊ณต์‹์ ์ธ ์Šคํƒ€์ผ๋ง ๋ฌธ๋ฒ•์ด์—ˆ๋‹ค. ์ถœ์ฒ˜: en.wikipedia.org

ํŒŒ์ผ์„ ์ œ์ž‘ํ•œ ํ›„ YouTube์— ์—…๋กœ๋“œํ•˜๋ ค ํ–ˆ๋Š”๋ฐ ์ƒ‰์ƒ์ด ์ „ํ˜€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ด๊ฒƒ์ด ๋น„๊ณต์‹์  ์˜ต์…˜์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

YouTube๊ฐ€ ์ง€์›ํ•˜๋Š” ์ž๋ง‰์˜ ์ข…๋ฅ˜ ๋ฐ ํŠน์ง•

No style info (markup) is recognized in SubRip. Simple markups are supported in SAMI.

YouTube์˜ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋ง‰์„ ์ง€์›ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

SAMI ํŒŒ์ผ (ํ•œ๊ธ€ ์ž๋ง‰์— ์ž์ฃผ ์“ฐ์ด๋Š” .smi ํŒŒ์ผ)์ด ์ƒ‰์ƒ์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด SAMI ํŒŒ์ผ๋กœ ๋…ธ์„ ์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ์–ด์ฐจํ”ผ ์ž๋ง‰ ํŒŒ์ผ ์ œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ •ํ•ด์ง„ ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ํ…์ŠคํŠธ ํŒŒ์ผ์— appendํ•ด์ฃผ๋Š” ์ˆ˜์ค€์— ๋ถˆ๊ณผํ•˜๊ธฐ์— ๋งŽ์€ ๋ณ€๊ฒฝ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์•˜๋‹ค. Microsoft์˜ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ SAMI ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

<SAMI>
<HEAD>
    <STYLE TYPE = "text/css">
    
    </STYLE>
</HEAD>
<BODY>
    <!<entity type="mdash"/>- The closed caption text displays at 1000 milliseconds. -->
    <SYNC Start = 1000>
        
        <P Class = ENUSCC ID = Source>Narrator
        <P Class = ENUSCC>Great reason to visit Seattle, brought to you by two out-of-staters.
        
        <P Class = FRFRCC ID = Source>Narrateur
        <P Class = FRFRCC>Deux personnes ne venant la r&eacute;gion vous donnent de bonnes raisons de visiter Seattle.
</BODY>
</SAMI>

HTML๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ž์„ธํ•˜๊ฒŒ ๋ณด๋ฉด ๋‹ค์ค‘ ์–ธ์–ด ์ž๋ง‰์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ถœ์ฒ˜: Microsoft


5. ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์„ ํŠน์ • ํฌ๊ธฐ ์ดํ•˜๋กœ ์••์ถ•

ํ…์ŠคํŠธ ํŒŒ์ผ์ด 70MB!

์ด๋ ‡๊ฒŒ SAMI ํŒŒ์ผ์„ ์™„์„ฑํ•˜๊ณ  ๋‚˜๋‹ˆ 70MB๊ฐ€ ๋„˜๋Š” ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค. YouTube์—๋„ ์ž๋ง‰์ด ์—…๋กœ๋“œ๋˜์ง€ ์•Š์•˜๋‹ค. (YouTube์—์„œ ๊ณต์‹์ ์œผ๋กœ ๋ฐํžŒ ์ž๋ง‰ ์ตœ๋Œ€ ํฌ๊ธฐ์— ๋Œ€ํ•ด์„œ๋Š” ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜์ค‘์— ๊ฒฝํ—˜์ ์œผ๋กœ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค๋กœ ๊ทธ ์šฉ๋Ÿ‰ ์ œํ•œ์ด 10MB์ธ ๊ฒƒ ๊ฐ™์•˜๋‹ค.) ์œ ํŠœ๋ธŒ์— ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„  ์šฉ๋Ÿ‰ ์ ˆ๊ฐ์ด ํ•„์š”ํ–ˆ๋‹ค.

์ด๋•Œ ์ƒ๊ฐํ•œ ์••์ถ• ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. ์ ์ž ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ์ž์ฒด๋ฅผ ์ค„์ด๊ธฐ
  2. ํ”„๋ ˆ์ž„ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
  3. ์ปฌ๋Ÿฌ ์Šคํƒ ์ด์šฉํ•˜๊ธฐ

1๋ฒˆ๊ณผ 2๋ฒˆ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ์ž ๋ฐฐ์—ด ์„ค์ •์„ ๋ถ„๋ฆฌํ•ด๋‘์—ˆ๊ธฐ์— ๋‹ค์–‘ํ•œ ์ˆซ์ž๋กœ ์‹คํ—˜์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. YouTube์˜ ๊ฒฝ์šฐ๋„ ์ž๋ง‰์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ตœ๋Œ€ ์†๋„๊ฐ€ 8-10Hz ์˜€๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ ˆ์ž„์„ ๊ฑด๋„ˆ๋›ฐ์–ด ์šฉ๋Ÿ‰์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

class braille_config:
    # 2 * 3 braille
    base = 0x2800
    width = 2
    height = 3


class video_config:
    width = 56
    height = 24
    frame_jump = 3  # jumps 3 frames

3๋ฒˆ์—์„œ ๋งํ•˜๋Š” ์ปฌ๋Ÿฌ ์Šคํƒ์ด๋ž€, ๋™์ผํ•œ ์ƒ‰์ƒ์˜ ์ ์ž๊ฐ€ ๋“ฑ์žฅํ–ˆ์„ ๋•Œ ์ด๋ฅผ stack์— ์ž ์‹œ ๋ฐ€์–ด๋‘์—ˆ๋‹ค๊ฐ€ ์ƒ‰๊น”์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ•œ ๋ฒˆ์— appendํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ดˆ๊ธฐ ์ž๋ง‰์„ ํ•œ ๋ฒˆ ๋ณด์ž.

<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>
<FONT color="#FFFFFF">โ ฟ</FONT>

๋ชจ๋‘ ๋™์ผํ•œ ์ƒ‰์ƒ์˜ ํฐ์ƒ‰ ์ ์ž์ž„์—๋„ ๋งค๋ฒˆ ์•ž๋’ค๋กœ ๊ธด HTML ๋ฌธ๋ฒ•์ด ๋ถ™๊ณ  ์žˆ๋‹ค. ์ฆ‰ ์ปฌ๋Ÿฌ ์Šคํƒ์˜ ์ƒ‰์ƒ์„ ๋ณด๊ด€ํ•œ ๋’ค, ๋™์ผํ•œ ์ƒ‰์ƒ์˜ ์ ์ž๋“ค์ด ๋‚˜ํƒ€๋‚˜๋ฉด ์Šคํƒ์— ๊ทธ ์ ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒ‰์ƒ์ด ๋ฐ”๋€Œ๋Š” ์ˆœ๊ฐ„์— ์ด๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ ๋ฒˆ์— ๋ถ™์ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

<FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT>

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ํ”ํžˆ ๋ณด์ด๋Š” ์™„์ „ํƒ์ƒ‰ ํ›„ ์ตœ๋Œ€์••์ถ•์€ ์•„๋‹ˆ์ง€๋งŒ, 10MB ์•„๋ž˜๋กœ ์ค„์ด๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ๋‹ค. ํŠนํžˆ ํ‘๋ฐฑ ๊ณ„์—ด์—์„œ ๋ฐœ๊ตฐ์˜ ์••์ถ• ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.

<SYNC Start=125><P Class=KOKRCC><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR></SYNC>
<SYNC Start=250><P Class=KOKRCC><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR></SYNC>
<SYNC Start=375><P Class=KOKRCC><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR></SYNC>
<SYNC Start=500><P Class=KOKRCC><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR></SYNC>
<SYNC Start=625><P Class=KOKRCC><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR><FONT color="#FFFFFF">โ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟโ ฟ</FONT><BR></SYNC>

์—ฌ๊ธฐ๊นŒ์ง€ ์™„์„ฑ๋œ ํŒŒ์ผ (Dithering ๋ฏธ์ ์šฉ ์ƒํƒœ)


6. ๋””๋”๋ง

์ด๋ ‡๊ฒŒ ์™„์„ฑ๋œ ํŒŒ์ผ์„ YouTube์— ์—…๋กœ๋“œํ–ˆ๋Š”๋ฐ, ์–ด๋”˜๊ฐ€ ์–ด์ƒ‰ํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ ์ ์ž๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅธ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ ์ž์˜ ํ•œ ์ ์— ์ƒ‰์ƒ์ด ์ƒ‰์น ๋˜์ง€ ์•Š์•„๋„ ๋นˆ ์›์ด ๊ทธ๋ ค์ ธ ์žˆ๋Š” ๋ฐ˜๋ฉด, ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์ ์ž๊ฐ€ ์น ํ•ด์ ธ ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ์•„๋งˆ ๋ชจ๋ฐ”์ผ์˜ ๊ฐ€๋…์„ฑ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋””๋”๋ง ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ ์ ์ž๊ฐ€ ๋น„์–ด์žˆ๋Š” ์นธ์€ ์™„์ „ํ•œ ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. ์™ผ์ชฝ์—์„œ๋Š” ๊ฑฐ์˜ ์•„๋ฌด๋Ÿฐ ๋””ํ…Œ์ผ์ด ๋ณด์ด์ง€ ์•Š์ง€๋งŒ, ๋””๋”๋ง ์ฒ˜๋ฆฌ๊ฐ€ ๋œ ์šฐ์ธก์—์„œ ํ›จ์”ฌ ๋งŽ์€ ๋””ํ…Œ์ผ์ด ๋ณด์ธ๋‹ค. ์ด๋Š” ํŠนํžˆ ๊ฒ€์€ ๋ฐฐ๊ฒฝ์ด ๋งŽ๊ฑฐ๋‚˜ Color Gradation์ด ๋งŽ์€ ํ™”๋ฉด์—์„œ ๋””๋”๋ง์˜ ํšจ๊ณผ๊ฐ€ ๋‘๋“œ๋Ÿฌ์ง„๋‹ค.

๋ฎค์ง ๋น„๋””์˜ค์˜ ์›๋ณธ ์žฅ๋ฉด์ด๋‹ค. BTS ์ง€๋ฏผ.

Dithering์€ ๋” ๋„“์€ ์ปฌ๋Ÿฌ ์ŠคํŽ™ํŠธ๋Ÿผ์—์„œ ๋” ๋‚ฎ์€ ์ปฌ๋Ÿฌ ์ŠคํŽ™ํŠธ๋Ÿผ์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ํ™”์งˆ ์ €ํ•˜๋ฅผ ๋ณด์ƒํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์ด ๋˜ํ•œ Wikipedia์˜ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

1๋ฒˆ ์‚ฌ์ง„์€ 16๋ฐฑ๋งŒ ์ƒ‰์ƒ์„, 2๋ฒˆ๊ณผ 3๋ฒˆ ์‚ฌ์ง„์€ 256์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋””๋”๋ง ์ฒ˜๋ฆฌ๋œ ์ด๋ฏธ์ง€๋Š” ์••์ถ•๋œ ์ƒ‰ ์˜์—ญ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋””ํ…Œ์ผ์ด ๋А๊ปด์ง„๋‹ค. ์ด๋ฏธ์ง€ ์ถœ์ฒ˜: en.wikipedia.org

2๋ฒˆ ์ด๋ฏธ์ง€์™€ 3๋ฒˆ ์ด๋ฏธ์ง€์˜ ๋””ํ…Œ์ผ ์ฐจ์ด๊ฐ€ ๋А๊ปด์ง€๋Š”๊ฐ€? ๋‘˜ ๋‹ค ์••์ถ•๋œ 256์ƒ‰์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ 3๋ฒˆ ์ด๋ฏธ์ง€๊ฐ€ ํ›จ์”ฌ ๋””ํ…Œ์ผ์ด ๋А๊ปด์ง„๋‹ค. ์ด์™€ ๊ฐ™์ด ๋‚ฎ์•„์ง„ ์ƒ‰ ์ŠคํŽ™ํŠธ๋Ÿผ์—์„œ๋„ ํ”ฝ์…€์˜ ๋ฐฐ์น˜๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ๋””ํ…Œ์ผ์„ ์‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๋””๋”๋ง ์ฒ˜๋ฆฌ๋Š” GIF ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ๋„ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ GIF ํŒŒ์ผ์—์„œ๋Š” ์œ„์˜ 3๋ฒˆ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ˆ˜๋งŽ์€ ์ ์ด ๋Œ์ถœ๋˜์–ด ์ฐํ˜€์žˆ๋Š” ๋“ฏํ•œ ๋А๋‚Œ์ด ๋“ ๋‹ค (ํ”ํžˆ ๋งํ•˜๋Š” GIF ๊ฐ์„ฑ)

ํ”ํžˆ ๋งํ•˜๋Š” ๋””์ง€ํ„ธ ํ’ํ™”๋„ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์„ ๋•Œ ์ผ์–ด๋‚˜๋Š” ๋””๋”๋ง ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค. ๋ฌด์••์ถ• ์Šคํฌ๋ฆฐ์ƒท์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๊ธฐ์ผ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์œผ๋ฉฐ ์••์ถ•์„ ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์†์‹ค๋œ ์ƒ‰์ƒ ๋””ํ…Œ์ผ์„ ๋ณด์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ํ”ฝ์…€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ •๋˜๋Š”๋ฐ ์ด ๊ณผ์ •์ด ์ˆ˜์‹ญ-์ˆ˜๋ฐฑํšŒ ๋ฐ˜๋ณต๋˜๋ฉด ์›๋ž˜ ์ด๋ฏธ์ง€์—์„œ ์ƒ๋‹นํžˆ ๋ฉ€์–ด์ง„ ์ด๋ฏธ์ง€์— ๋„๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ก  ๋””์ง€ํ„ธ ํ’ํ™”์—๋Š” ์ด ์™ธ์—๋„ ๋งŽ์€ ์š”์†Œ๊ฐ€ ์˜ํ–ฅ์„ ์ค€๋‹ค. (๊ด€๋ จ ๋ฌธ์„œ: dithering and color banding)

์œค๊ณฝ์„ ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋…ธํฌ๋กฌ ๋ณ€ํ™˜ ๋˜ํ•œ 1600๋งŒ RGB ์ƒ‰ ์˜์—ญ์„ ํ‘๋ฐฑ 2๊ฐ€์ง€ ์ƒ‰์„ ๊ฐ€์ง„ ์ƒ‰ ์˜์—ญ์œผ๋กœ ๋‚ฎ์ถ”๋Š” ๊ณผ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋””๋”๋ง ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ƒ์ˆ ํ–ˆ๋“ฏ์ด PIL์˜ ๊ธฐ๋ณธ ๋ณ€ํ™˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

resized_image_bw = resized_image.convert("1")  # apply dithering

๋ฎค์ง๋น„๋””์˜ค์˜ ์‹ค์ œ ์žฅ๋ฉด์œผ๋กœ ํ™•์ธํ•ด๋ณด์ž.

1๋ถ„ 33์ดˆ ๊ฒฝ๋ถ€ํ„ฐ ๋””๋”๋ง์˜ ํšจ๊ณผ๋ฅผ ๋ˆˆ์— ๋„๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค.


๋๋งˆ์น˜๋ฉฐ

์ผ๋‹จ ์ด๋ ‡๊ฒŒ ๋งˆ๋ฌด๋ฆฌ๋œ ํ”„๋กœ์ ํŠธ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋™์˜์ƒ์„ ๋ถ„์„ํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๊พธ์ค€ํžˆ ์ง„ํ–‰ํ•  ์ƒ๊ฐ์ด๋‹ค. ๊ณผ๊ฑฐ์— ์—…๋กœ๋“œํ–ˆ๋˜ ๊ด€๋ จ ๊ธ€์„ ์˜ฌ๋ฆฌ๋ฉฐ ๊ธ€์„ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค.

Butter

Fiesta


2021๋…„ 7์›” 9์ผ ์ถ”๊ฐ€ - ๋ถˆ๊ท ์ผํ•œ ์ž๋ง‰ ์ŠคํŽ™?

๋‚˜๋Š” iOS์™€ iPadOS ๋„ค์ดํ‹ฐ๋ธŒ YouTube ์•ฑ, ๊ทธ๋ฆฌ๊ณ  macOS Chrome, Firefox, Safari์—์„œ ์ž๋ง‰์„ ํ…Œ์ŠคํŠธํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ž๋ง‰์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ฑฐ๋‚˜ YouTube ์•ฑ์ด ํฌ๋ž˜์‹œ๋œ๋‹ค๋Š” ์ œ๋ณด๋ฅผ ๋ฐ›์•˜๋‹ค. Windows 10 Chromium Edge์—์„œ๋„ ๊ณต๋ฐฑ ๋ฌธ์ž ๋„ˆ๋น„๊ฐ€ ๋ฌด์‹œ๋˜๋Š” ๊ฒƒ์ธ์ง€ ์ ์ž ์ž๋ง‰์ด ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

ํ•˜์—ฌํŠผ ๊ทธ๋Ÿฐ ๋ฌธ์ œ๋กœ ์ธํ•ด macOS 11 Chrome 91์—์„œ ํ™”๋ฉด ๋…นํ™”ํ•œ ๋ชจ์Šต์„ ์ฒจ๋ถ€ํ•œ๋‹ค. Apple Platform์—์„œ ์ด ์˜์ƒ๋“ค์„ ๊ฐ์ƒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์ ์ž ์˜์ƒ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ฐ ์ ์ž๋“ค์˜ ์„ ๋ช…ํ•œ ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์–ด ์˜์ƒ์„ 8K๋กœ ์ œ์ž‘ํ–ˆ๋‹ค.