|
@@ -2,7 +2,7 @@
|
|
"cells": [
|
|
"cells": [
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 1,
|
|
|
|
|
|
+ "execution_count": 154,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"outputs": [],
|
|
"source": [
|
|
"source": [
|
|
@@ -17,7 +17,8 @@
|
|
"import cv2\n",
|
|
"import cv2\n",
|
|
"import numpy as np\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
- "import os"
|
|
|
|
|
|
+ "import os\n",
|
|
|
|
+ "import math"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
@@ -124,7 +125,7 @@
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 6,
|
|
|
|
|
|
+ "execution_count": 151,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"outputs": [],
|
|
"source": [
|
|
"source": [
|
|
@@ -137,6 +138,51 @@
|
|
" return np.array(arr).argsort()[::-1][-n:][::-1]"
|
|
" return np.array(arr).argsort()[::-1][-n:][::-1]"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
|
|
+ {
|
|
|
|
+ "cell_type": "code",
|
|
|
|
+ "execution_count": 168,
|
|
|
|
+ "metadata": {},
|
|
|
|
+ "outputs": [],
|
|
|
|
+ "source": [
|
|
|
|
+ "def get_entropy(arr):\n",
|
|
|
|
+ " arr = np.array(arr)\n",
|
|
|
|
+ " eigen_values = []\n",
|
|
|
|
+ " sum_eigen_values = (arr * arr).sum()\n",
|
|
|
|
+ " print(sum_eigen_values)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " for id, val in enumerate(arr):\n",
|
|
|
|
+ " eigen_values.append(val * val)\n",
|
|
|
|
+ " #print(id, \" : \", val)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " v = []\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " for val in eigen_values:\n",
|
|
|
|
+ " v.append(val / sum_eigen_values)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " entropy = 0\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " for val in v:\n",
|
|
|
|
+ " if val > 0:\n",
|
|
|
|
+ " entropy += val * math.log(val)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " entropy *= -1\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " entropy /= math.log(len(v))\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " return entropy\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "def get_entropy_without_i(arr, i):\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " arr = np.array([v for index, v in enumerate(arr) if index != i])\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " return get_entropy(arr)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "def get_entropy_contribution_of_i(arr, i):\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " return get_entropy(arr) - get_entropy_without_i(arr, i)"
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
{
|
|
{
|
|
"cell_type": "markdown",
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"metadata": {},
|
|
@@ -207,53 +253,71 @@
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 12,
|
|
|
|
|
|
+ "execution_count": 169,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
- "outputs": [],
|
|
|
|
|
|
+ "outputs": [
|
|
|
|
+ {
|
|
|
|
+ "name": "stdout",
|
|
|
|
+ "output_type": "stream",
|
|
|
|
+ "text": [
|
|
|
|
+ "1277393.7121246634\n",
|
|
|
|
+ "1277393.7121246634\n",
|
|
|
|
+ "0 : 0.7291941465931915\n"
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
"source": [
|
|
"source": [
|
|
- "first_image = zones_data[0][1]\n",
|
|
|
|
|
|
+ "first_image = zones_data[0][0]\n",
|
|
|
|
+ "# first_image = metrics.get_LAB_L(first_image)\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "# print(first_image[0:2, 0:2])\n",
|
|
|
|
+ "# Image.fromarray(first_image).show()\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "# first_image = np.asarray(Image.fromarray(first_image).convert('L'))\n",
|
|
|
|
+ "#first_image.show()\n",
|
|
|
|
+ "\n",
|
|
"entropy_contribution_data = []\n",
|
|
"entropy_contribution_data = []\n",
|
|
"\n",
|
|
"\n",
|
|
"sv = processing.get_LAB_L_SVD_s(first_image)\n",
|
|
"sv = processing.get_LAB_L_SVD_s(first_image)\n",
|
|
- "sv = utils.normalize_arr(sv)\n",
|
|
|
|
- "entropy = utils.get_entropy(sv)\n",
|
|
|
|
|
|
+ "# sv = utils.normalize_arr(sv)\n",
|
|
|
|
+ "#entropy = get_entropy(sv)\n",
|
|
"\n",
|
|
"\n",
|
|
- "for i in range(200):\n",
|
|
|
|
- " entropy_without_column = utils.get_entropy_without_i(sv, i)\n",
|
|
|
|
- " entropy_contribution_column = entropy - entropy_without_column\n",
|
|
|
|
- " entropy_contribution_data.append(entropy_contribution_column)"
|
|
|
|
|
|
+ "#for i in range(200):\n",
|
|
|
|
+ "entropy_contribution_data.append(get_entropy_without_i(sv, 0))\n",
|
|
|
|
+ "print(0, \": \", get_entropy_without_i(sv, 0))"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 13,
|
|
|
|
|
|
+ "execution_count": 148,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [
|
|
"outputs": [
|
|
{
|
|
{
|
|
- "data": {
|
|
|
|
- "text/plain": [
|
|
|
|
- "array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,\n",
|
|
|
|
- " 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n",
|
|
|
|
- " 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n",
|
|
|
|
- " 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,\n",
|
|
|
|
- " 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,\n",
|
|
|
|
- " 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\n",
|
|
|
|
- " 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,\n",
|
|
|
|
- " 92, 93, 94, 95, 96, 97, 98, 99, 100])"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- "execution_count": 13,
|
|
|
|
- "metadata": {},
|
|
|
|
- "output_type": "execute_result"
|
|
|
|
|
|
+ "name": "stdout",
|
|
|
|
+ "output_type": "stream",
|
|
|
|
+ "text": [
|
|
|
|
+ "[[[ 0 0 0]\n",
|
|
|
|
+ " [ 0 0 0]]\n",
|
|
|
|
+ "\n",
|
|
|
|
+ " [[164 152 143]\n",
|
|
|
|
+ " [159 144 132]]]\n",
|
|
|
|
+ "[87.9761409 0. ]\n"
|
|
|
|
+ ]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
"source": [
|
|
"source": [
|
|
- "get_highest_values(entropy_contribution_data, 100)"
|
|
|
|
|
|
+ "sub_blocks = processing.divide_in_blocks(first_image, (2,2))\n",
|
|
|
|
+ "sub_block = np.asarray(sub_blocks[0])\n",
|
|
|
|
+ "sub_block\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "sv_values = processing.get_LAB_L_SVD_s(sub_block)\n",
|
|
|
|
+ "print(sub_block)\n",
|
|
|
|
+ "print(sv_values)"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 14,
|
|
|
|
|
|
+ "execution_count": 50,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [
|
|
"outputs": [
|
|
{
|
|
{
|
|
@@ -269,7 +333,34 @@
|
|
" 109, 108, 107, 106, 105, 104, 103, 102, 101])"
|
|
" 109, 108, 107, 106, 105, 104, 103, 102, 101])"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
- "execution_count": 14,
|
|
|
|
|
|
+ "execution_count": 50,
|
|
|
|
+ "metadata": {},
|
|
|
|
+ "output_type": "execute_result"
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ "source": [
|
|
|
|
+ "get_highest_values(entropy_contribution_data, 100)"
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "cell_type": "code",
|
|
|
|
+ "execution_count": 51,
|
|
|
|
+ "metadata": {},
|
|
|
|
+ "outputs": [
|
|
|
|
+ {
|
|
|
|
+ "data": {
|
|
|
|
+ "text/plain": [
|
|
|
|
+ "array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,\n",
|
|
|
|
+ " 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n",
|
|
|
|
+ " 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n",
|
|
|
|
+ " 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,\n",
|
|
|
|
+ " 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,\n",
|
|
|
|
+ " 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\n",
|
|
|
|
+ " 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,\n",
|
|
|
|
+ " 92, 93, 94, 95, 96, 97, 98, 99, 100])"
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ "execution_count": 51,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
"output_type": "execute_result"
|
|
}
|
|
}
|