码迷,mamicode.com
首页 > 其他好文 > 详细

COMP9517 lab3 image segementation

时间:2020-07-01 22:28:40      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:import   rom   figure   tle   log   imp   mpi   display   name   

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

from scipy import ndimage as ndi
from skimage.morphology import watershed
from skimage.feature import peak_local_max
from sklearn.cluster import MeanShift

from PIL import Image

size = 100, 100

img_names = ["shapes.png", "strawberry.png"]
ext_names = ["coins.png", "kiwi.png"]

images = [r‘C:\Users\harri\Desktop\2020T2\9517\lab3\COMP9517_20T2_Lab3_Images\\‘+i for i in img_names]
ext_images = [r‘C:\Users\harri\Desktop\2020T2\9517\lab3\COMP9517_20T2_Lab3_Images\\‘+i for i in ext_names]


def plot_three_images(figure_title, image1, label1,
image2, label2, image3, label3):
fig = plt.figure()
fig.suptitle(figure_title)

# Display the first image
fig.add_subplot(1, 3, 1)
plt.imshow(image1)
plt.axis(‘off‘)
plt.title(label1)

# Display the second image
fig.add_subplot(1, 3, 2)
plt.imshow(image2)
plt.axis(‘off‘)
plt.title(label2)

# Display the third image
fig.add_subplot(1, 3, 3)
plt.imshow(image3)
plt.axis(‘off‘)
plt.title(label3)

plt.show()


for img_path in ext_images:
img = Image.open(img_path)
img.thumbnail(size)


# TODO: perform meanshift on image
meanShift_img = np.array(img)[:,:,:3]
R = meanShift_img[:,:,0:1].flatten()[:,np.newaxis]
G = meanShift_img[:,:,1:2].flatten()[:,np.newaxis]
B = meanShift_img[:,:,2:3].flatten()[:,np.newaxis]
colour_samples = np.concatenate((R,G,B),axis=1)
MS = MeanShift(bin_seeding=True)
ms_labels = MS.fit_predict(colour_samples) # CHANGE THIS
ms_labels = ms_labels.reshape(meanShift_img.shape[0],meanShift_img.shape[1])
# TODO: perform an optimisation and then watershed on image

ws_img = img.convert(‘L‘)
gray_ws_image = np.array(ws_img)
distance = ndi.distance_transform_edt(gray_ws_image)
local_max = peak_local_max(distance, indices=False, footprint=np.ones((3, 3)),
labels=gray_ws_image)
markers = ndi.label(local_max)[0]

ws_labels = watershed(-distance,markers,mask = gray_ws_image) # CHANGE THIS


# Display the results
plot_three_images(img_path, img, "Original Image", ms_labels, "MeanShift Labels",
ws_labels, "Watershed Labels")

COMP9517 lab3 image segementation

标签:import   rom   figure   tle   log   imp   mpi   display   name   

原文地址:https://www.cnblogs.com/ChevisZhang/p/13221663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!