Skip to content

Instantly share code, notes, and snippets.

@douglasgoodwin
Created December 9, 2019 22:41
Show Gist options
  • Save douglasgoodwin/7d75fe1c6a1f87cd16a85b82c01a8b26 to your computer and use it in GitHub Desktop.
Save douglasgoodwin/7d75fe1c6a1f87cd16a85b82c01a8b26 to your computer and use it in GitHub Desktop.
Analysis of frames from the camera makes a coarse image
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"import seaborn as sns\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![refactored process: use a camera](flyingspot_overview_v2.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Process\n",
"\n",
"1. place a camera in the box, start a video capture\n",
"1. capture three full scans of the flying spot\n",
"1. save the video, export still frames (in grayscale) with ffmpeg\n",
"1. use imagemagick to get the mean lightness of each frame\n",
"1. create a data structure that matches the height and width of the capture\n",
"1. bring it into a Pandas dataframe, visualize the results, compare picture"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# This function will cut a long list into chunks\n",
"def slice_per(source, step):\n",
" return [source[i::step] for i in range(step)]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(24.114785266333143, 3.0756076388888887)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#### Start by getting the lightness / brightness for each frame.\n",
"\n",
"# Used these methods:\n",
"# https://stackoverflow.com/questions/3490727/what-are-some-methods-to-analyze-image-brightness-using-python\n",
"\n",
"# Convert image to greyscale, return RMS root-mean-square pixel brightness.\n",
"# https://en.wikipedia.org/wiki/Root_mean_square\n",
"def brightness_rms( im_file ):\n",
" im = Image.open(im_file).convert('L')\n",
" stat = ImageStat.Stat(im)\n",
" return stat.rms[0]\n",
"\n",
"# Average pixels, then transform to \"perceived brightness\".\n",
"def brightness_per( im_file ):\n",
" im = Image.open(im_file)\n",
" stat = ImageStat.Stat(im)\n",
" r,g,b = stat.mean\n",
" return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))\n",
"\n",
"# test\n",
"import math\n",
"from PIL import Image, ImageStat\n",
"im_file = \"crisp/crisp-0023.png\"\n",
"brightness_rms( im_file ), brightness_per( im_file )"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"data": {
"text/plain": [
"[0.2186265432098765,\n",
" 0.2256983024691358,\n",
" 0.22496720679012347,\n",
" 0.22299768518518517,\n",
" 0.22206983024691357,\n",
" 0.22122299382716049,\n",
" 0.22501543209876543,\n",
" 0.2253452932098765,\n",
" 0.27285686728395064,\n",
" 0.729639274691358,\n",
" 0.5829668209876543,\n",
" 0.2470119598765432,\n",
" 0.22619791666666664,\n",
" 0.21746141975308642,\n",
" 0.21528163580246915,\n",
" 0.21823881172839507,\n",
" 0.22148148148148147,\n",
" 0.22237654320987654,\n",
" 0.21986496913580245,\n",
" 0.3912403549382716,\n",
" 0.690931712962963,\n",
" 2.042546296296296,\n",
" 3.0756076388888887,\n",
" 4.037019675925926,\n",
" 3.6726157407407407,\n",
" 1.2791203703703704,\n",
" 0.22184606481481478,\n",
" 0.22874035493827158,\n",
" 0.23009645061728395,\n",
" 0.23627700617283948,\n",
" 0.24049961419753085,\n",
" 0.7959239969135803,\n",
" 1.346466049382716,\n",
" 2.50359375,\n",
" 3.599861111111111,\n",
" 4.8346026234567905,\n",
" 5.9393923611111115,\n",
" 4.430233410493827,\n",
" 0.4578028549382716,\n",
" 0.25688850308641975,\n",
" 0.2481230709876543,\n",
" 0.25266782407407407,\n",
" 0.2504070216049383,\n",
" 0.7773726851851852,\n",
" 1.5901813271604939,\n",
" 3.4355189043209875,\n",
" 4.925148533950617,\n",
" 5.464176311728395,\n",
" 4.794639274691358,\n",
" 4.673722993827161,\n",
" 1.374704861111111,\n",
" 0.2495042438271605,\n",
" 0.23949845679012347,\n",
" 0.2375655864197531,\n",
" 0.23772183641975306,\n",
" 0.5140547839506173,\n",
" 1.414295910493827,\n",
" 3.949755015432099,\n",
" 5.398730709876543,\n",
" 5.301242283950617,\n",
" 4.85598186728395,\n",
" 4.799783950617284,\n",
" 0.9254378858024691,\n",
" 0.23333140432098762,\n",
" 0.22400462962962964,\n",
" 0.2308371913580247,\n",
" 0.23331404320987653,\n",
" 0.41772376543209877,\n",
" 1.4328954475308642,\n",
" 3.4205381944444446,\n",
" 5.042694830246914,\n",
" 5.480418595679012,\n",
" 5.023832947530864,\n",
" 3.582309027777778,\n",
" 0.22766010802469136,\n",
" 0.2291878858024691,\n",
" 0.23211033950617285,\n",
" 0.22701388888888888,\n",
" 0.2232638888888889,\n",
" 0.28841435185185177,\n",
" 0.8627777777777776,\n",
" 2.626628086419753,\n",
" 4.187569444444445,\n",
" 5.111817129629629,\n",
" 3.4670736882716047,\n",
" 1.223539737654321,\n",
" 0.22785300925925925,\n",
" 0.2284355709876543,\n",
" 0.31448109567901233,\n",
" 0.42313657407407407,\n",
" 0.2423630401234568,\n",
" 0.22805362654320985,\n",
" 0.34512152777777777,\n",
" 1.4666917438271605,\n",
" 2.8835281635802468,\n",
" 4.908470293209876,\n",
" 3.4115779320987656,\n",
" 0.3357156635802469,\n",
" 0.21931905864197532,\n",
" 0.23017746913580248,\n",
" 0.3382060185185185,\n",
" 0.3906404320987654,\n",
" 0.24810185185185185,\n",
" 0.2350636574074074,\n",
" 0.27286265432098766,\n",
" 0.733136574074074,\n",
" 1.0993055555555553,\n",
" 1.577764274691358,\n",
" 1.0241512345679011,\n",
" 0.3275655864197531,\n",
" 0.22092399691358022,\n",
" 0.21970871913580245,\n",
" 0.22476658950617284,\n",
" 0.23264467592592591,\n",
" 0.2283564814814815,\n",
" 0.22514081790123458,\n",
" 0.22468171296296297,\n",
" 0.22062114197530863,\n",
" 0.21675154320987652,\n",
" 0.21718749999999998,\n",
" 0.22003086419753085,\n",
" 0.22344907407407408,\n",
" 0.2248784722222222,\n",
" 0.22186342592592592,\n",
" 0.21883101851851852,\n",
" 0.21676697530864197,\n",
" 0.21962962962962962,\n",
" 0.2287866512345679,\n",
" 0.2665239197530864,\n",
" 0.7302488425925926,\n",
" 0.5457002314814815,\n",
" 0.25104552469135805,\n",
" 0.21032407407407408,\n",
" 0.2121412037037037,\n",
" 0.21537422839506173,\n",
" 0.21838348765432097,\n",
" 0.22411265432098762,\n",
" 0.22086805555555555,\n",
" 0.21396026234567903,\n",
" 0.4546431327160494,\n",
" 1.0304359567901236,\n",
" 2.0469791666666666,\n",
" 3.405414737654321,\n",
" 3.4971141975308644,\n",
" 3.0553047839506173,\n",
" 1.2771141975308642,\n",
" 0.21827932098765432,\n",
" 0.22535108024691358,\n",
" 0.22766010802469136,\n",
" 0.23451581790123455,\n",
" 0.22845293209876544,\n",
" 0.9292496141975307,\n",
" 1.7334645061728395,\n",
" 2.4845235339506173,\n",
" 3.834753086419753,\n",
" 4.255258487654321,\n",
" 4.389714506172839,\n",
" 4.115298996913579,\n",
" 0.43733024691358025,\n",
" 0.23381172839506173,\n",
" 0.22877507716049383,\n",
" 0.2360088734567901,\n",
" 0.3092611882716049,\n",
" 0.8511747685185185,\n",
" 2.3649672067901233,\n",
" 3.41,\n",
" 5.05903549382716,\n",
" 4.632810570987655,\n",
" 6.923543595679012,\n",
" 4.736811342592593,\n",
" 1.3595408950617285,\n",
" 0.24042631172839507,\n",
" 0.23485146604938273,\n",
" 0.2368557098765432,\n",
" 0.23242669753086417,\n",
" 0.5924131944444444,\n",
" 2.247380401234568,\n",
" 3.967640817901234,\n",
" 5.619585262345679,\n",
" 4.659456018518519,\n",
" 4.869990354938271,\n",
" 4.746298225308642,\n",
" 0.9322704475308641,\n",
" 0.2405671296296296,\n",
" 0.2291068672839506,\n",
" 0.2371219135802469,\n",
" 0.23802083333333332,\n",
" 0.4826331018518519,\n",
" 2.198258101851852,\n",
" 3.4244116512345673,\n",
" 5.241934799382716,\n",
" 4.801734182098765,\n",
" 5.942179783950618,\n",
" 3.5596373456790125,\n",
" 0.2524054783950617,\n",
" 0.2435088734567901,\n",
" 0.25814236111111105,\n",
" 0.25288966049382716,\n",
" 0.24676118827160493,\n",
" 0.3319097222222222,\n",
" 1.4250694444444445,\n",
" 2.6501948302469134,\n",
" 4.477027391975309,\n",
" 4.609899691358025,\n",
" 2.9974305555555554,\n",
" 1.104951774691358,\n",
" 0.23369598765432095,\n",
" 0.2338869598765432,\n",
" 0.3473244598765432,\n",
" 0.43779128086419755,\n",
" 0.4054668209876543,\n",
" 0.23321759259259256,\n",
" 0.569483024691358,\n",
" 1.4815123456790122,\n",
" 3.143429783950617,\n",
" 4.357525077160493,\n",
" 2.916232638888889,\n",
" 0.32686728395061726,\n",
" 0.2279938271604938,\n",
" 0.23497492283950616,\n",
" 0.3601195987654321,\n",
" 0.39791473765432095,\n",
" 0.23543016975308642,\n",
" 0.24091242283950617,\n",
" 0.35271797839506175,\n",
" 0.754074074074074,\n",
" 1.253207947530864,\n",
" 1.543804012345679,\n",
" 0.8872260802469136,\n",
" 0.32291666666666663,\n",
" 0.23655864197530863,\n",
" 0.23206211419753087,\n",
" 0.23418981481481482,\n",
" 0.23766589506172836,\n",
" 0.23396219135802468,\n",
" 0.22749807098765432,\n",
" 0.2221604938271605,\n",
" 0.22367862654320986,\n",
" 0.22373070987654317,\n",
" 0.2246778549382716,\n",
" 0.2194193672839506,\n",
" 0.2205979938271605,\n",
" 0.22368055555555555,\n",
" 0.21914930555555556,\n",
" 0.21920331790123457,\n",
" 0.22121141975308642,\n",
" 0.22529899691358024,\n",
" 0.24251350308641975,\n",
" 0.3119463734567901,\n",
" 0.7132928240740741,\n",
" 0.6610069444444444,\n",
" 0.2707060185185185,\n",
" 0.21651234567901234,\n",
" 0.21930169753086418,\n",
" 0.21921296296296297,\n",
" 0.22356481481481483,\n",
" 0.226508487654321,\n",
" 0.2222800925925926,\n",
" 0.22031442901234569,\n",
" 0.5250790895061729,\n",
" 1.3746141975308641,\n",
" 2.054832175925926,\n",
" 3.50609375,\n",
" 3.521003086419753,\n",
" 3.6529205246913574,\n",
" 1.106141975308642,\n",
" 0.2271064814814815,\n",
" 0.23288001543209877,\n",
" 0.2386400462962963,\n",
" 0.23848186728395063,\n",
" 0.23138310185185182,\n",
" 1.0263252314814815,\n",
" 2.1121971450617285,\n",
" 2.487710262345679,\n",
" 3.883371913580247,\n",
" 4.309027777777778,\n",
" 4.386367669753087,\n",
" 3.9151678240740737,\n",
" 0.41070216049382713,\n",
" 0.23439429012345678,\n",
" 0.23073109567901234,\n",
" 0.2396045524691358,\n",
" 0.23438850308641976,\n",
" 0.9247337962962962,\n",
" 2.8805787037037036,\n",
" 3.4167148919753085,\n",
" 5.112278163580247,\n",
" 4.721780478395062,\n",
" 4.7770524691358025,\n",
" 4.608076774691358,\n",
" 1.2584934413580244,\n",
" 0.24434606481481483,\n",
" 0.23834104938271605,\n",
" 0.24199845679012347,\n",
" 0.24462384259259257,\n",
" 0.6503105709876543,\n",
" 2.8634818672839506,\n",
" 3.93778549382716,\n",
" 4.401367669753086,\n",
" 4.802191358024691,\n",
" 6.866388888888888,\n",
" 4.607702546296296,\n",
" 0.8601581790123457,\n",
" 0.25280864197530867,\n",
" 0.24894097222222222,\n",
" 0.25185570987654315,\n",
" 0.2531346450617284,\n",
" 0.5556134259259259,\n",
" 2.623474151234568,\n",
" 3.4176041666666666,\n",
" 5.28961612654321,\n",
" 4.940486111111111,\n",
" 5.005391589506173,\n",
" 3.136161265432099,\n",
" 0.23916087962962962,\n",
" 0.23952739197530862,\n",
" 0.24519097222222222,\n",
" 0.24298225308641974,\n",
" 0.23793402777777775,\n",
" 0.340360725308642,\n",
" 1.8086304012345678,\n",
" 2.6457793209876543,\n",
" 4.599025848765432,\n",
" 4.841973379629629,\n",
" 2.406099537037037,\n",
" 0.952650462962963,\n",
" 0.23024305555555552,\n",
" 0.22448881172839508,\n",
" 0.34646412037037033,\n",
" 0.42849151234567895,\n",
" 0.21783564814814813,\n",
" 0.20273726851851853,\n",
" 0.7332079475308642,\n",
" 1.452565586419753,\n",
" 3.2626195987654323,\n",
" 4.428950617283951,\n",
" 2.102689043209876,\n",
" 0.24723572530864196,\n",
" 0.16935185185185186,\n",
" 0.22681712962962963,\n",
" 0.32506944444444447,\n",
" 0.33640239197530863,\n",
" 0.16734182098765432,\n",
" 0.1695679012345679,\n",
" 0.3521508487654321,\n",
" 0.6834664351851852,\n",
" 1.2820505401234568,\n",
" 1.563989197530864,\n",
" 0.6030806327160493,\n",
" 0.22619984567901236,\n",
" 0.15325810185185185]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# build up a list of still images\n",
"from glob import glob\n",
"imglist = [f for f in glob(\"crisp/*.png\")]\n",
"imglist.sort()\n",
"\n",
"crispmeans = []\n",
"for f in imglist:\n",
" crispmeans.append( brightness_per(f) )\n",
" \n",
"crispmeans"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"frames = slice_per(crispmeans[6:-1], 12)\n",
"# align the frames\n",
"\n",
"my_df = pd.DataFrame(frames)\n",
"# my_df\n",
"\n",
"df = my_df.transpose()\n",
"df\n",
"df_clean = df.drop([10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])\n",
"\n",
"df_clean.to_csv('frames.csv')\n",
"\n",
"# for n,i in enumerate(crispmeans):\n",
"# print(n,i)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.225015</td>\n",
" <td>0.225345</td>\n",
" <td>0.272857</td>\n",
" <td>0.729639</td>\n",
" <td>0.582967</td>\n",
" <td>0.247012</td>\n",
" <td>0.226198</td>\n",
" <td>0.217461</td>\n",
" <td>0.215282</td>\n",
" <td>0.218239</td>\n",
" <td>0.221481</td>\n",
" <td>0.222377</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.219865</td>\n",
" <td>0.391240</td>\n",
" <td>0.690932</td>\n",
" <td>2.042546</td>\n",
" <td>3.075608</td>\n",
" <td>4.037020</td>\n",
" <td>3.672616</td>\n",
" <td>1.279120</td>\n",
" <td>0.221846</td>\n",
" <td>0.228740</td>\n",
" <td>0.230096</td>\n",
" <td>0.236277</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.240500</td>\n",
" <td>0.795924</td>\n",
" <td>1.346466</td>\n",
" <td>2.503594</td>\n",
" <td>3.599861</td>\n",
" <td>4.834603</td>\n",
" <td>5.939392</td>\n",
" <td>4.430233</td>\n",
" <td>0.457803</td>\n",
" <td>0.256889</td>\n",
" <td>0.248123</td>\n",
" <td>0.252668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.250407</td>\n",
" <td>0.777373</td>\n",
" <td>1.590181</td>\n",
" <td>3.435519</td>\n",
" <td>4.925149</td>\n",
" <td>5.464176</td>\n",
" <td>4.794639</td>\n",
" <td>4.673723</td>\n",
" <td>1.374705</td>\n",
" <td>0.249504</td>\n",
" <td>0.239498</td>\n",
" <td>0.237566</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.237722</td>\n",
" <td>0.514055</td>\n",
" <td>1.414296</td>\n",
" <td>3.949755</td>\n",
" <td>5.398731</td>\n",
" <td>5.301242</td>\n",
" <td>4.855982</td>\n",
" <td>4.799784</td>\n",
" <td>0.925438</td>\n",
" <td>0.233331</td>\n",
" <td>0.224005</td>\n",
" <td>0.230837</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.233314</td>\n",
" <td>0.417724</td>\n",
" <td>1.432895</td>\n",
" <td>3.420538</td>\n",
" <td>5.042695</td>\n",
" <td>5.480419</td>\n",
" <td>5.023833</td>\n",
" <td>3.582309</td>\n",
" <td>0.227660</td>\n",
" <td>0.229188</td>\n",
" <td>0.232110</td>\n",
" <td>0.227014</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.223264</td>\n",
" <td>0.288414</td>\n",
" <td>0.862778</td>\n",
" <td>2.626628</td>\n",
" <td>4.187569</td>\n",
" <td>5.111817</td>\n",
" <td>3.467074</td>\n",
" <td>1.223540</td>\n",
" <td>0.227853</td>\n",
" <td>0.228436</td>\n",
" <td>0.314481</td>\n",
" <td>0.423137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.242363</td>\n",
" <td>0.228054</td>\n",
" <td>0.345122</td>\n",
" <td>1.466692</td>\n",
" <td>2.883528</td>\n",
" <td>4.908470</td>\n",
" <td>3.411578</td>\n",
" <td>0.335716</td>\n",
" <td>0.219319</td>\n",
" <td>0.230177</td>\n",
" <td>0.338206</td>\n",
" <td>0.390640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.248102</td>\n",
" <td>0.235064</td>\n",
" <td>0.272863</td>\n",
" <td>0.733137</td>\n",
" <td>1.099306</td>\n",
" <td>1.577764</td>\n",
" <td>1.024151</td>\n",
" <td>0.327566</td>\n",
" <td>0.220924</td>\n",
" <td>0.219709</td>\n",
" <td>0.224767</td>\n",
" <td>0.232645</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.228356</td>\n",
" <td>0.225141</td>\n",
" <td>0.224682</td>\n",
" <td>0.220621</td>\n",
" <td>0.216752</td>\n",
" <td>0.217187</td>\n",
" <td>0.220031</td>\n",
" <td>0.223449</td>\n",
" <td>0.224878</td>\n",
" <td>0.221863</td>\n",
" <td>0.218831</td>\n",
" <td>0.216767</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 0.225015 0.225345 0.272857 0.729639 0.582967 0.247012 0.226198 \n",
"1 0.219865 0.391240 0.690932 2.042546 3.075608 4.037020 3.672616 \n",
"2 0.240500 0.795924 1.346466 2.503594 3.599861 4.834603 5.939392 \n",
"3 0.250407 0.777373 1.590181 3.435519 4.925149 5.464176 4.794639 \n",
"4 0.237722 0.514055 1.414296 3.949755 5.398731 5.301242 4.855982 \n",
"5 0.233314 0.417724 1.432895 3.420538 5.042695 5.480419 5.023833 \n",
"6 0.223264 0.288414 0.862778 2.626628 4.187569 5.111817 3.467074 \n",
"7 0.242363 0.228054 0.345122 1.466692 2.883528 4.908470 3.411578 \n",
"8 0.248102 0.235064 0.272863 0.733137 1.099306 1.577764 1.024151 \n",
"9 0.228356 0.225141 0.224682 0.220621 0.216752 0.217187 0.220031 \n",
"\n",
" 7 8 9 10 11 \n",
"0 0.217461 0.215282 0.218239 0.221481 0.222377 \n",
"1 1.279120 0.221846 0.228740 0.230096 0.236277 \n",
"2 4.430233 0.457803 0.256889 0.248123 0.252668 \n",
"3 4.673723 1.374705 0.249504 0.239498 0.237566 \n",
"4 4.799784 0.925438 0.233331 0.224005 0.230837 \n",
"5 3.582309 0.227660 0.229188 0.232110 0.227014 \n",
"6 1.223540 0.227853 0.228436 0.314481 0.423137 \n",
"7 0.335716 0.219319 0.230177 0.338206 0.390640 \n",
"8 0.327566 0.220924 0.219709 0.224767 0.232645 \n",
"9 0.223449 0.224878 0.221863 0.218831 0.216767 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_clean"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x2160 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(14,30)) # Sample figsize in inches\n",
" \n",
"# Default heatmap: just a visualization of this square matrix\n",
"p1 = sns.heatmap(df_clean, cmap=\"Greys_r\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x2160 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"frames = slice_per(crispmeans[6:-1], 12)\n",
"# align the frames\n",
"\n",
"my_df = pd.DataFrame(frames)\n",
"# my_df\n",
"\n",
"df = my_df.transpose()\n",
"df_clean = df.drop([28]) # the last row is incomplete\n",
"\n",
"fig, ax = plt.subplots(figsize=(14,30)) # figsize in inches\n",
"p1 = sns.heatmap(df_clean, cmap=\"Greys_r\")\n",
"\n",
"# the video contains three separate frames. Here is what they look like:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![process: still, crushed, reconstructed](compare.jpg)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment