コード例 #1
0
ファイル: salpart.py プロジェクト: Robert0812/salgt
 def slot_slic(self, pyr):
     '''
         perform SLIC superpixel segmentation
         Input: 
                 QPixmap self.query
                 int32   number of superpixel
         Output: 
                 ndarray self.npimg      - input image 
                 ndarray self.nplabel    - seg label
                 ndarray self.npdraw     - draw map
                 QPixmap self.qdraw      - a draw map with segmentation boundary
     '''
     #w = self.image.width()
     #h = self.image.height()
     # QPixmap to QImage
     qimage = self.query.toImage()
     # QImage to numpy
     imgarr = rgb_view(qimage)
     #imgarr = qimage2numpy(qimage)
     self.npimg = imresize(imgarr, (self.label[pyr].size().height(), self.label[pyr].size().width()), interp='bicubic')
     
     if pyr == 0:
         self.label0 = slic.slic_n(self.npimg, 300, 10)
         #contours = slic.contours(self.npimg, self.label0, 10)
     else:
         self.auxlabel = slic.slic_n(self.npimg, 50, 10)
コード例 #2
0
	def __init__(self, image, input_clf, number_regions=500, consistency=5):
		"""def __init__(self, image, number_regions=500, input_clf):"""
		self.original_image = cv2.imread(image)
		self.hsvimage = cv2.cvtColor(self.original_image, cv2.COLOR_BGR2HSV)
		self.number_regions = number_regions
		self.clf = joblib.load(input_clf)
		self.label_mask = np.array(slic.slic_n(self.original_image, number_regions, consistency),dtype=np.uint8)

		pass
コード例 #3
0
ファイル: salpart.py プロジェクト: Robert0812/salgt
    def slot_load(self):

        newDialog = QDialog()
        fpath = QFileDialog.getExistingDirectory(newDialog, "Select data directory", '../')
        
        if len(fpath) == 0:
            QMessageBox.warning(None, 'Warning!', 'Nothing loaded.')
            return

        self.data_path = str(fpath) + '/' # loaded path
        self.qfiles = sorted(glob.glob(self.data_path+'query/*'))
        
        self.npyr = len(self.label)
        self.mergeSegs = [[] for i in range(self.npyr)]

        # load label data
        self.save_path = self.data_path + 'parts.pkl'
        print self.qfiles
        
        if os.path.isfile(self.save_path):
            # labeled data exists

            f = open(self.save_path, 'rb')
            self.data = cPickle.load(f)
            f.close()
            
            self.index = self.data['index']
       
            # initialize labeled data {label0, auxlabel}
            self.label0 = self.data['labels'][self.index]
            self.query = QPixmap(self.qfiles[self.index])
            qimage = self.query.toImage()
            imgarr = rgb_view(qimage)
            self.npimg = imresize(imgarr, (self.h, self.w), interp='bicubic')
            self.auxlabel = slic.slic_n(self.npimg, 50, 10)

        else:
            # no previous annotation available
            self.data = {}
            self.data['index'] = self.index
            self.data['labels'] = [np.zeros((self.h, self.w), dtype=np.int32) for i in range(len(self.qfiles))]
            self.data['scores'] = [[] for i in range(len(self.qfiles))]
            self.data['identity'] = map(lambda x: os.path.basename(x)[0:os.path.basename(x).find('_')], self.qfiles)
            self.data['flags'] = np.zeros(len(self.qfiles))
            self.data['sflags'] = [[] for i in range(len(self.qfiles))]
            
            self.index = 0
            self.query = QPixmap(self.qfiles[self.index])

            # compute the initial label map given self.query
            for i in range(self.npyr):
                self.slot_slic(i)

        for i in range(self.npyr):
            self.show_label(i)
コード例 #4
0
ファイル: fetrims.py プロジェクト: kithon/SourceCode
def load_etrims(radius, size, is08, shuffle, name, n_superpixels, compactness, t_index=None):
    # ----- make up -----
    isInit = t_index is None
    
    # ----- path initialize -----
    root_path = '../Dataset/etrims-db_v1/'
    an_name = 'annotations/'
    im_name = 'images/'
    et_name = '08_etrims-ds/' if is08 else '04_etrims-ds/'
    an_path = root_path + an_name + et_name
    im_path = root_path + im_name + et_name
    dir_list = os.listdir(an_path)
        
    # ----- train index -----
    train_index = []
    DATA_SIZE = size # max=60 
    TRAIN_SIZE = 2 * size / 3 # max=40
    if isInit:
        train_index = random.sample(range(DATA_SIZE), TRAIN_SIZE) if shuffle else range(TRAIN_SIZE)
    else:
        train_index = t_index

    # ----- test set and train set -----
    train_set = []
    test_set = []
    test_or_train = [test_set, train_set]        
    for i in xrange(DATA_SIZE):
        # open annotation.png and image.jpg
        dis = dir_list[i]
        file_name = dis.split(".")[0]
        annot_path = an_path + file_name + ".png"
        annotation = Image.open(annot_path)
        image_path = im_path + file_name + ".jpg"
        image = Image.open(image_path)
        spixel = sc.slic_n(np.array(image), n_superpixels, compactness)
        
        # get index and set picture
        index = i in train_index
        picture = Pic(image, annotation, spixel)
        test_or_train[index].append(picture)

        # print filename
        if isInit:
            print_time("eTRIMS: %s" % file_name, name)

    # ----- finish -----
    if isInit:
        print_parameter(train_index, name)
        print_time("eTRIMS: train=%d test=%d" % (len(train_set), len(test_set)), name)
    return train_set, test_set
コード例 #5
0
 def __call__(self, im):
     if self.check_cache(im) is False:
         arrIn = np.zeros(( im.getSize()[0], im.getSize()[1], 3  ))
         if im.getTypeAsString()=="RGB":
             image_slices = sp.Image()
             sp.splitChannels(im, image_slices)
             for i in range(3):
                 arrtmp = image_slices.getSlice(i)
                 arrIn[:, :, i] = arrtmp.getNumArray()
         else:
             for i in range(3):
                 arrIn[:, :, i] = im.getNumArray()
         region_labels = slic.slic_n(np.uint8(arrIn), self._params["nb_regions"],   self._params["m"])
         imout = sp.Image(region_labels.shape[0],  region_labels.shape[1])
         arrOut = imout.getNumArray()
         for i in range(region_labels.shape[0]):
             for j in range(region_labels.shape[1]):
                 arrOut[i, j] = region_labels[i, j]
         ##
         copie16 = sp.Image(imout, "UINT16")
         sp.copy(imout,  copie16)
         self.update_cache(im, copie16)
     return self._cache_seg
コード例 #6
0
ファイル: example.py プロジェクト: haohao200609/Hybrid
import numpy as np
import PIL.Image

import matplotlib.pyplot as plt
import slic

im = np.array(PIL.Image.open("grass.jpg"))
region_labels = slic.slic_n(im, 1000, 10)
print type(region_labels)
contours = slic.contours(im, region_labels, 10)
plt.imshow(contours[:, :, :-1].copy())
plt.show()
コード例 #7
0
    # im8bit = (d[objects[ind]]*mask_erode)
    # im8bit = im8bit / np.ceil(im8bit.max()/256.0)
    im8bit = deepcopy(posMat)
    for i in range(3):
        im8bit[:, :,
               i][im8bit[:, :, i] != 0] -= im8bit[:, :,
                                                  i][im8bit[:, :,
                                                            i] != 0].min()
        im8bit[:, :, i] /= im8bit[:, :, i].max() / 256
    im8bit = np.array(im8bit, dtype=uint8)
    # im8bit = im8bit[:,:,2]
    im4d = np.dstack([mask_erode, im8bit])
    # im4d = np.dstack([mask_erode, im8bit, im8bit, im8bit])
    # im4d = np.dstack([mask_erode, dists2Tot, dists2Tot, dists2Tot])
    # im4d = np.dstack([mask_erode, im8bit, dists2Tot, mask_erode])
    regions = slic.slic_n(np.array(im4d, dtype=uint8), 50, 10)  #2
    # regions = slic.slic_s(np.array(im4d, dtype=uint8), 550,3)
    regions *= mask_erode
    imshow(regions)

    avgColor = np.zeros([regions.shape[0], regions.shape[1], 3])
    # avgColor = np.zeros([regions.shape[0],regions.shape[1],4])

    regionCount = regions.max()
    regionLabels = [[0]]
    goodRegions = 0
    bodyMean = np.array([
        posMat[mask_erode, 0].mean(), posMat[mask_erode, 1].mean(),
        posMat[mask_erode, 2].mean()
    ])
    for i in range(1, regionCount + 2):
コード例 #8
0
# dists2Tot[dists2Tot>1000] = 1000

# im8bit = (d[objects[ind]]*mask_erode)
# im8bit = im8bit / np.ceil(im8bit.max()/256.0)
im8bit = deepcopy(posMat)
for i in range(3):
	im8bit[:,:,i][im8bit[:,:,i]!=0] -= im8bit[:,:,i][im8bit[:,:,i]!=0].min()
	im8bit[:,:,i] /= im8bit[:,:,i].max()/256
im8bit = np.array(im8bit, dtype=uint8)
# im8bit = im8bit[:,:,2]
im4d = np.dstack([mask_erode, im8bit])
# im4d = np.dstack([mask_erode, im8bit, im8bit, im8bit])
# im4d = np.dstack([mask_erode, dists2Tot, dists2Tot, dists2Tot])
# im4d = np.dstack([mask_erode, im8bit, dists2Tot, mask_erode])
regions = slic.slic_n(np.array(im4d, dtype=uint8), 50,10)#2
# regions = slic.slic_s(np.array(im4d, dtype=uint8), 550,3)
regions *= mask_erode
imshow(regions)

avgColor = np.zeros([regions.shape[0],regions.shape[1],3])
# avgColor = np.zeros([regions.shape[0],regions.shape[1],4])

regionCount = regions.max()
regionLabels = [[0]]
goodRegions = 0
bodyMean = np.array([posMat[mask_erode,0].mean(),posMat[mask_erode,1].mean(),posMat[mask_erode,2].mean()])
for i in range(1, regionCount+2):
	if np.sum(np.equal(regions,i)) < 50:
		regions[regions==i] = 0
	else:
コード例 #9
0
ファイル: example.py プロジェクト: DanLipsitt/slic-python
import numpy as np
import Image
import matplotlib.pyplot as plt
import slic

im = np.array(Image.open("grass.jpg"))
image_argb = np.dstack([im[:, :, :1], im]).copy("C")
region_labels = slic.slic_n(image_argb, 1000, 10)
slic.contours(image_argb, region_labels, 10)
plt.imshow(image_argb[:, :, 1:].copy())
plt.show()
コード例 #10
0
def getSuperPixels_SLIC(image, nbSegments, compactness):
    return slic.slic_n(image, nbSegments, compactness)
コード例 #11
0
ファイル: main.py プロジェクト: idombanker/Project-Grilla
import numpy as np
import slic

from sklearn.svm import SVC
from sklearn.externals import joblib



original = cv2.imread('./banana.jpg')

o_im = cv2.cvtColor(original, cv2.COLOR_BGR2HSV)

# testing

number_regions = 500
region_labels = slic.slic_n(original, 500, 5)

label_mask = np.array(region_labels.copy(),dtype=np.uint8)

clf = joblib.load("banana_clf.pkl")

def label_color(label, number_regions, shape):

	out = np.ones(shape,dtype=np.uint8)
	for i in range(number_regions):
		newval = np.random.randint(256, size=3)

		out[label==i] = newval
	return out

segment_result = label_color(region_labels,number_regions,original.shape )
コード例 #12
0
# region_labels = slic.slic_n(image_argb, 100, 0)
# slic.contours(image_argb, region_labels, 1)
# plt.imshow(image_argb[:, :, 0])


# regions = slic.slic_n(np.array(np.dstack([im,im[:,:,2]]), dtype=uint8), 50,10)

dists2Tot[dists2Tot>1000] = 1000

im8bit = (d[objects[ind]]*mask_erode)
im8bit = im8bit / np.ceil(im8bit.max()/256.0)

im4d = np.dstack([mask_erode, im8bit, im8bit, im8bit])
# im4d = np.dstack([mask_erode, dists2Tot, dists2Tot, dists2Tot])
# im4d = np.dstack([mask_erode, im8bit, dists2Tot, mask_erode])
regions = slic.slic_n(np.array(im4d, dtype=uint8), 100,5)
# regions = slic.slic_s(np.array(im4d, dtype=uint8), 300,2)
regions *= mask_erode
imshow(regions)

avgColor = np.zeros([regions.shape[0],regions.shape[1],3])
# avgColor = np.zeros([regions.shape[0],regions.shape[1],4])

regionCount = regions.max()
regionLabels = []
for i in range(regionCount):
	if 1: #if using x/y/z
		meanPos = posMat[regions==i,:].mean(0)
	if 0: # If using distance map
		meanPos = np.array([posMat[regions==i,:].mean(0)[0],
							posMat[regions==i,:].mean(0)[1],
コード例 #13
0
def getSuperPixels_SLIC(image, nbSegments, compactness):
    return slic.slic_n(image, nbSegments, compactness)
コード例 #14
0
ファイル: salpart.py プロジェクト: Robert0812/salgt
    def setupUi(self, MainWindow):

        self.w = 270 #self.label[0].size().width()
        self.h = 720 #self.label[0].size().height()

        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(3*self.w +180, self.h+90)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        #self.label = CLabel(self.centralwidget)
        #self.label.setGeometry(QtCore.QRect(180, 30, 270, 720))
        #self.label.setObjectName(_fromUtf8("label"))
        
        self.widget = QtGui.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(20, 70, 110, 611))
        self.widget.setObjectName(_fromUtf8("widget"))
        self.verticalLayout = QtGui.QVBoxLayout(self.widget)
        # self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.pushButton = []
        for i in range(7):
            button = QPushButton(self.widget)
            button.setObjectName('pushButton_{}'.format(i))
            self.pushButton.append(button)
            self.verticalLayout.addWidget(self.pushButton[-1])

        self.widget = QtGui.QWidget(self.centralwidget)
        self.widget.move(150, 20)
        self.widget.setObjectName(_fromUtf8("widget"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.widget)
        # self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.label = []
        for i in range(2):
            label = CLabel(self.widget)
            label.setObjectName(_fromUtf8("label_{}".format(i)))
            self.label.append(label)
            self.label[-1].setGeometry(QRect(150, 20, self.w, self.h))
            self.horizontalLayout.addWidget(self.label[-1])

        self.reflabel = QLabel(self.widget)
        self.reflabel.setObjectName('label_{}'.format(i+1))
        self.reflabel.setGeometry(QRect(150, 20, self.w, self.h))
        self.horizontalLayout.addWidget(self.reflabel)

        self.readme = QPlainTextEdit(self.centralwidget)
        self.readme.setReadOnly(True)
        self.readme.setGeometry(QRect(150, self.h+40, 3*self.w, 25))
        self.readme.setPlainText("Important: before clicking 'Save Parts' button, please select all body part!")

        
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        
        QObject.connect(self.pushButton[2], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_previous)
        QObject.connect(self.pushButton[3], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_next)
        QObject.connect(self.pushButton[1], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_merge)
        QObject.connect(self.pushButton[5], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_save)
        QObject.connect(self.pushButton[4], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_reset)
        QObject.connect(self.pushButton[6], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_exit)
        QObject.connect(self.pushButton[0], QtCore.SIGNAL(_fromUtf8("clicked()")), self.slot_load)

        for i in range(len(self.label)):
            QObject.connect(self.label[i], SIGNAL('clicked()'), lambda pyr = i: self.slot_click(pyr))

        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        # load default files
        self.data_path = '../data_cuhk/' # default path
        self.qfiles = sorted(glob.glob(self.data_path+'query/*'))

        
        self.npyr = len(self.label)
        self.mergeSegs = [[] for i in range(self.npyr)]

        # load label data
        self.save_path = self.data_path + 'parts.pkl'
        
        if os.path.isfile(self.save_path):
            # labeled data exists

            f = open(self.save_path, 'rb')
            self.data = cPickle.load(f)
            f.close()
            
            self.index = self.data['index']
       
            # initialize labeled data {label0, auxlabel}
            self.label0 = self.data['labels'][self.index]
            self.query = QPixmap(self.qfiles[self.index])
            qimage = self.query.toImage()
            imgarr = rgb_view(qimage)
            self.npimg = imresize(imgarr, (self.h, self.w), interp='bicubic')
            self.auxlabel = slic.slic_n(self.npimg, 50, 10)

        else:
            # no previous annotation available
            self.index = 0
            self.query = QPixmap(self.qfiles[self.index])

            self.data = {}
            self.data['index'] = self.index
            self.data['labels'] = [np.zeros((self.h, self.w), dtype=np.int32) for i in range(len(self.qfiles))]
            self.data['scores'] = [[] for i in range(len(self.qfiles))]
            self.data['identity'] = map(lambda x: os.path.basename(x)[0:os.path.basename(x).find('_')], self.qfiles)
            self.data['flags'] = np.zeros(len(self.qfiles))
            self.data['sflags'] = [[] for i in range(len(self.qfiles))]

            # compute the initial label map given self.query
            for i in range(self.npyr):
                self.slot_slic(i)

        for i in range(self.npyr):
            self.show_label(i)
コード例 #15
0
import numpy as np
import Image
import matplotlib.pyplot as plt
import slic

im = np.array(Image.open("tennis.png"))
region_labels = slic.slic_n(im, 100, 10)
contours = slic.contours(im, region_labels, 10)
plt.imshow(contours[:, :, :-1].copy())
plt.show()