Last active
April 20, 2021 07:53
-
-
Save dramforever/07a46fe21a1991c397871229d16a6154 to your computer and use it in GitHub Desktop.
Generating ASCII art with distance fields
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "pending-dependence", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import cv2\n", | |
"import PIL.Image\n", | |
"import PIL.ImageDraw\n", | |
"import PIL.ImageFont\n", | |
"import numpy" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "driven-window", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Input file names\n", | |
"font_file = 'font.otf'\n", | |
"img_file = 'input.png'" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "understanding-crime", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def font_to_img(char, img_w, img_h):\n", | |
" '''\n", | |
" Render a character into (binary) image using the specified font\n", | |
" '''\n", | |
" image = PIL.Image.new('1', (img_w, img_h), 1) # default color: white\n", | |
" draw = PIL.ImageDraw.Draw(image)\n", | |
" font = PIL.ImageFont.truetype(font_file, img_h)\n", | |
"\n", | |
" # Find center of canvas\n", | |
" (font_width, font_height) = font.getsize(char)\n", | |
" x = (img_w - font_width)/2\n", | |
" y = (img_h - font_height)/2\n", | |
" \n", | |
" # Draw character in center\n", | |
" draw.text((x, y), char, 0, font=font)\n", | |
" \n", | |
" # Convert to binary\n", | |
" return (numpy.array(image.convert('L')) > 0).astype(numpy.uint8)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "third-snapshot", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def norm_array(arr, orig):\n", | |
" '''\n", | |
" Normalize array into 0 to 1 range\n", | |
" '''\n", | |
" m, n = arr.min(), arr.max()\n", | |
" arr -= m\n", | |
" if n - m != 0:\n", | |
" arr /= n - m\n", | |
" if orig.sum() != 0:\n", | |
" arr /= orig.sum() / orig.size\n", | |
" return arr" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "retired-ivory", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def to_sdf(arr):\n", | |
" '''\n", | |
" Generate distance field from image\n", | |
" '''\n", | |
" sdf_arr = cv2.distanceTransform(arr, cv2.CV_32F, 0)\n", | |
" sdf_arr_neg = cv2.distanceTransform(1 - arr, cv2.CV_32F, 0)\n", | |
" return norm_array(sdf_arr + sdf_arr_neg, arr)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "wicked-custom", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"block_w = 20\n", | |
"block_h = 40" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "early-chocolate", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"charset = ' .-*+=#/~[]^|\":'" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"id": "medieval-relaxation", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Generate reference distance fields\n", | |
"\n", | |
"charset_sdf = {\n", | |
" ch: to_sdf(font_to_img(ch, block_w, block_h))\n", | |
" for ch in charset\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"id": "psychological-tiffany", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def score(ch, block):\n", | |
" return abs(charset_sdf[ch] - to_sdf(block)).astype(int).sum()\n", | |
"\n", | |
"def best_char(block):\n", | |
" '''\n", | |
" Find closest character corresponding to character block\n", | |
" '''\n", | |
" return min(charset_sdf, key=lambda k: score(k, block))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "further-scheme", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def gen_art(img):\n", | |
" '''\n", | |
" Generate ASCII art from image\n", | |
" \n", | |
" Assumes: block_h divides image height, block_w divides image width\n", | |
" '''\n", | |
" gen = lambda x, y: best_char(img[x : x + block_h, y : y + block_w])\n", | |
"\n", | |
" return [\n", | |
" [ gen(x, y) for y in range(0, img.shape[1], block_w) ]\n", | |
" for x in range(0, img.shape[0], block_h)\n", | |
" ]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "magnetic-relevance", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Load the input image\n", | |
"with PIL.Image.open(img_file, 'r') as f:\n", | |
" sample_img_pil = f.copy()\n", | |
"sample_image = numpy.array(sample_img_pil)\n", | |
"\n", | |
"# Binarize\n", | |
"sample_image = (sample_image[:,:,0] > 128).astype(numpy.uint8)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "quantitative-bradford", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(1080, 1440)" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"sample_image.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"id": "compound-cherry", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" \n", | |
" \n", | |
" ..^----------\". \n", | |
" .-^-../ /\". \n", | |
" .-] \"] | \n", | |
" .+ / \n", | |
" [ / \n", | |
" |\"-.. []. \n", | |
" .+ .. . \n", | |
" .+ |. .| \n", | |
" .+ [].. ../-| \n", | |
" ..^-^. .] / |. . []| \n", | |
" ..--+..-. \"-. .. .| |.[\". .... \n", | |
"..-^-+ .| .\"..+^. ].. / ||^\" +^.. \n", | |
" ..^|+ [] .| ..\".| |]/|| .^\"] \"\". \n", | |
".||| / | .+ /|\".\"-. .|| .+ +. \n", | |
"+| ] [ | / .\".]^.| .+ +. ..\n", | |
" +. | .| | | .+ ....-^^^~-^^+ +---\"/\"--..+.\n", | |
" .. .. | ] .. .+ /. ||- .^\"\"\"- -|||||+... .\n", | |
" | ] .. | | | / / ] ] ]. / /. |\n", | |
". ..[ .... |. | .. /. | .. ] / |\n", | |
"| |. || ] . ] | . / .. .\" \n", | |
" \". | | .. | .| ] / \n", | |
" ].. ] / / / ...| \n", | |
" || |.. .] | ]/ \n", | |
" || . . [ .. \n", | |
" . / [ \n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<PIL.Image.Image image mode=RGB size=576x424 at 0x7F7FC6B8D2B0>" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Let's see the result\n", | |
"\n", | |
"for row in gen_art(sample_image):\n", | |
" print(''.join(row))\n", | |
"sample_img_pil.resize((576,424))" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.8.8" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment