From 39520b9c4be0860ac9fe5f4a8814bad4b4f19b2d Mon Sep 17 00:00:00 2001 From: chvmvd Date: Tue, 3 Jan 2023 17:44:25 +0900 Subject: [PATCH 1/2] Add week6 article --- docs/02advanced/02image/black_to_green.png | Bin 0 -> 6815 bytes .../02image/black_to_red.drawio.png | Bin 0 -> 3969 bytes docs/02advanced/02image/gradation.png | Bin 0 -> 12397 bytes docs/02advanced/02image/index.mdx | 109 ++++++++++++++++++ .../02image/lattice_pattern.drawio.svg | 41 +++++++ docs/02advanced/02image/white_to_blue.png | Bin 0 -> 6744 bytes static/image/black_and_white.ipynb | 78 +++++++++++++ static/image/black_to_green.ipynb | 84 ++++++++++++++ static/image/black_to_red.ipynb | 78 +++++++++++++ static/image/color.ipynb | 78 +++++++++++++ static/image/gradation.ipynb | 104 +++++++++++++++++ static/image/grayscale.ipynb | 78 +++++++++++++ static/image/lattice_pattern.ipynb | 85 ++++++++++++++ static/image/white_to_blue.ipynb | 92 +++++++++++++++ 14 files changed, 827 insertions(+) create mode 100644 docs/02advanced/02image/black_to_green.png create mode 100644 docs/02advanced/02image/black_to_red.drawio.png create mode 100644 docs/02advanced/02image/gradation.png create mode 100644 docs/02advanced/02image/index.mdx create mode 100644 docs/02advanced/02image/lattice_pattern.drawio.svg create mode 100644 docs/02advanced/02image/white_to_blue.png create mode 100644 static/image/black_and_white.ipynb create mode 100644 static/image/black_to_green.ipynb create mode 100644 static/image/black_to_red.ipynb create mode 100644 static/image/color.ipynb create mode 100644 static/image/gradation.ipynb create mode 100644 static/image/grayscale.ipynb create mode 100644 static/image/lattice_pattern.ipynb create mode 100644 static/image/white_to_blue.ipynb diff --git a/docs/02advanced/02image/black_to_green.png b/docs/02advanced/02image/black_to_green.png new file mode 100644 index 0000000000000000000000000000000000000000..87ac22358ed053e715679537e6c4a9b3a85c09c6 GIT binary patch literal 6815 zcmd^@c{tSj+sD6Dl#&*uLpU8u5?ZLnGDxaPC}M15!cj@~u?;hn5=u^klx-x8eIo1F zS}EJeHf5V+8H{}}W^BLDbUNqvJkL4Lxz6+a`8%#_u5p>~jQM=;`~7~s?>p>*;Td5e zaUlqTgb`;?8AA|XGVifo0Q_a_*b58r1jFc=V@zDHV0>&n93TT*jN1)Y%ne7oAH5ws zJRMzKjw&5fI&|>IYZ#21r<$^|^Y0fZxq4hx)=V)G1|PD)?W~0-1c})49();EBu5Am z--I}&bICVhyeIHRJ94>p8X4H!wYk%3|9o-G&e4;`0tf9y&)v*;c=|}#tu}cCsV6eD ztM0T;ZHDE2mkS~8x^8Rs)Tz97lPwV5W^wjOM5%G|_T4U`n@+{$`+rUucQ_Ii}@drO*`JkY#?R@;u;~%vlX#3jr z(B)eYA9Q}pk5JGC{w|)!saxL$oQd>Uk^gA)t>uvkf($lk2Q%^0jC#x@- z@IeB}w4)EOryr;4In19@T&_CnkYvstshiF_o;lq~GKV8I zQ4(Z7Zh;YwquCNW=OZ~eK{c)z8W~}qLeFQGu-;OPj`y>+)=!QkU~uaW}b=(p}fD(TsoNEFKA($H)7?xwGd8 z5OiFpdon0QL^>}uRdyZ!&Cvdv+S)J}44F7N?K?2-`?Yctq^%{!R!@$O7BxsXadB>L zuFwAIg|p!KfTCgq8v_OL9hmUZCKUQk+nJh~WtEniN68s=jJ9WcO?1OFXPb48+o?e> zA&f5nY_2O#Um7?2@R6d`zG^zzf1>P6x%W6_Gy=3x7fqORx~*!xK=2H<@}Zz#EQ0DZ zT(2=^f?+-XeiUkMg^>>8P3ru-x5Ljr4`UnX>ja@v&8>glVSlR){{a^rUYC)VXBf55 zz!;0A0O_b+ZQ5N_Sa>SIv+wmfQ&UrU1qFTGkWCl;{L1)mYFmp5L%SC2gf8gn1_R|3 zy3*m}y_Ht6N~o6D>LrInbswdGrWCz-5Z7H?I@0uGFPWL`gp)Ed&aPXx?)r@z6+=#K z?d>0!b0N~mcY=_c{-{^b$)~?$WoN58cdA5495*Bkuoq(pgp`JchEPu&oVbKvRYjBj zts5uT*tO6uZGykQt*L3ugWa%{N`LmeBcD{{8L3E;5t$F#<%{(aEWG@Rf4sZQ#I>nwm>ql4M$T zVWEm&rH$sydl}0L-+XWz((m8jq&fX|I}mH-kop%0Dj`4SFLdcqL$ruhFT4xwk3Z(z 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

IS$&bM7QY~G zjW$vPnIFPy0hy~jTs2yvq0SUJN)INzXZB6nlHR}Am&_015hNqWPT=h~KNcv}Lx(8S zFVd?&M-}H&eHQL?f*5dn%sYyZc5kIUR)=<{8Ocp>+bL!>Qj;A}N}W)eaZ`@bKxkKT zYEmLmLKn)mv-BlucX0@UfdmvWXXw*d)wC)viT!g_{_PxESh!4|<`j-)w}zUCchg(q z1xr1MC+<0+nUS9e7~iv)+50w@_Mm~HZ$xWT*6z2^sIWkks`mD+!D%7FV|nEY1f2x5A`J6S9tKh=1# znE$X8onh5u_t{wI6?+pz#ap1PjbYYTkyWWZnp_qrMN z{6r^!zaAyg3Q8z%u!v#!jH{e@(|?mca|;W3PLRj8?pN%$6S)}(Y%eL;%hc-xf=6nsXnC1AA?n!7 zoQw2S(NWexWDfFTE3aHaHr(&8wG}HvpYk;t|31Iq85)u|05-{sCM`c`9ej(*h|dM3 zk7D}igha-6ZRzW44IjAn<<@keOMBkCk{^+INs*WXn4Q+j*UJ<>6_tW=!e7oh;6(Tw zn`@G1L@|H3V@S=Y;;{l`c^zs+VfLzt%hng~k?(5M}Nkp+S0_vP;!*RrhdjslSyx#|l zjg#jw3-W6I+dQ6s00UhQ8YrQ~_U7D8FL)eB?9A&~9P=Sc<*U^r%VCc})k->DYkl*v zF*%4;G!;t@4&|!G)=@pP2O|SAiJ4&!We}OH^E#vIiHno{lBdESjZ-7#8o}ZmMpklVPn+zWkS*Ap^1Y-#)XR)K}b7Q zYx^c8HPzhPTd`M$uUAG4Z>9;)4Qf6prW+0i#K04krqwMpApM+5wM@fICa0uASAW8n zmBoAC*a6S=t2Umxk=8Y$NtU0DZ{KwO`G>!{hi~?r1<5uS+qfzUtc$hTOC5i`^ktL3 z@3CrwZJ@9y*#|mSH&?$^hW^o8yd`!sU~Z_WtX;=eOiawCHlPTY40E-HL%Re8nVHcF zU0p8?K?`w*oj=6_c;q+qlK-Fnz51+a58nhLTPXcbp=|ePvukGEYvxa2j z1M6D{g2rMv41#gN+=6KMCGQ)nR?w zis@2qyt+jLVi!99&eh#LZ=>3#C?!2zTp0?TDX|&}TAfIWkz#{Bh^X^JjewbF8WUjp zgUScfWn)ZtqvjKl0tS#c@4E4Ov?1kb{A<8|1{?au)DLAH%m z*pU4K1F^hSE7lDJ)=l@&kQdcUPRNYIZ`9>Oio5GgB z|8zyadUPQDR|PioX@#oRBie%?PiNn)>+Wb}*Z)E{do9+2^P_QcUaUc!aMW zjf!MS`lM|PFE=b}^ID4%zy>Vm?WdrTyET9zGl>qtQ^!GzLlvG2a)KrjRAl^}(W=YO;N?0t0=m2ACxd!`;p zr+*$y{P^(u{A+k{yJeAOcZw>)k6Bc8>4`$!=W}A3e!m3{VRF?_{o{ndk(IWGGnIjA=KgEGh*qXEUOHjdpQd`oNWp)&aN%tOlYfXss$DJ$Q~vG4!gNl`3E z1bqJZYduKAg4;uevff1tBj!in1%H_*`meF7c#naVJF015L-2h$wAvP^1`Pzp>h!11 ztS9D;2X?NzeeTZKDEA^v9I!)^Rck)p+PTPx*kII5;B+lR}JxUygK3qAwpF1yG(td-a7o~&Wwm3dPG=sDih zkk(x_Fv~ap5Et>qnT>N;FWBJpBZ?`1&Wo_Hu*njlxU#^W!@uzJ^SfTV_S(6)>6fqr zsi)!6&c?yI#_Sw5*Kw1ryIH0IZYoc=z!jVPNz(86-XC;sSgI&a2E(hHN_ACe zSaD*5JeNEBME!~DdViT4to{QKKVJC8jbL=YM{aUeJqtAn+Zcy^C=TbyMWpRH?*|#x zOj}%^ix^Ig*jUY}uOBS5sUQvb_uB0yf=)TDA*^<4dRhqp$mBw+qB^LiE%n&y0_jVR zQ6F;Wa=Di;Uc9$jKfI>R1|qW8)zh=UK9ZRrxD0HKpr7EN$MEWxZ>;89<^6x@#?MC> X-`VF43SRaQ@XtWs_&omHwOjuOuH0>O literal 0 HcmV?d00001 diff --git a/docs/02advanced/02image/index.mdx b/docs/02advanced/02image/index.mdx new file mode 100644 index 000000000..43a1dee4d --- /dev/null +++ b/docs/02advanced/02image/index.mdx @@ -0,0 +1,109 @@ +--- +sidebar_position: 2 +--- + +import ViewSource from "@site/src/components/ViewSource"; +import Answer from "@site/src/components/Answer"; + +# 画像の表現 + +Python で画像を表現してみましょう。 + +## 白黒の表現 + +東京大学がアルゴリズム入門の授業用に作った `ita` ライブラリを使えば、簡単に画像を表現できます。 + +次のように、0 と 1 が格納された二次元配列を作って、それを `ita` ライブラリの `image_show` 関数に与えれば、白黒の画像を表現できます。0 が黒、1 が白となります。 + + + +### 練習問題 + +`ita` ライブラリを使って次のような画像を作ってみましょう。 + +![lattice patter](lattice_pattern.drawio.svg) + + + + + +## グレースケール + +0 から 1 の間で数値を変化させることで、グレースケールを表現することもできます。 + + + +## カラー画像 + +赤、緑、青の順に 0 から 1 の範囲で指定することで、カラー画像を表現することもできます。 + + + +:::tip 光の三原色 + +光の三原色は、赤、緑、青です。この 3 つを混ぜることで、すべての色を表現することが可能です。 + +これを使ったのが、RGB です。これは、赤(Red)、緑(Green)、青(Blue)の頭文字です。 + +コンピューターでは、0 から 255 の 256 段階でそれぞれの色を表すので、$256^3 = 16777216$ 通りの表現が可能です。 + +::: + +:::tip 色の三原色 + +色にも三原色があります。 +色の三原色は、シアン、マゼンタ、イエローです。 + +これを使ったのが、CMYK です。インクなどに使われます。これは、シアン(Cyan)、マゼンタ(Magenta)、イエロー(Yellow)の頭文字です。K は Blac**K**からだと言われますが、キープレート(**K**ey plate)からだそうです。K が入っているのは、インク代を節約するためと綺麗な黒を表現するためです。 + +::: + +### 練習問題 + +次のような画像を作ってみましょう。 + +![black to red](black_to_red.drawio.png) + + + + + +## 練習問題 + +### 練習問題 1 + +左から右にかけて、黒色から緑色に色が変化するグラデーション画像を作ってみましょう。 + +![black to green](black_to_green.png) + + + + + +### 練習問題 2 + +左から右にかけて、白色から青色に色が変化するグラデーション画像を作ってみましょう。 + +![white to blue](white_to_blue.png) + + + +加重平均をとると、うまくできます。 + + + + + +### 練習問題 3 + +左上が白、右上が赤、左下が緑、右下が青となるようなグラデーション画像を作ってみましょう。 + +![gradation](gradation.png) + + + +二次元で加重平均をとると、うまくできます。 + + + + diff --git a/docs/02advanced/02image/lattice_pattern.drawio.svg b/docs/02advanced/02image/lattice_pattern.drawio.svg new file mode 100644 index 000000000..167ab7d9d --- /dev/null +++ b/docs/02advanced/02image/lattice_pattern.drawio.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/02advanced/02image/white_to_blue.png b/docs/02advanced/02image/white_to_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe265cd4492aeb6274ccfb8f4546de4655a0f62 GIT binary patch literal 6744 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 literal 0 HcmV?d00001 diff --git a/static/image/black_and_white.ipynb b/static/image/black_and_white.ipynb new file mode 100644 index 000000000..78f1502eb --- /dev/null +++ b/static/image/black_and_white.ipynb @@ -0,0 +1,78 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "image = [[0, 0, 0], [1, 1, 1], [0, 0, 0]]\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "

" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/black_to_green.ipynb b/static/image/black_to_green.ipynb new file mode 100644 index 000000000..af5ce89d6 --- /dev/null +++ b/static/image/black_to_green.ipynb @@ -0,0 +1,84 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "n = 100\n", + "image = []\n", + "for i in range(n):\n", + " tmp = []\n", + " for j in range(n):\n", + " tmp.append([0, j / n, 0])\n", + " image.append(tmp)\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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p5vxfUAAAPQWAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMNGnAK1cuVIJCQmqrq4OH7tw4YKqqqqUlZWlIUOGqLy8XIFAoK/rBADcYnodoAMHDujXv/617r777ojjixYt0o4dO7Rt2zY1NDTo9OnTmjt3bp8XCgC4tfQqQJ988okqKiq0ceNGDR06NHy8vb1dv/nNb/T888/rS1/6kiZOnKhNmzbp7bff1r59+675Wh0dHQoGgxEPAMCtr1cBqqqq0qxZs1RWVhZxvLm5WZcuXYo4XlRUpIKCAjU2Nl7zterq6uT1esOP/Pz83iwJADDAxBygrVu36p133lFdXd1VY36/XykpKcrMzIw47vP55Pf7r/l6NTU1am9vDz9aW1tjXRIAYABKjuXk1tZWLVy4ULt371ZqampcFuDxeOTxeOLyWgCAgSOmO6Dm5madOXNG9957r5KTk5WcnKyGhgatWbNGycnJ8vl8unjxotra2iKuCwQCysnJiee6AQADXEx3QDNmzNC7774bceyhhx5SUVGRnn76aeXn52vQoEGqr69XeXm5JKmlpUWnTp1SaWlp/FYNABjwYgpQenq6xo0bF3Fs8ODBysrKCh9/5JFHtHjxYg0bNkwZGRl64oknVFpaqilTpsRv1QCAAS+mAEXjhRdeUGJiosrLy9XR0aGZM2fqpZdeivc0AIABLsE556wXcaVgMCiv1xt58MqvVCXp+mNdx7sb6+u1vZ0nljX0dG285mGfopuHfYpuHvYpunlu5X0KShp2+XtDMzIydD38LDgAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGA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Am3fvl179uxRYWFhxPjEiRM1aNCgiD1raWnRqVOnbqs9mzFjht59910dOnQo/CguLlZFRUX41+yTNG3atKvexn/s2DGNHDlSklRYWKicnJyIfQoGg2pqarqt9un8+fNX/dc8k5KSFAqFJLFPcWH9Lohr2bp1q/N4PO7ll1927733nps/f77LzMx0fr/femkmHnvsMef1et1f/vIX9+GHH4Yf58+fD5/z6KOPuoKCArdnzx538OBBV1pa6kpLSw1X3T9c+S4459gn5y6/RT05OdktX77cHT9+3G3evNndcccd7g9/+EP4nJUrV7rMzEz3+uuvu3/84x9u9uzZt93biysrK91nP/vZ8Nuw//SnP7nhw4e7JUuWhM9hn/qmXwbIOefWrl3rCgoKXEpKips8ebLbt2+f9ZLMSLrmY9OmTeFzPv30U/f444+7oUOHujvuuMN9/etfdx9++KHdovuJrgFiny7bsWOHGzdunPN4PK6oqMht2LAhYjwUCrna2lrn8/mcx+NxM2bMcC0tLUartREMBt3ChQtdQUGBS01NdZ/73Ofcj370I9fR0RE+h33qG/57QAAAE/3ua0AAgNsDAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE/8PXdUsO1Hkf7oAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/black_to_red.ipynb b/static/image/black_to_red.ipynb new file mode 100644 index 000000000..9f7c00fd2 --- /dev/null +++ b/static/image/black_to_red.ipynb @@ -0,0 +1,78 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "image = [[[0, 0, 0], [0.25, 0, 0], [0.5, 0, 0], [0.75, 0, 0], [1, 0, 0]]]\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/color.ipynb b/static/image/color.ipynb new file mode 100644 index 000000000..17834a6be --- /dev/null +++ b/static/image/color.ipynb @@ -0,0 +1,78 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "image = [[[1, 0, 0], [0, 1, 0], [0, 0, 1]]]\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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ui5duqTk5ORW7y8zM1OSdPz48bsi6CQmJqpLly6qqqpqtL6qqqrZcUtOTm5T+7tBe8bxf91zzz166KGHdPz4cSdKtFpzc9Lr9eree+/tpKrskJGRwRv6t8ybNy/8ZZf77ruvxbacK5vXlnH8X+09V0btR1c9e/ZUampqi0tcXJyysrL01VdfqaKiItx369atamhoCIeX1jhw4ICkry/h3g3i4uI0YsQIlZWVhdc1NDSorKysUYL+tqysrEbtJWnLli3Ntr8btGcc/1d9fb0OHjx418y9SGJOOufAgQPMSUnGGM2bN08bN27U1q1bdf/999+yD/PyZu0Zx//V7nPlbd/OHAUmTJhgHnroIbN7926zc+dO88ADD5hp06aF/37mzBkzaNAgs3v3bmOMMcePHzfPPvus2bdvnzl58qR59913TUpKinn44Yc76xA6xbp164zb7TarV682n376qZkzZ46Jj483gUDAGGPM9OnTTWFhYbj9rl27TGxsrFm+fLk5cuSIKSoqMvfcc485ePBgZx1CVGjrOD7zzDPmgw8+MCdOnDAVFRVm6tSpxuPxmMOHD3fWIUSNmpoas3//frN//34jybz44otm//795vPPPzfGGFNYWGimT58ebv+f//zHdO3a1Tz55JPmyJEjpqSkxHTp0sWUlpZ21iFEhbaO40svvWQ2bdpk/v3vf5uDBw+aBQsWmJiYGPOvf/2rsw4havzmN78xPp/PbN++3XzxxRfh5cqVK+E2nCtvrT3jGKlzpRVB5+LFi2batGmmW7duxuv1mlmzZpmamprw30+ePGkkmW3bthljjDl16pR5+OGHTUJCgnG73WbgwIHmySefNMFgsJOOoPO88sorpl+/fiYuLs5kZGSYTz75JPy3MWPGmJkzZzZq//e//91897vfNXFxcebBBx80//jHPzq44ujUlnFcuHBhuG1SUpKZOHGiqays7ISqo8+Nrzn/73Jj/GbOnGnGjBlzU5+0tDQTFxdnUlJSzJtvvtnhdUebto7jsmXLzIABA4zH4zEJCQlm7NixZuvWrZ1TfJRpahwlNZpnnCtvrT3jGKlzpev/CwAAALBO1N6jAwAAcLsIOgAAwFoEHQAAYC2CDgAAsBZBBwAAWIugAwAArEXQAQAA1iLoAAAAaxF0AACAtQg6AADAWgQdAABgLYIOAACw1v8BN3qqpWLL/+4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/gradation.ipynb b/static/image/gradation.ipynb new file mode 100644 index 000000000..424e4386c --- /dev/null +++ b/static/image/gradation.ipynb @@ -0,0 +1,104 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "def calc_weighted_mean(top_left, top_right, bottom_left, bottom_right, s, t):\n", + " return (top_left * (1 - s) + top_right * s) * (1 - t) + (\n", + " bottom_left * (1 - s) + bottom_right * s\n", + " ) * t\n", + "\n", + "\n", + "image = []\n", + "n = 100\n", + "for i in range(n):\n", + " tmp = []\n", + " for j in range(n):\n", + " top_left = [1, 1, 1]\n", + " top_right = [1, 0, 0]\n", + " bottom_left = [0, 1, 0]\n", + " bottom_right = [0, 0, 1]\n", + " tmp.append([0, 0, 0])\n", + " for k in range(3):\n", + " tmp[j][k] = calc_weighted_mean(\n", + " top_left[k],\n", + " top_right[k],\n", + " bottom_left[k],\n", + " bottom_right[k],\n", + " j / (n - 1),\n", + " i / (n - 1),\n", + " )\n", + " image.append(tmp)\n", + "\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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2267TS0tLdqyZUv9Oa7TSb/4xS/0kY98RMuXL9eSJUt0wQUX6MCBA/Xjxhjt2LFDK1eu1JIlSzQ4OKgjR4547HH5qtWqtm/frv7+fi1ZskTveMc79PnPf75hg02uU04mQA888IBpa2sz3/zmN82///u/m7/8y780y5YtM+Pj47675sX69evNnj17zKFDh8wzzzxj3v/+95u+vj7zyiuv1Mt84hOfML29vWZkZMQcOHDAXHLJJebSSy/12Gu/9u/fb84++2zzrne9y9x4443157lOxvzP//yPOeuss8xHP/pR89RTT5kXX3zR/PCHPzT/+Z//WS9z2223mUqlYh566CHz7LPPmg9+8IOmv7/fvP766x57Xq6dO3ea5cuXm4cffti89NJLZu/evebUU081X/3qV+tluE75BDkAXXzxxWZoaKj+uFqtmp6eHjM8POyxV+F4+eWXjSTz+OOPG2OMOXbsmDnllFPM3r1762X+4z/+w0gy+/bt89VNb44fP27OOecc8+ijj5o/+IM/qA9AXKeTPvOZz5jLLrtszuO1Ws10d3ebv//7v68/d+zYMdPe3m7uv//+MroYhCuuuMJ87GMfa3ju6quvNhs3bjTGcJ1cCC4Ed+LECR08eFCDg4P151pbWzU4OKh9+/Z57Fk4JiYmJEmnn366JOngwYN68803G67ZqlWr1NfXtyCv2dDQkK644oqG6yFxnf7f9773Pa1Zs0Yf+tCHtGLFCl144YW6++6768dfeukljY2NNVynSqWitWvXLqjrdOmll2pkZEQvvPCCJOnZZ5/VE088ofe9732SuE4uBLcb9q9//WtVq1V1dXU1PN/V1aXnn3/eU6/CUavVtGXLFq1bt07nn3++JGlsbExtbW1atmxZQ9muri6NjY156KU/DzzwgH72s5/p6aefnnGM63TSiy++qDvuuENbt27VZz/7WT399NO64YYb1NbWpk2bNtWvxWw/gwvpOt1yyy2anJzUqlWrtGjRIlWrVe3cuVMbN26UJK6TA8ENQIg3NDSkQ4cO6YknnvDdleCMjo7qxhtv1KOPPqqOjg7f3QlWrVbTmjVrdOutt0qSLrzwQh06dEh33nmnNm3a5Ll34fjOd76je++9V/fdd5/OO+88PfPMM9qyZYt6enq4To4EF4I744wztGjRohkzk8bHx9Xd3e2pV2HYvHmzHn74Yf3oRz/SmWeeWX++u7tbJ06c0LFjxxrKL7RrdvDgQb388st6z3veo8WLF2vx4sV6/PHHdfvtt2vx4sXq6uriOklauXKl3vnOdzY8d+655+ro0aOSVL8WC/1n8NOf/rRuueUWXXPNNbrgggv053/+57rppps0PDwsievkQnADUFtbm1avXq2RkZH6c7VaTSMjIxoYGPDYM3+MMdq8ebMefPBBPfbYY+rv7284vnr1ap1yyikN1+zw4cM6evTogrpml19+uX7+85/rmWeeqX+tWbNGGzdurP+f6yStW7duxjT+F154QWeddZYkqb+/X93d3Q3XaXJyUk899dSCuk6vvfbajLt5Llq0SLVaTRLXyQnfsyBm88ADD5j29nbzrW99yzz33HPmuuuuM8uWLTNjY2O+u+bFJz/5SVOpVMyPf/xj86tf/ar+9dprr9XLfOITnzB9fX3mscceMwcOHDADAwNmYGDAY6/DMH0WnDFcJ2NOTlFfvHix2blzpzly5Ii59957zdve9jbzj//4j/Uyt912m1m2bJn57ne/a/7t3/7NXHnllQtuevGmTZvM7/7u79anYf/zP/+zOeOMM8zNN99cL8N1yifIAcgYY772ta+Zvr4+09bWZi6++GLz5JNP+u6SN5Jm/dqzZ0+9zOuvv26uv/56c9ppp5m3ve1t5k/+5E/Mr371K3+dDkR0AOI6nfT973/fnH/++aa9vd2sWrXK3HXXXQ3Ha7Wa2b59u+nq6jLt7e3m8ssvN4cPH/bUWz8mJyfNjTfeaPr6+kxHR4f5vd/7PfPXf/3XZmpqql6G65QP9wMCAHgRXA4IALAwMAABALxgAAIAeMEABADwggEIAOAFAxAAwAsGIACAFwxAAAAvGIAAAF4wAAEAvGAAAgB48X9OhBRvT5cAXgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/grayscale.ipynb b/static/image/grayscale.ipynb new file mode 100644 index 000000000..dc158e874 --- /dev/null +++ b/static/image/grayscale.ipynb @@ -0,0 +1,78 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "image = [[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]]\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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TyI6OlrqSIqTmpqKixcvor6+3rUYjUZkZGSgvr4earVa6oiKMWvWrMdu9b969SrGjRsnUSJlevjwoduH+wKAWq2G0+mUKJHyRUdHQ6/Xux0X7XY7zp0757XjIl82GgCz2YzMzEwYjUYkJiZi9+7d6OjoQFZWltTRFCUnJwfl5eX4+uuvERgY6HrtNDg4GP7+/hKnU4bAwMDHriEaPnw4wsLCeG3RIFu1ahVSUlKwZcsWvPLKK6iurkZpaSlKS0uljqYoixcvxubNmxEZGYnJkyfjwoUL2LVrF5YvXy51NFlrb2/HtWvXXOs3btxAfX09QkNDERkZiby8PHzwwQeYOHEioqOjUVBQAIPBgPT0dO8E9Mo9TQqwd+9eITIyUvDz8xMSExOFs2fPSh1JcQD0uHzyySdSR1M03iotnuPHjwtTpkwRNBqNEBMTI5SWlkodSXHsdruQm5srREZGClqtVhg/frzw3nvvCZ2dnVJHk7VTp071+Ps4MzNTEIR/bpcuKCgQdDqdoNFohNTUVKGhocFr+VSCwLchJCIiIvngNS9EREQkKywvREREJCssL0RERCQrLC9EREQkKywvREREJCssL0RERCQrLC9EREQkKywvREREJCssL0RERCQrLC9EREQkKywvREREJCssL0RERCQr/wOwnSmTC6klvAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/lattice_pattern.ipynb b/static/image/lattice_pattern.ipynb new file mode 100644 index 000000000..9f3a18d8b --- /dev/null +++ b/static/image/lattice_pattern.ipynb @@ -0,0 +1,85 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "image = [\n", + " [1, 0, 1, 0, 1, 0],\n", + " [0, 1, 0, 1, 0, 1],\n", + " [1, 0, 1, 0, 1, 0],\n", + " [0, 1, 0, 1, 0, 1],\n", + " [1, 0, 1, 0, 1, 0],\n", + " [0, 1, 0, 1, 0, 1],\n", + "]\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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AKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApBAYAFLMKGvhZrMZ9Xq9rOVLUavVyh6h64qiKHuEUlRxryOqud9V3euz4QwGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApBAYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0CK8wrMli1bolarxYYNGy7QOABMFeccmP3798e2bdti8eLFF3IeAKaIcwrMyZMnY/Xq1fHb3/42rrjiigs9EwBTwDkFZmBgIO69995YuXLlf31su92OVqt1yg2AqW9Gp0/YsWNHHDx4MPbv339Wjx8cHIzHH3+848EAmNw6OoMZHh6ORx55JH7/+9/HrFmzzuo5mzZtimazOXEbHh4+p0EBmFxqRVEUZ/vgF154IR588MGYPn36xH1jY2NRq9Vi2rRp0W63T/l3p9NqtaLRaESz2Yx6vX7uk09CtVqt7BG6roMvrymlinsdUc39rupen81reEdvkd11111x+PDhU+5bu3Zt3HzzzfGzn/3sv8YFgOroKDC9vb2xaNGiU+679NJL48orr/zc/QBUm5/kByBFx99F9v/bs2fPBRgDgKnGGQwAKQQGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApBAYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKSYUdbCjUajrKVLUxRF2SN0Xa1WK3uEUlRxryOqud9V2+tWq3XWr9/OYABIITAApBAYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApOgoMI899ljUarVTbjfffHPWbABMYjM6fcItt9wSf/7zn//vE8zo+FMAUAEd12HGjBlxzTXXZMwCwBTS8TWYd999N/r6+uKGG26I1atXxwcffPCFj2+329FqtU65ATD1dRSY5cuXx7PPPhuvvPJKPPXUU/H+++/HHXfcESMjI2d8zuDgYDQajYlbf3//eQ8NwMWv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", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "execution_count": null + } + ] +} diff --git a/static/image/white_to_blue.ipynb b/static/image/white_to_blue.ipynb new file mode 100644 index 000000000..b80c72252 --- /dev/null +++ b/static/image/white_to_blue.ipynb @@ -0,0 +1,92 @@ +{ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ + { + "metadata": {}, + "source": [ + "!pip install ita" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: ita in /home/w/.local/lib/python3.10/site-packages (0.2.12)\n", + "Requirement already satisfied: matplotlib in /home/w/.local/lib/python3.10/site-packages (from ita) (3.6.0)\n", + "Requirement already satisfied: numpy in /home/w/.local/lib/python3.10/site-packages (from ita) (1.23.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (4.37.4)\n", + "Requirement already satisfied: cycler>=0.10 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (0.11.0)\n", + "Requirement already satisfied: packaging>=20.0 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (21.3)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.4.4)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->ita) (2.4.7)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib->ita) (9.0.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (2.8.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/w/.local/lib/python3.10/site-packages (from matplotlib->ita) (1.0.5)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib->ita) (1.16.0)\n" + ] + } + ], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "import ita\n", + "\n", + "%matplotlib inline" + ], + "cell_type": "code", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "source": [ + "n = 100\n", + "image = []\n", + "for i in range(n):\n", + " tmp = []\n", + " for j in range(n):\n", + " right_color = [0, 0, 1]\n", + " left_color = [1, 1, 1]\n", + " tmp.append(\n", + " [\n", + " (left_color[0] * (n - j) + right_color[0] * j) / n,\n", + " (left_color[1] * (n - j) + right_color[1] * j) / n,\n", + " (left_color[2] * (n - j) + right_color[2] * j) / n,\n", + " ]\n", + " )\n", + " image.append(tmp)\n", + "ita.plot.image_show(image)" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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IACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATAwrQ6tWrFRcXp6qqqvCxy5cvq6KiQhkZGRoxYoRKS0sVCAQGuk4AwC2m3wE6cuSIfvvb3+qee+6JOL5kyRLt2bNHO3fuVENDg86dO6cFCxYMeKEAgFtLvwL02WefqaysTFu3btXIkSPDx9vb2/XKK6/oxRdf1P33368pU6aorq5O7777rg4dOtTjbXV0dCgYDEZcAAC3vn4FqKKiQnPnzlVJSUnE8ebmZl29ejXieEFBgfLy8tTY2NjjbdXW1srr9YYvubm5/VkSAGCIiTpAO3bs0Hvvvafa2trrxvx+v5KSkpSenh5x3Ofzye/393h71dXVam9vD19aW1ujXRIAYAhKjGZya2urFi9erP379ys5OTkmC/B4PPJ4PDG5LQDA0BHVM6Dm5madP39e9913nxITE5WYmKiGhgatX79eiYmJ8vl8unLlitra2iLOCwQCysrKiuW6AQBDXFTPgGbPnq33338/4tgjjzyigoICPfvss8rNzdWwYcNUX1+v0tJSSVJLS4vOnj2r4uLi2K0aADDkRRWg1NRUTZw4MeLY8OHDlZGRET7+2GOPaenSpRo1apTS0tL01FNPqbi4WNOnT4/dqgEAQ15UAeqLl156SfHx8SotLVVHR4fmzJmjl19+OdZ3AwAY4uKcc856EV0Fg0F5vV61t7crLS1NktTZ+b/xrl9LUigUeb3reG9jAz23v/cTzRoGci771Ldz2ae+ncs+9e1c9uka54JyLvLf8Z7wt+AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBA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QM5ln/p2LvvUt3PZp76dyz5d41xQzkX+O94T/hYcAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMJFovYDunHOSpGAwGD7W2akev5akUCjyetfx3sZ6Gu96/Ubn9vd+ervPG507kMcey33qOv7fb9cXntvf++k+dqP76e8+RXM/A9mnm/X9iOZnOtpzo/m9i+Z3ZyCPPZqfvf4+1u7j0XzvYvkzEc0eRzO3+751vd7bWDTnOhf873+7ndDNoAvQhQsXJEm5ubnGKwEADMSFCxfk9Xq/cDzO3ShRX7JQKKRz587JOae8vDy1trYqLS3NelmDVjAYVG5uLvt0A+xT37BPfcM+9c45pwsXLignJ0fx8V/8Ts+gewYUHx+vMWPGhF+CS0tL4xvcB+xT37BPfcM+9Q379MV6e+bz//gQAgDABAECAJgYtAHyeDz62c9+Jo/HY72UQY196hv2qW/Yp75hn2Jj0H0IAQBwexi0z4AAALc2AgQAMEGAAAAmCBAAwAQBAgCYGLQB2rhxo8aOHavk5GQVFRXp8OHD1ksyU1tbq6lTpyo1NVWZmZmaP3++WlpaIuZcvnxZFRUVysjI0IgRI1RaWqpAIGC04sFh9erViouLU1VVVfgY+3TNxx9/rIceekgZGRlKSUnRpEmTdPTo0fC4c04rVqxQdna2UlJSVFJSolOnThmu+MvX2dmpmpoa5efnKyUlRXfddZeef/75iD+wyT4NkBuEduzY4ZKSktzvfvc79/e//9396Ec/cunp6S4QCFgvzcScOXNcXV2dO3HihDt27Jj71re+5fLy8txnn30WnvP444+73NxcV19f744ePeqmT5/uZsyYYbhqW4cPH3Zjx45199xzj1u8eHH4OPvk3L///W935513uocfftg1NTW506dPu7ffftv94x//CM9ZvXq183q9bvfu3e748ePuO9/5jsvPz3eff/654cq/XCtXrnQZGRlu79697syZM27nzp1uxIgR7te//nV4Dvs0MIMyQNOmTXMVFRXh652dnS4nJ8fV1tYarmrwOH/+vJPkGhoanHPOtbW1uWHDhrmdO3eG53z44YdOkmtsbLRappkLFy64cePGuf3797uvf/3r4QCxT9c8++yzbtasWV84HgqFXFZWlvvlL38ZPtbW1uY8Ho97/fXXv4wlDgpz5851jz76aMSxBQsWuLKyMucc+xQLg+4luCtXrqi5uVklJSXhY/Hx8SopKVFjY6PhygaP9vZ2SdKoUaMkSc3Nzbp69WrEnhUUFCgvL++23LOKigrNnTs3Yj8k9un/vfXWWyosLNSDDz6ozMxMTZ48WVu3bg2PnzlzRn6/P2KfvF6vioqKbqt9mjFjhurr63Xy5ElJ0vHjx3Xw4EE98MADktinWBh0fw37008/VWdnp3w+X8Rxn8+njz76yGhVg0coFFJVVZVmzpypiRMnSpL8fr+SkpKUnp4eMdfn88nv9xus0s6OHTv03nvv6ciRI9eNsU/XnD59Wps2bdLSpUv1k5/8REeOHNHTTz+tpKQklZeXh/eip9/B22mfli9frmAwqIKCAiUkJKizs1MrV65UWVmZJLFPMTDoAoTeVVRU6MSJEzp48KD1Ugad1tZWLV68WPv371dycrL1cgatUCikwsJCrVq1SpI0efJknThxQps3b1Z5ebnx6gaPN954Q9u2bdP27ds1YcIEHTt2TFVVVcrJyWGfYmTQvQQ3evRoJSQkXPfJpEAgoKysLKNVDQ6VlZXau3ev3nnnHY0ZMyZ8PCsrS1euXFFbW1vE/Nttz5qbm3X+/Hndd999SkxMVGJiohoaGrR+/XolJibK5/OxT5Kys7N19913RxwbP368zp49K0nhvbjdfwefeeYZLV++XAsXLtSkSZP0gx/8QEuWLFFtba0k9ikWBl2AkpKSNGXKFNXX14ePhUIh1dfXq7i42HBldpxzqqys1K5du3TgwAHl5+dHjE+ZMkXDhg2L2LOWlhadPXv2ttqz2bNn6/3339exY8fCl8LCQpWVlYW/Zp+kmTNnXvcx/pMnT+rOO++UJOXn5ysrKytin4LBoJqamm6rfbp06dJ1/zfPhIQEhUIhSexTTFh/CqInO3bscB6Px7366qvugw8+cIsWLXLp6enO7/dbL83EE0884bxer/vLX/7iPvnkk/Dl0qVL4TmPP/64y8vLcwcOHHBHjx51xcXFrri42HDVg0PXT8E5xz45d+0j6omJiW7lypXu1KlTbtu2be6OO+5wf/jDH8JzVq9e7dLT092bb77p/va3v7l58+bddh8vLi8vd1/5ylfCH8P+05/+5EaPHu2WLVsWnsM+DcygDJBzzm3YsMHl5eW5pKQkN23aNHfo0CHrJZmR1OOlrq4uPOfzzz93Tz75pBs5cqS744473He/+133ySef2C16kOgeIPbpmj179riJEyc6j8fjCgoK3JYtWyLGQ6GQq6mpcT6fz3k8Hjd79mzX0tJitFobwWDQLV682OXl5bnk5GT31a9+1f30pz91HR0d4Tns08Dw/wMCAJgYdO8BAQBuDwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEz8H0MsfKdtsJ3WAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ], + "execution_count": null + } + ] +} From d05f66d3dc4b98586b4fd4900e80c0a5d742e374 Mon Sep 17 00:00:00 2001 From: chvmvd Date: Tue, 3 Jan 2023 17:57:25 +0900 Subject: [PATCH 2/2] Update update history --- docs/index.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/index.mdx b/docs/index.mdx index 1225e3b49..9c5076f77 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -24,6 +24,8 @@ Python やアルゴリズムについて簡単にまとめていこうかなと ## 更新履歴 +1/3 第六週の分を執筆 画像の表現 第九週の分を増訂 計算量 + 1/1 第九週の分を執筆 モンテカルロ法 12/25 第十週の分を執筆 探索