Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
Image Compression
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nathaniel Callens
Image Compression
Commits
a2df8786
Commit
a2df8786
authored
Mar 17, 2022
by
Nathaniel Callens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
decoder updates
parent
53e2bb11
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
182 additions
and
146 deletions
+182
-146
Error_to_Image-checkpoint.ipynb
.ipynb_checkpoints/Error_to_Image-checkpoint.ipynb
+91
-73
Error_to_Image.ipynb
Error_to_Image.ipynb
+91
-73
No files found.
.ipynb_checkpoints/Error_to_Image-checkpoint.ipynb
View file @
a2df8786
...
...
@@ -27,7 +27,7 @@
},
{
"cell_type": "code",
"execution_count":
3
,
"execution_count":
96
,
"id": "9ed20f84",
"metadata": {
"id": "9ed20f84"
...
...
@@ -100,7 +100,7 @@
},
{
"cell_type": "code",
"execution_count":
4
,
"execution_count":
202
,
"id": "ba2881d9",
"metadata": {},
"outputs": [],
...
...
@@ -112,7 +112,7 @@
},
{
"cell_type": "code",
"execution_count":
144
,
"execution_count":
203
,
"id": "11e95c34",
"metadata": {},
"outputs": [],
...
...
@@ -122,7 +122,7 @@
},
{
"cell_type": "code",
"execution_count":
139
,
"execution_count":
228
,
"id": "434e4d2f",
"metadata": {},
"outputs": [],
...
...
@@ -137,7 +137,7 @@
" error (array): matrix of errors computed in encoding. Same \n",
" shape as the original image (512, 640) in this case\n",
" A (array): Matrix used for the system of equations to create predictions\n",
" Returns:
cd cdcd
\n",
" Returns:\n",
" image (array): The reconstructed image\n",
" \"\"\"\n",
" new_e = error.copy()\n",
...
...
@@ -148,12 +148,6 @@
" z0, z1, z2, z3 = new_e[r-1][c-1], new_e[r-1][c], new_e[r-1][c+1], new_e[r][c-1]\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\n",
" \n",
" if r == 1 and c == 1:\n",
" print(np.linalg.solve(A,y)[-1])\n",
" \n",
" #Real solution that works, DO NOT DELETE\n",
" #new_e[r][c] = int(np.ceil(new_e[r][c] + np.linalg.solve(A,y)[-1]))\n",
" \n",
" new_e[r][c] = np.round(new_e[r][c] + np.linalg.solve(A,y)[-1], 1)\n",
" \n",
" return new_e.astype(int)\n",
...
...
@@ -162,7 +156,7 @@
},
{
"cell_type": "code",
"execution_count":
14
0,
"execution_count":
21
0,
"id": "3cc609dc",
"metadata": {},
"outputs": [
...
...
@@ -170,7 +164,10 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[22471.5]\n"
"22483 22521 22503 22481\n",
"[22491.]\n",
"-9\n",
"[22482.]\n"
]
}
],
...
...
@@ -180,34 +177,34 @@
},
{
"cell_type": "code",
"execution_count":
136
,
"execution_count":
211
,
"id": "5d290a0c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[
22546, 22514, 22513, ..., 22581, 22576, 22587
],\n",
" [
22488, 67, -21, ..., -1, -1, 22576
],\n",
" [
22514, -15, -3, ..., 10, -45, 22575
],\n",
"array([[
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" ...,\n",
" [
22317, 82, -2, ..., -64, 5, 22937
],\n",
" [
22335, -33, 18, ..., 47, -16, 22932
],\n",
" [
22333, 22339, 22362, ..., 22952, 22947, 22961
]])"
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
]])"
]
},
"execution_count":
136
,
"execution_count":
211
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"
er
r"
"
im == new_erro
r"
]
},
{
"cell_type": "code",
"execution_count":
8
,
"execution_count":
9
,
"id": "706f2816",
"metadata": {},
"outputs": [],
...
...
@@ -231,13 +228,13 @@
},
{
"cell_type": "code",
"execution_count":
9
,
"execution_count":
10
,
"id": "530d2cab",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -251,12 +248,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"1
24
\n"
"1
42
\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
sAAAAASUVORK5CYII=\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
sAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -270,12 +267,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"1
81
\n"
"1
54
\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD
4CAYAAADsKpHdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAATH0lEQVR4nO3df4xc13mf8ecbMmFkO3Qka6Wwu3SXiYk0FNHa1kJhYyBwwCRio8BUAQtYo4mIlgBbgWmdNkVKJkDUfwjIyA+1AiICjKWQSl3RhGJDRFy5FugERgFZyspWQlEMq22oSmsy4qZ2HTaFmZB9+8ccwuPl7HI5Q+1wtc8HGMyd955z75mLC373njszTFUhSdJ3DXsAkqQbg4EgSQIMBElSYyBIkgADQZLUrB72APp166231vj4+LCHIUnLyosvvviXVTXSa92yDYTx8XGmpqaGPQxJWlaS/M/51jllJEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQKW8TeVBzG+53ND2/drD90ztH1L0kK8QpAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIELCIQkjye5FySl3us+7dJKsmtXbW9SaaTnEpyd1f9ziTH27pHkqTV1yT5dKs/n2T8Or03SdI1WMwVwkFg29xikvXATwGvd9U2AZPAHa3Po0lWtdX7gV3Axva4vM2dwDeq6n3Aw8An+nkjkqTBXDUQqupLwNd7rHoY+GWgumrbgcNVdaGqTgPTwF1J1gFrq+q5qirgCeDerj6H2vJTwNbLVw+SpKXT1z2EJB8BvlZVfzJn1SjwRtfrmVYbbctz69/Rp6ouAt8E3jPPfnclmUoyNTs728/QJUnzuOZASPIO4FeBX+u1uketFqgv1OfKYtWBqpqoqomRkZHFDFeStEj9XCH8ELAB+JMkrwFjwFeS/ACdv/zXd7UdA860+liPOt19kqwG3k3vKSpJ0lvomgOhqo5X1W1VNV5V43T+Qf9gVf0FcBSYbJ8c2kDn5vELVXUWOJ9kS7s/cD/wdNvkUWBHW/4o8MV2n0GStIQW87HTJ4HngB9OMpNk53xtq+oEcAR4Bfg8sLuqLrXVDwCfpHOj+X8Az7T6Y8B7kkwD/wbY0+d7kSQN4Kr/H0JVfewq68fnvN4H7OvRbgrY3KP+LeC+q41DkvTW8pvKkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJWEQgJHk8ybkkL3fVfj3JnyX50ySfTfL9Xev2JplOcirJ3V31O5Mcb+seSZJWX5Pk063+fJLx6/sWJUmLsZgrhIPAtjm1Z4HNVfX3gf8O7AVIsgmYBO5ofR5Nsqr12Q/sAja2x+Vt7gS+UVXvAx4GPtHvm5Ek9e+qgVBVXwK+Pqf2haq62F5+GRhry9uBw1V1oapOA9PAXUnWAWur6rmqKuAJ4N6uPofa8lPA1stXD5KkpXM97iH8M+CZtjwKvNG1bqbVRtvy3Pp39Gkh803gPb12lGRXkqkkU7Ozs9dh6JKkywYKhCS/ClwEPnW51KNZLVBfqM+VxaoDVTVRVRMjIyPXOlxJ0gL6DoQkO4CfBf5JmwaCzl/+67uajQFnWn2sR/07+iRZDbybOVNUkqS3Xl+BkGQb8O+Aj1TV/+1adRSYbJ8c2kDn5vELVXUWOJ9kS7s/cD/wdFefHW35o8AXuwJGkrREVl+tQZIngQ8DtyaZAR6k86miNcCz7f7vl6vqX1TViSRHgFfoTCXtrqpLbVMP0PnE0k107jlcvu/wGPB7SabpXBlMXp+3Jkm6FlcNhKr6WI/yYwu03wfs61GfAjb3qH8LuO9q45AkvbX8prIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIWEQhJHk9yLsnLXbVbkjyb5NX2fHPXur1JppOcSnJ3V/3OJMfbukeSpNXXJPl0qz+fZPw6v0dJ0iIs5grhILBtTm0PcKyqNgLH2muSbAImgTtan0eTrGp99gO7gI3tcXmbO4FvVNX7gIeBT/T7ZiRJ/btqIFTVl4CvzylvBw615UPAvV31w1V1oapOA9PAXUnWAWur6rmqKuCJOX0ub+spYOvlqwdJ0tLp9x7C7VV1FqA939bqo8AbXe1mWm20Lc+tf0efqroIfBN4T6+dJtmVZCrJ1OzsbJ9DlyT1cr1vKvf6y74WqC/U58pi1YGqmqiqiZGRkT6HKEnqZXWf/d5Msq6qzrbpoHOtPgOs72o3Bpxp9bEe9e4+M0lWA+/myimqt43xPZ8byn5fe+ieoexX0vLR7xXCUWBHW94BPN1Vn2yfHNpA5+bxC21a6XySLe3+wP1z+lze1keBL7b7DJKkJXTVK4QkTwIfBm5NMgM8CDwEHEmyE3gduA+gqk4kOQK8AlwEdlfVpbapB+h8Yukm4Jn2AHgM+L0k03SuDCavyzuTJF2TqwZCVX1snlVb52m/D9jXoz4FbO5R/xYtUCRJw+M3lSVJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEjBgICT510lOJHk5yZNJvjfJLUmeTfJqe765q/3eJNNJTiW5u6t+Z5Ljbd0jSTLIuCRJ167vQEgyCvwrYKKqNgOrgElgD3CsqjYCx9prkmxq6+8AtgGPJlnVNrcf2AVsbI9t/Y5LktSfQaeMVgM3JVkNvAM4A2wHDrX1h4B72/J24HBVXaiq08A0cFeSdcDaqnquqgp4oquPJGmJ9B0IVfU14DeA14GzwDer6gvA7VV1trU5C9zWuowCb3RtYqbVRtvy3PoVkuxKMpVkanZ2tt+hS5J6GGTK6GY6f/VvAP4O8M4kP7dQlx61WqB+ZbHqQFVNVNXEyMjItQ5ZkrSAQaaMfhI4XVWzVfW3wGeAHwPebNNAtOdzrf0MsL6r/xidKaaZtjy3LklaQoMEwuvAliTvaJ8K2gqcBI4CO1qbHcDTbfkoMJlkTZINdG4ev9Cmlc4n2dK2c39XH0nSElndb8eqej7JU8BXgIvAV4EDwLuAI0l20gmN+1r7E0mOAK+09rur6lLb3APAQeAm4Jn2kCQtob4DAaCqHgQenFO+QOdqoVf7fcC+HvUpYPMgY5EkDcZvKkuSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJGDAQEjy/UmeSvJnSU4m+YdJbknybJJX2/PNXe33JplOcirJ3V31O5Mcb+seSZJBxiVJunaDXiH8R+DzVfX3gH8AnAT2AMeqaiNwrL0mySZgErgD2AY8mmRV285+YBewsT22DTguSdI16jsQkqwFfhx4DKCq/qaq/jewHTjUmh0C7m3L24HDVXWhqk4D08BdSdYBa6vquaoq4ImuPpKkJTLIFcIPArPA7yb5apJPJnkncHtVnQVoz7e19qPAG139Z1pttC3PrV8hya4kU0mmZmdnBxi6JGmuQQJhNfBBYH9VfQD4a9r00Dx63ReoBepXFqsOVNVEVU2MjIxc63glSQsYJBBmgJmqer69fopOQLzZpoFoz+e62q/v6j8GnGn1sR51SdIS6jsQquovgDeS/HArbQVeAY4CO1ptB/B0Wz4KTCZZk2QDnZvHL7RppfNJtrRPF93f1UeStERWD9j/XwKfSvI9wJ8D/5ROyBxJshN4HbgPoKpOJDlCJzQuArur6lLbzgPAQeAm4Jn2kCQtoYECoapeAiZ6rNo6T/t9wL4e9Slg8yBjkSQNxm8qS5IAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIk4DoEQpJVSb6a5A/a61uSPJvk1fZ8c1fbvUmmk5xKcndX/c4kx9u6R5Jk0HFJkq7N9bhC+Dhwsuv1HuBYVW0EjrXXJNkETAJ3ANuAR5Osan32A7uAje2x7TqMS5J0DQYKhCRjwD3AJ7vK24FDbfkQcG9X/XBVXaiq08A0cFeSdcDaqnquqgp4oquPJGmJrB6w/38Afhn4vq7a7VV1FqCqzia5rdVHgS93tZtptb9ty3PrV0iyi86VBO9973sHHPrKMr7nc0Pb92sP3TO0fUtavL6vEJL8LHCuql5cbJcetVqgfmWx6kBVTVTVxMjIyCJ3K0lajEGuED4EfCTJzwDfC6xN8p+AN5Osa1cH64Bzrf0MsL6r/xhwptXHetQlSUuo7yuEqtpbVWNVNU7nZvEXq+rngKPAjtZsB/B0Wz4KTCZZk2QDnZvHL7TppfNJtrRPF93f1UeStEQGvYfQy0PAkSQ7gdeB+wCq6kSSI8ArwEVgd1Vdan0eAA4CNwHPtIckaQldl0Coqj8C/qgt/y9g6zzt9gH7etSngM3XYyySpP74TWVJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQMEAhJ1if5wyQnk5xI8vFWvyXJs0lebc83d/XZm2Q6yakkd3fV70xyvK17JEkGe1uSpGs1yBXCReCXqupHgC3A7iSbgD3AsaraCBxrr2nrJoE7gG3Ao0lWtW3tB3YBG9tj2wDjkiT1oe9AqKqzVfWVtnweOAmMAtuBQ63ZIeDetrwdOFxVF6rqNDAN3JVkHbC2qp6rqgKe6OojSVoi1+UeQpJx4APA88DtVXUWOqEB3NaajQJvdHWbabXRtjy33ms/u5JMJZmanZ29HkOXJDUDB0KSdwG/D/xiVf3VQk171GqB+pXFqgNVNVFVEyMjI9c+WEnSvAYKhCTfTScMPlVVn2nlN9s0EO35XKvPAOu7uo8BZ1p9rEddkrSEBvmUUYDHgJNV9Vtdq44CO9ryDuDprvpkkjVJNtC5efxCm1Y6n2RL2+b9XX0kSUtk9QB9PwT8PHA8yUut9ivAQ8CRJDuB14H7AKrqRJIjwCt0PqG0u6outX4PAAeBm4Bn2kOStIT6DoSq+m/0nv8H2DpPn33Avh71KWBzv2ORJA3ObypLkgADQZLUGAiSJMBAkCQ1g3zKSFqU8T2fG8p+X3vonqHsV1quvEKQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkS4K+d6m3MX1mVrs0Nc4WQZFuSU0mmk+wZ9ngkaaW5IQIhySrgt4F/BGwCPpZk03BHJUkry40yZXQXMF1Vfw6Q5DCwHXhlqKOS+jCsqSpwukqDuVECYRR4o+v1DPCjcxsl2QXsai//T5JTfe7vVuAv++z7duex6W1ZHJd8Yii7XRbHZghu1OPyd+dbcaMEQnrU6opC1QHgwMA7S6aqamLQ7bwdeWx687jMz2PT23I8LjfEPQQ6VwTru16PAWeGNBZJWpFulED4Y2Bjkg1JvgeYBI4OeUyStKLcEFNGVXUxyS8A/xVYBTxeVSfewl0OPO30Nuax6c3jMj+PTW/L7rik6oqpeknSCnSjTBlJkobMQJAkASswEPyJjG9L8lqS40leSjLVarckeTbJq+355mGPcykkeTzJuSQvd9XmPRZJ9rZz6FSSu4cz6rfePMfl3yf5WjtvXkryM13rVspxWZ/kD5OcTHIiycdbfVmfMysqEPyJjJ5+oqre3/V56T3AsaraCBxrr1eCg8C2ObWex6KdM5PAHa3Po+3cejs6yJXHBeDhdt68v6r+C6y443IR+KWq+hFgC7C7vf9lfc6sqECg6ycyqupvgMs/kaFv2w4casuHgHuHN5SlU1VfAr4+pzzfsdgOHK6qC1V1Gpimc2697cxzXOazko7L2ar6Sls+D5yk84sLy/qcWWmB0OsnMkaHNJYbQQFfSPJi+1kQgNur6ix0TnrgtqGNbvjmOxaeR/ALSf60TSldnhZZkcclyTjwAeB5lvk5s9ICYVE/kbGCfKiqPkhnCm13kh8f9oCWiZV+Hu0Hfgh4P3AW+M1WX3HHJcm7gN8HfrGq/mqhpj1qN9yxWWmB4E9kdKmqM+35HPBZOpewbyZZB9Cezw1vhEM337FY0edRVb1ZVZeq6v8Bv8O3pz5W1HFJ8t10wuBTVfWZVl7W58xKCwR/IqNJ8s4k33d5Gfhp4GU6x2NHa7YDeHo4I7whzHcsjgKTSdYk2QBsBF4YwviG4vI/eM0/pnPewAo6LkkCPAacrKrf6lq1rM+ZG+KnK5bKEH4i40Z2O/DZznnNauA/V9Xnk/wxcCTJTuB14L4hjnHJJHkS+DBwa5IZ4EHgIXoci6o6keQInf+v4yKwu6ouDWXgb7F5jsuHk7yfzpTHa8A/h5V1XIAPAT8PHE/yUqv9Csv8nPGnKyRJwMqbMpIkzcNAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSmv8PO4PnJtPRJ2IAAAAASUVORK5CYII=
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD
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
\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -289,12 +286,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"21
6
\n"
"21
7
\n"
]
},
{
"data": {
"image/png": "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
AAAABJRU5ErkJggg==\n",
"image/png": "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
AAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -308,7 +305,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"
251
\n"
"
176
\n"
]
}
],
...
...
@@ -330,7 +327,7 @@
},
{
"cell_type": "code",
"execution_count": 1
0
,
"execution_count": 1
1
,
"id": "bb11dcd0",
"metadata": {},
"outputs": [],
...
...
@@ -378,14 +375,14 @@
},
{
"cell_type": "code",
"execution_count": 10
8
,
"execution_count": 10
2
,
"id": "c01fda28",
"metadata": {},
"outputs": [],
"source": [
"def enc_experiment(images, plot=True):\n",
" origin, predict, diff, error, A = plot_hist(images, 2)\n",
" image = Image.open(images[
0
]) #Open the image and read it as an Image object\n",
" image = Image.open(images[
2
]) #Open the image and read it as an Image object\n",
" image = np.array(image)[1:,:] #Convert to an array, leaving out the first row because the first row is just housekeeping data\n",
" image = image.astype(int)\n",
" new_error = np.copy(image)\n",
...
...
@@ -430,7 +427,7 @@
},
{
"cell_type": "code",
"execution_count": 10
9
,
"execution_count": 10
3
,
"id": "ffa858e8",
"metadata": {},
"outputs": [],
...
...
@@ -440,31 +437,28 @@
},
{
"cell_type": "code",
"execution_count": 1
10
,
"execution_count": 1
04
,
"id": "8dfdedc6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[22541 22531 22555 ... 22573 22589 22574]\n",
" [22548 22544 22530 ... 22607 22612 22618]\n",
" [22548 22544 22560 ... 22603 22605 22599]\n",
" ...\n",
" [22590 22593 22596 ... 22586 22627 22692]\n",
" [22568 22575 22555 ... 22625 22702 22749]\n",
" [22558 22541 22536 ... 22679 22748 22767]]\n"
"data": {
"text/plain": [
"0"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"
print(orig_image)
"
"
error[1,6]
"
]
},
{
"cell_type": "code",
"execution_count":
14
8,
"execution_count":
21
8,
"id": "825cc48c",
"metadata": {},
"outputs": [],
...
...
@@ -482,53 +476,77 @@
" for j in range(error_matrix.shape[1]):\n",
" if i == 0 and j == 0:\n",
" error_matrix[i][j] = int(encoded_matrix[i][j])\n",
" \n",
" elif i == 0 or i == error_matrix.shape[0]-1 or j == 0 or j == error_matrix.shape[1]-1:\n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])]) + error_matrix[0][0]\n",
" else:\n",
" if j == 1 and i == 1:\n",
" z0, z1, z2, z3 = error_matrix[i-1][j-1], error_matrix[i-1][j], \\\n",
" \"\"\"z0, z1, z2, z3 = error_matrix[i-1][j-1], error_matrix[i-1][j], \\\n",
" error_matrix[i-1][j+1], error_matrix[i][j-1]\n",
"\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\n",
" #Real solution that works, DO NOT DELETE\n",
" #new_e[r][c] = int(np.ceil(new_e[r][c] + np.linalg.solve(A,y)[-1]))\n",
"\n",
" print(int(the_keys[the_values.index(error_matrix[i,j])]))\n",
" print(np.linalg.solve(A,y)[-1])\n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])]) + \\\n",
" np.linalg.solve(A,y)[-1][0]\n",
" #error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])])\n",
" break\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\"\"\"\n",
" \n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])])\n",
" \n",
" return error_matrix"
" return error_matrix
.astype(int)
"
]
},
{
"cell_type": "code",
"execution_count":
14
9,
"execution_count":
21
9,
"id": "ba1d2c2c",
"metadata": {},
"outputs": [],
"source": [
"em = decoder(A, encoding, encode_dict)"
]
},
{
"cell_type": "code",
"execution_count": 220,
"id": "b2cdce6d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"67\n",
"[22555.]\n"
"22483 22521 22503 22481\n",
"[22491.]\n",
"-9\n",
"[22482.]\n"
]
}
],
"source": [
"em = decoder(A, encoding, encode_dict)"
"hopefully = reconstruct(em, A)\n",
"#22487 22483 22521 22464"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"id": "
b2cdce6d
",
"execution_count":
227
,
"id": "
2d2506c9
",
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"array([[ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True],\n",
" ...,\n",
" [ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True]])"
]
},
"execution_count": 227,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hopefully == im"
]
}
],
"metadata": {
...
...
Error_to_Image.ipynb
View file @
a2df8786
...
...
@@ -27,7 +27,7 @@
},
{
"cell_type": "code",
"execution_count":
3
,
"execution_count":
96
,
"id": "9ed20f84",
"metadata": {
"id": "9ed20f84"
...
...
@@ -100,7 +100,7 @@
},
{
"cell_type": "code",
"execution_count":
4
,
"execution_count":
202
,
"id": "ba2881d9",
"metadata": {},
"outputs": [],
...
...
@@ -112,7 +112,7 @@
},
{
"cell_type": "code",
"execution_count":
144
,
"execution_count":
203
,
"id": "11e95c34",
"metadata": {},
"outputs": [],
...
...
@@ -122,7 +122,7 @@
},
{
"cell_type": "code",
"execution_count":
139
,
"execution_count":
228
,
"id": "434e4d2f",
"metadata": {},
"outputs": [],
...
...
@@ -137,7 +137,7 @@
" error (array): matrix of errors computed in encoding. Same \n",
" shape as the original image (512, 640) in this case\n",
" A (array): Matrix used for the system of equations to create predictions\n",
" Returns:
cd cdcd
\n",
" Returns:\n",
" image (array): The reconstructed image\n",
" \"\"\"\n",
" new_e = error.copy()\n",
...
...
@@ -148,12 +148,6 @@
" z0, z1, z2, z3 = new_e[r-1][c-1], new_e[r-1][c], new_e[r-1][c+1], new_e[r][c-1]\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\n",
" \n",
" if r == 1 and c == 1:\n",
" print(np.linalg.solve(A,y)[-1])\n",
" \n",
" #Real solution that works, DO NOT DELETE\n",
" #new_e[r][c] = int(np.ceil(new_e[r][c] + np.linalg.solve(A,y)[-1]))\n",
" \n",
" new_e[r][c] = np.round(new_e[r][c] + np.linalg.solve(A,y)[-1], 1)\n",
" \n",
" return new_e.astype(int)\n",
...
...
@@ -162,7 +156,7 @@
},
{
"cell_type": "code",
"execution_count":
14
0,
"execution_count":
21
0,
"id": "3cc609dc",
"metadata": {},
"outputs": [
...
...
@@ -170,7 +164,10 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[22471.5]\n"
"22483 22521 22503 22481\n",
"[22491.]\n",
"-9\n",
"[22482.]\n"
]
}
],
...
...
@@ -180,34 +177,34 @@
},
{
"cell_type": "code",
"execution_count":
136
,
"execution_count":
211
,
"id": "5d290a0c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[
22546, 22514, 22513, ..., 22581, 22576, 22587
],\n",
" [
22488, 67, -21, ..., -1, -1, 22576
],\n",
" [
22514, -15, -3, ..., 10, -45, 22575
],\n",
"array([[
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" ...,\n",
" [
22317, 82, -2, ..., -64, 5, 22937
],\n",
" [
22335, -33, 18, ..., 47, -16, 22932
],\n",
" [
22333, 22339, 22362, ..., 22952, 22947, 22961
]])"
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
],\n",
" [
True, True, True, ..., True, True, True
]])"
]
},
"execution_count":
136
,
"execution_count":
211
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"
er
r"
"
im == new_erro
r"
]
},
{
"cell_type": "code",
"execution_count":
8
,
"execution_count":
9
,
"id": "706f2816",
"metadata": {},
"outputs": [],
...
...
@@ -231,13 +228,13 @@
},
{
"cell_type": "code",
"execution_count":
9
,
"execution_count":
10
,
"id": "530d2cab",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -251,12 +248,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"1
24
\n"
"1
42
\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
sAAAAASUVORK5CYII=\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY
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
sAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -270,12 +267,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"1
81
\n"
"1
54
\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD
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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD
5CAYAAAAndkJ4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAATO0lEQVR4nO3cb4xc53me8esumbCyXTmStVKVXbrLxmwaimhta6GyNRCoZRuxlWGqgIWs0URES4CtwDROkyIhkw/qFwIy0sat0IoAG6mkUlcModgQUVuOVTqBUUCWsrKVUBTDahuy4pqMuI5dh20RpmSefpiXzWg5u9ydoXdI7vUDBufMc973nHcODvbe82cmVYUkSX9m2AOQJF0fDARJEmAgSJIaA0GSBBgIkqTGQJAkAbD6ag2SPA18FDhXVRvnLPvnwC8CI1X1zVbbDWwHLgE/WVW/3ur3AvuBW4AvAJ+sqkqyBngGuBf4A+BHq+rU1cZ1xx131Pj4+OI+pSQJgFdfffWbVTXSa9lVA4HOH/F/S+eP9v+XZC3wd4C3umobgEngHuD7gf+S5C9V1SVgL7AD+CqdQNgCvEAnPL5dVR9IMgl8CvjRqw1qfHycqampRQxfknRZkv8x37KrXjKqqq8A3+qx6NPAzwLd32zbChysqgtVdRKYBu5Lcjdwa1W9VJ1vwj0DPNTV50Cbfw7YnCRXG5ck6drq6x5Cko8B36iq356zaBQ43fV+ptVG2/zc+jv6VNVF4DvA+/oZlySpf4u5ZPQOSd4F/ALwI70W96jVAvWF+vTa9g46l514//vff9WxSpIWr58zhB8A1gG/neQUMAZ8Lcmfp/Of/9qutmPAmVYf61Gnu0+S1cB76X2JiqraV1UTVTUxMtLznogkqU9LDoSqOlpVd1bVeFWN0/mD/uGq+n3gMDCZZE2SdcB64JWqOgucT7Kp3R94BHi+rfIwsK3Nfxz4cvmLe5K07K4aCEmeBV4CfjDJTJLt87WtqmPAIeAN4IvAzvaEEcCjwC/TudH83+k8YQTwFPC+JNPATwO7+vwskqQB5Eb9Z3xiYqJ87FSSlibJq1U10WuZ31SWJAEGgiSpWfJjpzeD8V2fH9q2Tz3+4NC2LUkL8QxBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBiwiEJE8nOZfk9a7aLyb53SS/k+RzSb6va9nuJNNJTiR5oKt+b5KjbdkTSdLqa5L8aqu/nGT82n5ESdJiLOYMYT+wZU7tRWBjVf0V4L8BuwGSbAAmgXtanyeTrGp99gI7gPXtdXmd24FvV9UHgE8Dn+r3w0iS+nfVQKiqrwDfmlP7UlVdbG+/Coy1+a3Awaq6UFUngWngviR3A7dW1UtVVcAzwENdfQ60+eeAzZfPHiRJy+da3EP4R8ALbX4UON21bKbVRtv83Po7+rSQ+Q7wvmswLknSEgwUCEl+AbgIfOZyqUezWqC+UJ9e29uRZCrJ1Ozs7FKHK0laQN+BkGQb8FHgH7TLQND5z39tV7Mx4Eyrj/Wov6NPktXAe5lzieqyqtpXVRNVNTEyMtLv0CVJPfQVCEm2AD8HfKyq/k/XosPAZHtyaB2dm8evVNVZ4HySTe3+wCPA8119trX5jwNf7goYSdIyWX21BkmeBe4H7kgyAzxG56miNcCL7f7vV6vqn1TVsSSHgDfoXEraWVWX2qoepfPE0i107jlcvu/wFPArSabpnBlMXpuPJklaiqsGQlV9okf5qQXa7wH29KhPARt71P8IePhq45AkfXf5TWVJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKkxkCQJAGLCIQkTyc5l+T1rtrtSV5M8mab3ta1bHeS6SQnkjzQVb83ydG27IkkafU1SX611V9OMn6NP6MkaREWc4awH9gyp7YLOFJV64Ej7T1JNgCTwD2tz5NJVrU+e4EdwPr2urzO7cC3q+oDwKeBT/X7YSRJ/btqIFTVV4BvzSlvBQ60+QPAQ131g1V1oapOAtPAfUnuBm6tqpeqqoBn5vS5vK7ngM2Xzx4kScun33sId1XVWYA2vbPVR4HTXe1mWm20zc+tv6NPVV0EvgO8r89xSZL6dK1vKvf6z74WqC/U58qVJzuSTCWZmp2d7XOIkqRe+g2Et9tlINr0XKvPAGu72o0BZ1p9rEf9HX2SrAbey5WXqACoqn1VNVFVEyMjI30OXZLUS7+BcBjY1ua3Ac931Sfbk0Pr6Nw8fqVdVjqfZFO7P/DInD6X1/Vx4MvtPoMkaRmtvlqDJM8C9wN3JJkBHgMeBw4l2Q68BTwMUFXHkhwC3gAuAjur6lJb1aN0nli6BXihvQCeAn4lyTSdM4PJa/LJJElLctVAqKpPzLNo8zzt9wB7etSngI096n9ECxRJ0vD4TWVJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKm56mOnurbGd31+KNs99fiDQ9mupBuHZwiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJKAAQMhyT9LcizJ60meTfJnk9ye5MUkb7bpbV3tdyeZTnIiyQNd9XuTHG3LnkiSQcYlSVq6vgMhySjwk8BEVW0EVgGTwC7gSFWtB4609yTZ0JbfA2wBnkyyqq1uL7ADWN9eW/odlySpP4NeMloN3JJkNfAu4AywFTjQlh8AHmrzW4GDVXWhqk4C08B9Se4Gbq2ql6qqgGe6+kiSlknfgVBV3wD+JfAWcBb4TlV9Cbirqs62NmeBO1uXUeB01ypmWm20zc+tS5KW0SCXjG6j81//OuD7gXcn+bGFuvSo1QL1XtvckWQqydTs7OxShyxJWsAgl4z+NnCyqmar6v8CnwX+BvB2uwxEm55r7WeAtV39x+hcYppp83PrV6iqfVU1UVUTIyMjAwxdkjTXIIHwFrApybvaU0GbgePAYWBba7MNeL7NHwYmk6xJso7OzeNX2mWl80k2tfU80tVHkrRMVvfbsapeTvIc8DXgIvB1YB/wHuBQku10QuPh1v5YkkPAG639zqq61Fb3KLAfuAV4ob0kScuo70AAqKrHgMfmlC/QOVvo1X4PsKdHfQrYOMhYJEmD8ZvKkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCBgyEJN+X5Lkkv5vkeJK/nuT2JC8mebNNb+tqvzvJdJITSR7oqt+b5Ghb9kSSDDIuSdLSDXqG8G+AL1bVXwb+KnAc2AUcqar1wJH2niQbgEngHmAL8GSSVW09e4EdwPr22jLguCRJS9R3ICS5Ffhh4CmAqvrjqvqfwFbgQGt2AHiozW8FDlbVhao6CUwD9yW5G7i1ql6qqgKe6eojSVomg5wh/EVgFvgPSb6e5JeTvBu4q6rOArTpna39KHC6q/9Mq422+bl1SdIyGiQQVgMfBvZW1YeA/027PDSPXvcFaoH6lStIdiSZSjI1Ozu71PFKkhYwSCDMADNV9XJ7/xydgHi7XQaiTc91tV/b1X8MONPqYz3qV6iqfVU1UVUTIyMjAwxdkjRX34FQVb8PnE7yg620GXgDOAxsa7VtwPNt/jAwmWRNknV0bh6/0i4rnU+yqT1d9EhXH0nSMlk9YP9/CnwmyfcCvwf8QzohcyjJduAt4GGAqjqW5BCd0LgI7KyqS209jwL7gVuAF9pLkrSMBgqEqnoNmOixaPM87fcAe3rUp4CNg4xFkjQYv6ksSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQMHQpJVSb6e5D+397cneTHJm216W1fb3Ummk5xI8kBX/d4kR9uyJ5Jk0HFJkpbmWpwhfBI43vV+F3CkqtYDR9p7kmwAJoF7gC3Ak0lWtT57gR3A+vbacg3GJUlagtWDdE4yBjwI7AF+upW3Ave3+QPAbwI/1+oHq+oCcDLJNHBfklPArVX1UlvnM8BDwAuDjE3vNL7r80Pb9qnHHxzatiUt3qBnCP8a+FngT7pqd1XVWYA2vbPVR4HTXe1mWm20zc+tS5KWUd+BkOSjwLmqenWxXXrUaoF6r23uSDKVZGp2dnaRm5UkLcYgZwgfAT7WLvkcBP5Wkv8IvJ3kboA2PdfazwBru/qPAWdafaxH/QpVta+qJqpqYmRkZIChS5Lm6jsQqmp3VY1V1Tidm8VfrqofAw4D21qzbcDzbf4wMJlkTZJ1dG4ev9IuK51Psqk9XfRIVx9J0jIZ6KbyPB4HDiXZDrwFPAxQVceSHALeAC4CO6vqUuvzKLAfuIXOzWRvKEvSMrsmgVBVv0nnaSKq6g+AzfO020PniaS59Slg47UYiySpP35TWZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJwACBkGRtkt9IcjzJsSSfbPXbk7yY5M02va2rz+4k00lOJHmgq35vkqNt2RNJMtjHkiQt1SBnCBeBn6mqHwI2ATuTbAB2AUeqaj1wpL2nLZsE7gG2AE8mWdXWtRfYAaxvry0DjEuS1Ie+A6GqzlbV19r8eeA4MApsBQ60ZgeAh9r8VuBgVV2oqpPANHBfkruBW6vqpaoq4JmuPpKkZXJN7iEkGQc+BLwM3FVVZ6ETGsCdrdkocLqr20yrjbb5uXVJ0jIaOBCSvAf4NeCnquoPF2rao1YL1Htta0eSqSRTs7OzSx+sJGleAwVCku+hEwafqarPtvLb7TIQbXqu1WeAtV3dx4AzrT7Wo36FqtpXVRNVNTEyMjLI0CVJcwzylFGAp4DjVfVLXYsOA9va/Dbg+a76ZJI1SdbRuXn8SrusdD7JprbOR7r6SJKWyeoB+n4E+HHgaJLXWu3ngceBQ0m2A28BDwNU1bEkh4A36DyhtLOqLrV+jwL7gVuAF9pLkrSM+g6Eqvqv9L7+D7B5nj57gD096lPAxn7HIkkanN9UliQBBoIkqTEQJEmAgSBJagwESRJgIEiSmkG+hyAtyviuzw9lu6cef3Ao25VuVJ4hSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJEmNP3+tm5Y/uy0tzXVzhpBkS5ITSaaT7Br2eCRppbkuAiHJKuDfAX8X2AB8IsmG4Y5KklaW6yIQgPuA6ar6var6Y+AgsHXIY5KkFeV6uYcwCpzuej8D/LUhjUUayLDuXYD3LzSY6yUQ0qNWVzRKdgA72tv/leREn9u7A/hmn31vZu6X+d0Q+yafWvZN3hD7ZQiu5/3yF+ZbcL0Ewgywtuv9GHBmbqOq2gfsG3RjSaaqamLQ9dxs3C/zc9/05n7p7UbdL9fLPYTfAtYnWZfke4FJ4PCQxyRJK8p1cYZQVReT/ATw68Aq4OmqOjbkYUnSinJdBAJAVX0B+MIybW7gy043KffL/Nw3vblfersh90uqrrh3K0laga6XewiSpCFbcYHgT2T8qSSnkhxN8lqSqVa7PcmLSd5s09uGPc7vtiRPJzmX5PWu2rz7IcnudvycSPLAcEb93TfPfvkXSb7RjpnXkvy9rmUrZb+sTfIbSY4nOZbkk61+wx8zKyoQ/ImMnv5mVX2w6xG5XcCRqloPHGnvb3b7gS1zaj33QzteJoF7Wp8n23F1M9rPlfsF4NPtmPlgu/e30vbLReBnquqHgE3Azvb5b/hjZkUFAv5ExmJsBQ60+QPAQ8MbyvKoqq8A35pTnm8/bAUOVtWFqjoJTNM5rm468+yX+ayk/XK2qr7W5s8Dx+n82sINf8ystEDo9RMZo0May/WggC8lebV9Cxzgrqo6C50DH7hzaKMbrvn2g8cQ/ESS32mXlC5fFlmR+yXJOPAh4GVugmNmpQXCon4iYwX5SFV9mM4ltJ1JfnjYA7oBrPRjaC/wA8AHgbPAv2r1FbdfkrwH+DXgp6rqDxdq2qN2Xe6blRYIi/qJjJWiqs606Tngc3ROY99OcjdAm54b3giHar79sKKPoap6u6ouVdWfAP+eP730saL2S5LvoRMGn6mqz7byDX/MrLRA8CcymiTvTvLnLs8DPwK8Tmd/bGvNtgHPD2eEQzfffjgMTCZZk2QdsB54ZQjjG4rLf/Cav0/nmIEVtF+SBHgKOF5Vv9S16IY/Zq6bbyovB38i4x3uAj7XObZZDfynqvpikt8CDiXZDrwFPDzEMS6LJM8C9wN3JJkBHgMep8d+qKpjSQ4Bb9B52mRnVV0aysC/y+bZL/cn+SCdSx6ngH8MK2u/AB8Bfhw4muS1Vvt5boJjxm8qS5KAlXfJSJI0DwNBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEgD/D3/c8qD4M7TnAAAAAElFTkSuQmCC
\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -289,12 +286,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"21
6
\n"
"21
7
\n"
]
},
{
"data": {
"image/png": "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
AAAABJRU5ErkJggg==\n",
"image/png": "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
AAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -308,7 +305,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"
251
\n"
"
176
\n"
]
}
],
...
...
@@ -330,7 +327,7 @@
},
{
"cell_type": "code",
"execution_count": 1
0
,
"execution_count": 1
1
,
"id": "bb11dcd0",
"metadata": {},
"outputs": [],
...
...
@@ -378,14 +375,14 @@
},
{
"cell_type": "code",
"execution_count": 10
8
,
"execution_count": 10
2
,
"id": "c01fda28",
"metadata": {},
"outputs": [],
"source": [
"def enc_experiment(images, plot=True):\n",
" origin, predict, diff, error, A = plot_hist(images, 2)\n",
" image = Image.open(images[
0
]) #Open the image and read it as an Image object\n",
" image = Image.open(images[
2
]) #Open the image and read it as an Image object\n",
" image = np.array(image)[1:,:] #Convert to an array, leaving out the first row because the first row is just housekeeping data\n",
" image = image.astype(int)\n",
" new_error = np.copy(image)\n",
...
...
@@ -430,7 +427,7 @@
},
{
"cell_type": "code",
"execution_count": 10
9
,
"execution_count": 10
3
,
"id": "ffa858e8",
"metadata": {},
"outputs": [],
...
...
@@ -440,31 +437,28 @@
},
{
"cell_type": "code",
"execution_count": 1
10
,
"execution_count": 1
04
,
"id": "8dfdedc6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[22541 22531 22555 ... 22573 22589 22574]\n",
" [22548 22544 22530 ... 22607 22612 22618]\n",
" [22548 22544 22560 ... 22603 22605 22599]\n",
" ...\n",
" [22590 22593 22596 ... 22586 22627 22692]\n",
" [22568 22575 22555 ... 22625 22702 22749]\n",
" [22558 22541 22536 ... 22679 22748 22767]]\n"
"data": {
"text/plain": [
"0"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"
print(orig_image)
"
"
error[1,6]
"
]
},
{
"cell_type": "code",
"execution_count":
14
8,
"execution_count":
21
8,
"id": "825cc48c",
"metadata": {},
"outputs": [],
...
...
@@ -482,53 +476,77 @@
" for j in range(error_matrix.shape[1]):\n",
" if i == 0 and j == 0:\n",
" error_matrix[i][j] = int(encoded_matrix[i][j])\n",
" \n",
" elif i == 0 or i == error_matrix.shape[0]-1 or j == 0 or j == error_matrix.shape[1]-1:\n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])]) + error_matrix[0][0]\n",
" else:\n",
" if j == 1 and i == 1:\n",
" z0, z1, z2, z3 = error_matrix[i-1][j-1], error_matrix[i-1][j], \\\n",
" \"\"\"z0, z1, z2, z3 = error_matrix[i-1][j-1], error_matrix[i-1][j], \\\n",
" error_matrix[i-1][j+1], error_matrix[i][j-1]\n",
"\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\n",
" #Real solution that works, DO NOT DELETE\n",
" #new_e[r][c] = int(np.ceil(new_e[r][c] + np.linalg.solve(A,y)[-1]))\n",
"\n",
" print(int(the_keys[the_values.index(error_matrix[i,j])]))\n",
" print(np.linalg.solve(A,y)[-1])\n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])]) + \\\n",
" np.linalg.solve(A,y)[-1][0]\n",
" #error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])])\n",
" break\n",
" y = np.vstack((-z0+z2-z3, z0+z1+z2, -z0-z1-z2-z3))\"\"\"\n",
" \n",
" error_matrix[i][j] = int(the_keys[the_values.index(error_matrix[i,j])])\n",
" \n",
" return error_matrix"
" return error_matrix
.astype(int)
"
]
},
{
"cell_type": "code",
"execution_count":
14
9,
"execution_count":
21
9,
"id": "ba1d2c2c",
"metadata": {},
"outputs": [],
"source": [
"em = decoder(A, encoding, encode_dict)"
]
},
{
"cell_type": "code",
"execution_count": 220,
"id": "b2cdce6d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"67\n",
"[22555.]\n"
"22483 22521 22503 22481\n",
"[22491.]\n",
"-9\n",
"[22482.]\n"
]
}
],
"source": [
"em = decoder(A, encoding, encode_dict)"
"hopefully = reconstruct(em, A)\n",
"#22487 22483 22521 22464"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"id": "
b2cdce6d
",
"execution_count":
227
,
"id": "
2d2506c9
",
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"array([[ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True],\n",
" [ True, True, True, ..., True, True, True],\n",
" ...,\n",
" [ True, True, True, ..., True, True, True],\n",