--- a
+++ b/segmentation/get_prob_map_v2.py
@@ -0,0 +1,88 @@
+import pandas as pd
+import cv2
+import numpy as np
+import os
+import scipy.ndimage
+import statistics
+from skimage import data, color
+import matplotlib.pyplot as plt
+from skimage.color import rgb2gray
+from skimage.transform import rescale, resize, downscale_local_mean
+from skimage.io import imread
+
+
+def get_prob_map():
+    # Test for one image first
+    path = r'/Users/puaqieshang/Desktop/Taste of Research/MATLAB code/everything/phantom_images/phantom_3/scan_2/WirelessUSG2019-11-01-16-13-45.png'
+    original = cv2.imread(path)
+
+    # Convert to grayscale
+    grayscale = rgb2gray(original)
+    # print(grayscale)
+
+    # Start prob map as simple intensity
+    intensity_map = rescale(grayscale, .5, anti_aliasing=False)
+    intensity_map = np.asarray(intensity_map)
+    prob_map = intensity_map * 0.5
+
+    print("--------- after gausian blur ---------")
+
+    # Create probablity map from intensity after gausian filtering
+    gausian = cv2.GaussianBlur(prob_map, (5, 5), 5)
+    gausian = np.asarray(gausian)
+
+
+    num = np.multiply(gausian, prob_map)
+    den = num + np.multiply((1 - gausian), (1 - prob_map))
+    prob_map = np.divide(num, den)
+    # prob_map = (gausian.* prob_map). / (gausian. * prob_map + (1 - gausian). * (1 - prob_map));
+
+    '''
+    Trying out different filters - only one is being used whereas the rest is commented
+    https://www.pyimagesearch.com/2016/07/25/convolutions-with-opencv-and-python/ 
+    '''
+    slight_gaus = cv2.GaussianBlur(grayscale, (5, 5), 0.5)
+    slight_gaus2 = rescale(grayscale, .5, anti_aliasing=False)
+
+    filt_top = np.array([[-1], [0], [1]])
+    filt_top_1 = np.array(
+        [[-2, -2, -2, -2, -2], [-1, -1, -1, -1, -1], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2]])
+    kernel1 = np.ones((3, 3), np.float32) / 9
+    kernel1[1][1] = 0.8888889
+
+    upper_filt = cv2.filter2D(slight_gaus2.astype(np.float32), -1, filt_top)
+    upper_filt1 = (upper_filt - upper_filt.min()) / (upper_filt.max() - upper_filt.min())
+
+    # Show different types of filter
+    # cv2.imshow('hello', upper_filt1) # displays gray-ish pic
+    # cv2.imshow("image with slight gaussian filter", slight_gaus)
+    # cv2.imshow("prob map", prob_map)
+
+    y = 1
+    x = 1
+    shadow = np.ones((y, x)) * 0.2
+    overall_mean = np.mean(np.mean(intensity_map))
+
+    for i in range(1, x):
+        j = y
+        while (j > 0 and (
+                gausian[j, i] < overall_mean * 1.5 or np.mean(gausian[j - 10:j - 1, i]) < overall_mean * 1.5)):
+            shadow[j, i] = 0.1
+            j = j - 1
+        while (j > 0 and (gausian[j, i] > overall_mean * 1.5) or j > 5 and np.mean(
+                gausian[j - 5:j - 1, i]) > overall_mean * 1.5):
+            shadow[j, i] = intensity_map(j, i)
+            j = j - 1
+    shadow = cv2.GaussianBlur(shadow, (5, 5), 5)
+    prob_map = (shadow * prob_map) / (shadow * prob_map + (1 - shadow) * (1 - prob_map))
+    cv2.imshow('final probability map', prob_map)
+
+    k = cv2.waitKey(0) & 0xFF
+    if k == 27:  # wait for ESC key to exit
+        cv2.destroyAllWindows()
+    elif k == ord('s'):  # wait for 's' key to save and exit
+        cv2.imwrite('prob_map.png', prob_map)
+        cv2.destroyAllWindows()
+
+
+get_prob_map()