Created
April 15, 2019 16:32
-
-
Save iandewancker/1945c09e9c6119d95c25d8221878f290 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import glob | |
import skimage | |
import numpy as np | |
import matplotlib.pyplot as plt | |
from PIL import Image | |
import glob | |
import matplotlib.pyplot as plt | |
import numpy as np | |
from skimage.segmentation import felzenszwalb, slic, quickshift, watershed | |
from skimage.segmentation import mark_boundaries | |
from skimage.util import img_as_float | |
from skimage.filters.rank import entropy | |
from skimage.morphology import disk | |
from scipy import ndimage as nd | |
from skimage import feature | |
from skimage.color import rgb2hsv | |
import matplotlib.patches as patches | |
img1_list = glob.glob("*img1.jpg") | |
img2_list = glob.glob("*img2.jpg") | |
import PIL | |
import re | |
def natural_sort(l): | |
convert = lambda text: int(text) if text.isdigit() else text.lower() | |
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] | |
return sorted(l, key = alphanum_key) | |
img1s = natural_sort(img1_list) | |
img2s = natural_sort(img2_list) | |
for img1_name,img2_name in zip(img1s,img2s): | |
pil_image = PIL.Image.open(img1_name) | |
pil_image = pil_image.resize((int(pil_image.size[0]/2.0),int(pil_image.size[1]/2.0)), Image.ANTIALIAS) | |
rgb = np.array(pil_image) | |
gray = np.array(pil_image.convert('L')) | |
fig = plt.figure(figsize=(18,9)) | |
ax1 = fig.add_subplot(1, 2, 1) | |
ax2 = fig.add_subplot(1, 2, 2) | |
ax1.imshow(rgb) | |
print(img1_name) | |
#segments_fz = felzenszwalb(rgb, scale=100, sigma=1.5, min_size=150) #min_size=150, sigma=1.5 | |
#ax2.imshow(mark_boundaries(rgb, segments_fz)) | |
#plt.title("Felzenszwalb Segments {}".format(np.unique(segments_fz).shape[0])) | |
entropy_img = entropy(gray, disk(25)) | |
img1 = ax2.imshow(entropy_img, cmap=plt.cm.jet) | |
ax2.set_title('Entropy') | |
ax2.axis('off') | |
fig.colorbar(img1, ax=ax1) | |
plt.savefig(img1_name+"_segments.png", dpi=150, transparent=True, bbox_inches='tight') | |
plt.close() | |
fig = plt.figure(figsize=(18,9)) | |
ax1 = fig.add_subplot(1,1,1) | |
peaks = feature.peak_local_max(entropy_img, min_distance=30, threshold_abs=0.1) | |
plt.imshow(rgb) | |
plt.plot(peaks[:, 1], peaks[:, 0], 'r.', linewidth=2.0) | |
for (y,x) in peaks: | |
print(y,x) | |
rect = patches.Rectangle((x-32,y-32),64,64,linewidth=1,edgecolor='r',facecolor='none') | |
# Add the patch to the Axes | |
ax1.add_patch(rect) | |
plt.savefig(img1_name+"_candidates.png", dpi=600, transparent=True, bbox_inches='tight') | |
plt.close() | |
pil_image = PIL.Image.open(img2_name) | |
pil_image = pil_image.resize((int(pil_image.size[0]/2.0),int(pil_image.size[1]/2.0)), Image.ANTIALIAS) | |
rgb = np.array(pil_image) | |
gray = np.array(pil_image.convert('L')) | |
fig = plt.figure(figsize=(18,9)) | |
ax1 = fig.add_subplot(1, 2, 1) | |
ax2 = fig.add_subplot(1, 2, 2) | |
ax1.imshow(rgb) | |
print(img2_name) | |
#segments_fz = felzenszwalb(rgb, scale=100, sigma=1.5, min_size=150) #min_size=150, sigma=1.5 | |
#ax2.imshow(mark_boundaries(rgb, segments_fz)) | |
#plt.title("Felzenszwalb Segments {}".format(np.unique(segments_fz).shape[0])) | |
entropy_img = entropy(gray, disk(25)) | |
img1 = ax2.imshow(entropy_img, cmap=plt.cm.jet) | |
ax2.set_title('Entropy') | |
ax2.axis('off') | |
fig.colorbar(img1, ax=ax1) | |
plt.savefig(img2_name+"_segments.png", dpi=150, transparent=True, bbox_inches='tight') | |
plt.close() | |
fig = plt.figure(figsize=(18,9)) | |
ax1 = fig.add_subplot(1,1,1) | |
peaks = feature.peak_local_max(entropy_img, min_distance=30, threshold_abs=0.1) | |
plt.imshow(rgb) | |
plt.plot(peaks[:, 1], peaks[:, 0], 'r.', linewidth=2.0) | |
print(peaks) | |
for (y,x) in peaks: | |
print(y,x) | |
rect = patches.Rectangle((x-32,y-32),64,64,linewidth=1,edgecolor='r',facecolor='none') | |
# Add the patch to the Axes | |
ax1.add_patch(rect) | |
plt.savefig(img2_name+"_candidates.png", dpi=600, transparent=True, bbox_inches='tight') | |
plt.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment