Diff of /4x/reference/Rescaled.py [000000] .. [171cba]

Switch to side-by-side view

--- a
+++ b/4x/reference/Rescaled.py
@@ -0,0 +1,212 @@
+# -*- coding: utf-8 -*-
+# <nbformat>3.0</nbformat>
+
+# <codecell>
+
+import os
+
+import numpy as np
+
+from scipy.ndimage import maximum_filter, minimum_filter, binary_fill_holes
+
+import skimage as ski
+from skimage import io, filter, color, exposure, morphology, feature, draw, measure, transform
+
+figsize(16, 10)
+
+# <codecell>
+
+l = os.listdir("../data")
+print l
+qstain = np.array([[.26451728, .5205347, .81183386], [.9199094, .29797825, .25489032], [.28947765, .80015373, .5253158]])
+
+# <codecell>
+
+# Original image
+A = transform.rescale(io.imread("../data/" + l[0]), 0.25)
+io.imshow(A)
+
+# <codecell>
+
+# Colour Deconvolution
+deconv = ski.img_as_float(color.separate_stains(A, np.linalg.inv(qstain)))
+
+"""
+io.imshow(exposure.equalize_adapthist(
+          exposure.adjust_sigmoid(
+            filter.gaussian_filter(
+                exposure.rescale_intensity(
+                    1-A[:, :, 2], 
+                    out_range=(0, 1)), 
+                4), 
+            gain=7, cutoff=0.7)))
+"""
+
+#io.imshow(exposure.adjust_sigmoid(filter.gaussian_filter(exposure.equalize_adapthist(exposure.rescale_intensity(1 - A[:, :, 2], out_range=(0, 1)), ntiles_y=1), 3), cutoff=0.55))
+
+
+
+# <codecell>
+
+# Blood
+
+"""
+blood = \
+morphology.remove_small_objects(
+    morphology.binary_closing(
+        morphology.remove_small_objects(
+            filter.threshold_adaptive(
+                exposure.adjust_sigmoid(
+                    filter.gaussian_filter(
+                    exposure.equalize_adapthist(
+                        exposure.rescale_intensity(
+                            1. - A[:, :, 2], 
+                            out_range=(0, 1)), 
+                        ntiles_y = 1),
+                        3), 
+                    cutoff=0.55),
+                100, offset=-0.2),
+            50),
+        morphology.disk(20)).astype(bool),
+    100)
+
+io.imshow(blood)
+print type(blood)
+"""
+
+# <codecell>
+
+# Veins
+
+veins = \
+morphology.remove_small_objects(
+    binary_fill_holes(
+        morphology.binary_closing(
+            morphology.remove_small_objects(      
+                filter.threshold_adaptive(
+                    filter.gaussian_filter(      
+                        maximum_filter(
+                            deconv[:, :, 2] / deconv[:, :, 0],
+                            3),
+                        7),
+                    170, offset=-0.13),
+                60),
+            morphology.disk(29))
+        ),
+    250)
+
+io.imshow(veins)
+
+# <codecell>
+
+io.imshow( \
+          filter.gaussian_filter(      
+	                        maximum_filter(
+                                exposure.rescale_intensity(
+	                            deconv[:, :, 2] / deconv[:, :, 0], out_range=(0,1)),
+	                            2),
+	                        11))
+
+# <codecell>
+
+# Inflammation
+
+inflammation = \
+morphology.binary_closing(
+    morphology.remove_small_objects(
+        filter.threshold_adaptive(
+            exposure.adjust_sigmoid(
+                filter.gaussian_filter(
+                    exposure.equalize_adapthist(
+                        exposure.rescale_intensity(
+                            deconv[:, :, 1],
+                            out_range = (0, 1)),
+                        ntiles_y = 3),
+                    5),
+                cutoff = 0.6),
+            50, offset = -0.1),
+        150),
+    morphology.disk(19))
+
+
+
+"""
+morphology.remove_small_objects(
+    filter.threshold_adaptive(
+        exposure.adjust_sigmoid(
+            filter.gaussian_filter(
+                exposure.rescale_intensity(
+                    deconv[:, :, 1],
+                    out_range = (0, 1)),
+                25),
+            gain = 12, cutoff = 0.32),
+        501, offset = -0.1),
+    4000)
+"""
+io.imshow(inflammation)
+#dec = exposure.adjust_sigmoid(filter.gaussian_filter(exposure.equalize_adapthist(exposure.rescale_intensity(deconv[:, :, 1], out_range=(0, 1)), ntiles_y=3), 5), cutoff=0.6)
+#io.imshow(filter.threshold_adaptive(dec, 50, offset=-0.1))
+#io.imshow(filter.threshold_adaptive(exposure.adjust_sigmoid(filter.gaussian_filter(exposure.rescale_intensity(deconv[:, :, 1], out_range=(0, 1)), 19), gain=15, cutoff=0.4), 401))
+
+# <codecell>
+
+# Labelled
+total = np.zeros_like(A)
+#total[:, :, 0] = blood
+total[:, :, 1] = veins
+total[:, :, 2] = inflammation
+
+io.imshow(total)
+
+# <codecell>
+
+# All regions of interest
+
+#%timeit
+
+"""
+all = \
+minimum_filter(
+    maximum_filter(
+        np.logical_or(np.logical_or(blood, veins), inflammation).astype(float),
+        size = 101),
+    size = 51)
+"""
+
+
+
+"""
+morphology.binary_erosion(
+    morphology.binary_dilation(
+        np.logical_or(np.logical_or(blood, veins), inflammation),
+        morphology.disk(31)),
+    morphology.disk(21))
+"""
+
+#full = (np.logical_or(np.logical_or(blood, veins), inflammation))
+
+#io.imshow(binary_fill_holes(minimum_filter(maximum_filter(full, size=51, footprint=morphology.diamond(31)), size=51)))
+
+# <codecell>
+
+#io.imshow(ski.img_as_float(A)*0.5 + full[:, :, newaxis]*0.5)
+#io.imshow(morphology.binary_closing(full, morphology.disk(15)))
+
+# <codecell>
+
+io.imsave("__1.gif", A)
+io.imsave("__2.gif", total)
+#io.imsave("__2.gif", (morphology.binary_closing(full, morphology.disk(15))).astype(float))
+
+# <codecell>
+
+os.system("gifsicle --delay=80 --loop __*.gif > test.gif")
+
+# <codecell>
+
+print B.shape
+print transform.rescale(B, 0.5).shape
+
+# <codecell>
+
+