[171cba]: / 4x / reference / giftest.py

Download this file

112 lines (67 with data), 2.0 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
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)
l = os.listdir("../data")
for f in l :
if not f.endswith(".jpg") :
l.remove(f)
qstain = np.array([[.26451728, .5205347, .81183386], [.9199094, .29797825, .25489032], [.28947765, .80015373, .5253158]])
for im in l :
print im
A = transform.rescale(io.imread("../data/" + im), 0.25)
deconv = ski.img_as_float(color.separate_stains(A, np.linalg.inv(qstain)))
subveins1 = \
morphology.remove_small_objects(
filter.threshold_adaptive(
filter.gaussian_filter(
deconv[:, :, 2] / deconv[:, :, 0],
11),
250, offset = -0.13),
60)
subveins2 = \
morphology.remove_small_objects(
filter.threshold_adaptive(
filter.gaussian_filter(
maximum_filter(
deconv[:, :, 2] / deconv[:, :, 0],
5),
11),
250, offset = -0.13),
60)
veins = \
maximum_filter(
morphology.remove_small_objects(
binary_fill_holes(
morphology.binary_closing(
np.logical_or(subveins1, subveins2),
morphology.disk(25)),
),
250),
27)
inflammation = \
maximum_filter(
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 = 1),
5),
cutoff = 0.6),
75, offset = -0.12),
250),
29)
# Labelled
total = np.zeros_like(A)
#total[:, :, 0] = blood
total[:, :, 1] = veins
total[:, :, 2] = inflammation
io.imsave("__1.gif", A)
io.imsave("__2.gif", total)
os.system("gifsicle --delay=80 --loop __*.gif > %s.gif" % im)