-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
76 lines (60 loc) · 1.57 KB
/
utils.py
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
import skimage
import matplotlib.pyplot as plt
import numpy as np
def blend(img1, img2, alpha=0.5):
"""
Alpha blend two images.
Parameters
----------
img1, img2 : numpy.ndarray
Images to blend.
alpha : float
Blending factor.
Returns
-------
result : numpy.ndarray
Blended image
"""
img1 = skimage.img_as_float(img1)
img2 = skimage.img_as_float(img2)
return img1*alpha+(1-alpha)*img2
def imshowpair_python(img1, img2, output_size = (16,16)):
"""
Python version of matlab's imshowpair
Shows images as an overlapping pair with image 1 in red and image 2 in green
Parameters
----------
img1, img2 : numpy.ndarray
Images to blend.
img1: first image to display. Will be shown in red.
img2: second image to display. Will be shown in green.
ax: axis to plot on. If none, current.
return:
--------
None
"""
if ax is None:
ax = plt.gca()
# Create zero image
zero_pad = np.zeros(shape=img_1.shape)
# Normalize images
img1 = norm_img(img1)
img2 = norm_img(img2)
# Ensure images have same mean
img2 *= (img1.mean()/img2.mean())
# Concatenate image
show_img = np.stack((img1, img2, zero_pad), axis=2)
# Plot
ax.imshow(show_img)
def norm_img(img):
"""
Normalizes an image to between 0 and 1
Parameters
----------
img: ndarray
image to normalize
return
---------
nomralized image
"""
return (img - img.min())/(img.max() - img.min())