{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import cv2\nimport matplotlib.pyplot as plt\nimport numpy as np\nvalue=cv2.imread(\"../input/happy-whale-and-dolphin/train_images/00021adfb725ed.jpg\")\nplt.imshow(value)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-03-26T05:41:16.6421Z","iopub.execute_input":"2022-03-26T05:41:16.64254Z","iopub.status.idle":"2022-03-26T05:41:16.941258Z","shell.execute_reply.started":"2022-03-26T05:41:16.642505Z","shell.execute_reply":"2022-03-26T05:41:16.940172Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Feature Extraction","metadata":{}},{"cell_type":"markdown","source":"# Color","metadata":{}},{"cell_type":"markdown","source":"# Find the mean color value in the image\n\n$$\\frac {\\sum_{i=0}^{h} \\sum_{n=0}^{w} img_{[i,n]}}{h*w*3}$$","metadata":{}},{"cell_type":"code","source":"def mean(img):\n    return np.mean(img)\nmean(value)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:19.14699Z","iopub.execute_input":"2022-03-26T05:41:19.147276Z","iopub.status.idle":"2022-03-26T05:41:19.155031Z","shell.execute_reply.started":"2022-03-26T05:41:19.147246Z","shell.execute_reply":"2022-03-26T05:41:19.154212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Cluster mean color among groups of 2 in image\nwe apply a kmeans cluster over the image to remove the water from the whale the majority class in the cluster propably belongs to the whale and then we compute the mean of each cluster we also count the number of values in the majority class","metadata":{}},{"cell_type":"raw","source":"","metadata":{}},{"cell_type":"code","source":"flattened=cv2.resize(cv2.imread(\"../input/happy-whale-and-dolphin/train_images/0007d9bca26a99.jpg\"),(128,128)).ravel()","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:20.56708Z","iopub.execute_input":"2022-03-26T05:41:20.567431Z","iopub.status.idle":"2022-03-26T05:41:20.686959Z","shell.execute_reply.started":"2022-03-26T05:41:20.567392Z","shell.execute_reply":"2022-03-26T05:41:20.68595Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.cluster import KMeans\nmodel=KMeans(n_clusters=2).fit(flattened[...,np.newaxis])\nmodel.labels_","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:21.107148Z","iopub.execute_input":"2022-03-26T05:41:21.107488Z","iopub.status.idle":"2022-03-26T05:41:21.229254Z","shell.execute_reply.started":"2022-03-26T05:41:21.107449Z","shell.execute_reply":"2022-03-26T05:41:21.228478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def compute_mean_over_clusters(image,plot=False):\n    flattened=np.mean(image,axis=-1).ravel()\n   \n    model=KMeans(n_clusters=2).fit(flattened[...,np.newaxis])\n    majority=int(np.mean(model.labels_)>=0.5)\n \n    labels=model.labels_\n    if majority==0:\n        labels=1-labels\n    labels=labels.reshape(image.shape[0],image.shape[1],1)\n   \n    if plot:\n        plt.matshow(labels*image)\n   \n    return np.sum(image*labels)/(np.sum(labels)*3),np.sum(image*(1-labels))/(np.sum(1-labels)*3),np.sum(labels)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:21.662041Z","iopub.execute_input":"2022-03-26T05:41:21.662343Z","iopub.status.idle":"2022-03-26T05:41:21.670767Z","shell.execute_reply.started":"2022-03-26T05:41:21.662296Z","shell.execute_reply":"2022-03-26T05:41:21.669975Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"compute_mean_over_clusters(cv2.resize(value,(128,128)),True)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:22.016965Z","iopub.execute_input":"2022-03-26T05:41:22.017627Z","iopub.status.idle":"2022-03-26T05:41:22.279021Z","shell.execute_reply.started":"2022-03-26T05:41:22.017592Z","shell.execute_reply":"2022-03-26T05:41:22.278216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Skewness \nskewness of an image can be defined as the symetrical values of the image u can see it here for more detail https://stats.stackexchange.com/questions/211377/skewness-and-kurtosis-in-an-image. Anyways when we replicate it into a image we first take each channel of the image flatten it compute the histogram and finally the skewness using this formula $$\\frac {\\sum_{i}^{N} (X_i - X_{hat}) ^ 3}{(N-1) * σ^3}$$\n\nwhich many people might know about here is unscarry look of the same formula Skew = 3 * (Mean – Median) / Standard Deviation . Anyways doing it for all 3 channels and taking an mean is what i am doing here","metadata":{}},{"cell_type":"code","source":"from scipy.stats import skew\ndef skewness(image):\n    return (skew(image[...,0].flatten())+skew(image[...,1].flatten())+skew(image[...,2].flatten()))/3\nskewness(value)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:33.223355Z","iopub.execute_input":"2022-03-26T05:41:33.223676Z","iopub.status.idle":"2022-03-26T05:41:33.252039Z","shell.execute_reply.started":"2022-03-26T05:41:33.223633Z","shell.execute_reply":"2022-03-26T05:41:33.251399Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Kurtosis\n Statistically speaking it just mean \"tailedness\" of a histogram or a distribution like this . A  positive value means lot of data in the tail of the distribution while negative is less data on the tails ![image.png](attachment:04548af5-100f-41e1-9c33-b62ea6825e20.png) from : https://www.statisticshowto.com/probability-and-statistics/statistics-definitions/kurtosis-leptokurtic-platykurtic/ . ","metadata":{},"attachments":{"04548af5-100f-41e1-9c33-b62ea6825e20.png":{"image/png":"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"}}},{"cell_type":"code","source":"from scipy.stats import kurtosis\ndef kurtosisness(image):\n    return (kurtosis(image[...,0].flatten())+kurtosis(image[...,1].flatten())+kurtosis(image[...,2].flatten()))/3\nkurtosisness(value)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:36.787111Z","iopub.execute_input":"2022-03-26T05:41:36.787613Z","iopub.status.idle":"2022-03-26T05:41:36.813348Z","shell.execute_reply.started":"2022-03-26T05:41:36.787569Z","shell.execute_reply":"2022-03-26T05:41:36.812484Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Median of the image","metadata":{}},{"cell_type":"code","source":"np.median(value)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:38.307622Z","iopub.execute_input":"2022-03-26T05:41:38.30795Z","iopub.status.idle":"2022-03-26T05:41:38.32714Z","shell.execute_reply.started":"2022-03-26T05:41:38.307918Z","shell.execute_reply":"2022-03-26T05:41:38.326301Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# One Function to Wrap it all","metadata":{}},{"cell_type":"code","source":"def compute_feats(image):\n    image=cv2.resize(image,(128,128))\n    M=mean(image)\n    m1,m2,G=compute_mean_over_clusters(image)\n    S=skewness(image)\n    K=kurtosisness(image)\n    return np.array([M,m1,m2,G,S,K])","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:39.287236Z","iopub.execute_input":"2022-03-26T05:41:39.287607Z","iopub.status.idle":"2022-03-26T05:41:39.294015Z","shell.execute_reply.started":"2022-03-26T05:41:39.287571Z","shell.execute_reply":"2022-03-26T05:41:39.292932Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"compute_feats(value)","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:39.737021Z","iopub.execute_input":"2022-03-26T05:41:39.737813Z","iopub.status.idle":"2022-03-26T05:41:39.798213Z","shell.execute_reply.started":"2022-03-26T05:41:39.737761Z","shell.execute_reply":"2022-03-26T05:41:39.79737Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Exporting the Features into a .csv file","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nfrom glob import glob\nfrom tqdm import tqdm\nimport concurrent\nimport sys\npath='../input/happy-whale-and-dolphin/train_images/*.jpg'\npbar=tqdm(total=len(glob(path)))\ndef process(image):\n    \n    m=compute_feats(cv2.imread(image))\n    pbar.update(1)\n    return m\n\n\nwith concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:\n    images=list(executor.map(process,glob(path)))\n    \n    ","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:40.662545Z","iopub.execute_input":"2022-03-26T05:41:40.662874Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"images=np.array(images)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=pd.DataFrame()\ndf['mean']=images[...,0]\ndf['mean1']=images[...,1]\ndf['mean2']=images[...,2]\ndf['segment_size']=images[...,3]\ndf['skewness']=images[...,4]\ndf['kurtosis']=images[...,5]\ndf['filename']=glob(path)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-03-26T05:41:11.726511Z","iopub.status.idle":"2022-03-26T05:41:11.726977Z","shell.execute_reply.started":"2022-03-26T05:41:11.726719Z","shell.execute_reply":"2022-03-26T05:41:11.726752Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.to_csv('feats.csv',index=False)","metadata":{},"execution_count":null,"outputs":[]}]}