def calculate(self, resource): """ Append descriptors to DCD h5 table """ (image_uri, mask_uri, gobject_uri) = resource #image_uri = BQServer().prepare_url(image_uri, remap='gray') if image_uri and mask_uri and gobject_uri: raise FeatureExtractionError( 400, 'Can only take either a mask or a gobject not both') #image_uri = BQServer().prepare_url(image_uri, remap='display') im = image2numpy(image_uri, remap='gray') if mask_uri is '' and gobject_uri is '': #calculating descriptor descriptor, label = extractHTD(im) #initalizing rows for the table return [descriptor], [0] if mask_uri: #mask_uri = BQServer().prepare_url(mask_uri, remap='gray') mask = image2numpy(mask_uri, remap='gray') if gobject_uri: #creating a mask from gobject mask = gobject2mask(gobject_uri, im) descriptors, labels = extractHTD(im, mask=mask) #initalizing rows for the table return descriptors, labels
def calculate(self, resource): """ Append descriptors to DCD h5 table """ (image_uri, mask_uri, gobject_uri) = resource if image_uri and mask_uri and gobject_uri: raise FeatureExtractionError(400, 'Can only take either a mask or a gobject not both') #image_uri = BQServer().prepare_url(image_uri, remap='display') im = image2numpy(image_uri, remap='display') im = np.uint8(im) if mask_uri is '' and gobject_uri is '': #calculating descriptor DCD = extractDCD(im) #DCD has a potentional to be any length #the arbitrary decided length to store in the tables is 100 if len(DCD)>self.length: log.debug('Warning: greater than 100 dimensions') DCD = DCD[:self.length] descriptors = np.zeros((self.length)) descriptors[:len(DCD)] = DCD #initalizing rows for the table return [descriptors],[0] if mask_uri: #mask_uri = BQServer().prepare_url(mask_uri, remap='gray') mask = image2numpy(mask_uri, remap='gray') if gobject_uri: #creating a mask from gobject mask = gobject2mask(gobject_uri, im) descritptor_list = [] label_list = [] #calculating descriptor for label in np.unique(mask): lmask = np.array((mask==label)*255, dtype='uint8') DCD = extractDCD(im, mask = lmask) #DCD has a potentional to be any length #the arbitrary decided length to store in the tables is 100 if len(DCD)>self.length: log.debug('Warning: greater than 100 dimensions') DCD=DCD[:self.length] descriptors = np.zeros((self.length)) descriptors[:len(DCD)]=DCD descritptor_list.append(descriptors) label_list.append(label) #initalizing rows for the table return descritptor_list, label_list
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') binary_im = np.uint8(im > 0) m = cv2.moments(binary_im) hu = cv2.HuMoments(m) return [hu.T]
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') feature = hog(im, orientations=4, pixels_per_cell=(8, 8), cells_per_block=(2, 2)) feature = np.reshape(feature, (feature.size/16, 16)) # pylint: disable=no-member block_count = np.arange(feature.shape[0]) return (feature, block_count)
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') keypoints = corner_peaks(corner_harris(im), min_distance=1) extractor = BRIEF_() extractor.extract(im, keypoints) #initalizing rows for the table return (extractor.descriptors, keypoints[:,0], keypoints[:,1])
def calculate(self, resource): """ Append descriptors to h5 table """ except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='display') im = image2numpy(image_uri, remap='display') im = np.uint8(im) descriptors = extractSCD(im, descSize=256) #calculating descriptor return descriptors
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') descriptors = extractEHD(im) #initalizing rows for the table return descriptors
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) descriptors = extractEHD(im) #calculating descriptor return descriptors
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') extractor = ORB() extractor.detect_and_extract(im) return (extractor.descriptors, extractor.keypoints[:,0], extractor.keypoints[:,1], extractor.responses, extractor.scales, extractor.orientations)
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='display') im = image2numpy(image_uri, remap='display') im = np.uint8(im) descriptor = tas(im) #initalizing rows for the table return descriptor
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) #calculate descriptor descritptors = np.hstack(haralick(im)) #initalizing rows for the table return descritptors
def calculate(self, resource): """ Append descriptors to SURF h5 table """ #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) descriptor = pftas(im) #initalizing rows for the table return descriptor
def calculate(self, resource): """ Append descriptors to CSD h5 table """ (image_uri, mask_uri, gobject_uri) = resource if image_uri and mask_uri and gobject_uri: raise FeatureExtractionError(400, 'Can only take either a mask or a gobject not both') #image_uri = BQServer().prepare_url(image_uri, remap='display') im = image2numpy(image_uri, remap='display') im = np.uint8(im) if mask_uri is '' and gobject_uri is '': #calculating descriptor RSD = extractRSD(im) #initalizing rows for the table return [RSD], [0] if mask_uri: #mask_uri = BQServer().prepare_url(mask_uri, remap='gray') mask = image2numpy(mask_uri, remap='gray') if gobject_uri: #creating a mask from gobject mask = gobject2mask(gobject_uri, im) descritptor_list = [] label_list = [] #calculating descriptor for label in np.unique(mask): lmask = np.array((mask==label)*255,dtype='uint8') RSD = extractRSD(im, mask=lmask) label_list.append(label) descritptor_list.append(RSD) #initalizing rows for the table return descritptor_list, label_list
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) width, height = im.shape # if width<128 and height<128: # raise FeatureExtractionError(resource, 415, 'Image\'s width and height must be greater than 128') descriptors = extractHTD(im) #calculating descriptor return descriptors
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) radius = 8 degree = 8 descritptor = zernike_moments(im, radius, degree) #initalizing rows for the table return descritptor
def calculate(self, resource): """ Append descriptors to SURF h5 table """ #initalizing extended = 0 HessianThresh = 400 nOctaves = 3 nOctaveLayers = 4 (image_url, mask_url, gobject_url) = resource if image_url is '': raise FeatureExtractionError(resource, 400, 'Image resource is required') if mask_url is not '': raise FeatureExtractionError(resource, 400, 'Mask resource is not accepted') #image_url = BQServer().prepare_url(image_url, remap='display') im = image2numpy(image_url, remap='display') im = np.uint8(im) if gobject_url is '': fs = cv2.SURF().detect(im) if gobject_url: (x, y, size) = gobject2keypoint(gobject_url) fs = [cv2.KeyPoint(x, y, size)] # keypoints descriptor_extractor = cv2.DescriptorExtractor_create("SURF") (kpts, descriptors) = descriptor_extractor.compute(im, fs) if descriptors == None: #taking Nonetype into account raise FeatureExtractionError(resource, 500, 'No feature was calculated') x = [] y = [] response = [] size = [] angle = [] octave = [] for k in kpts[:500]: x.append(k.pt[0]) y.append(k.pt[1]) response.append(k.response) size.append(k.size) angle.append(k.angle) octave.append(k.octave) return (descriptors, x, y, response, size, angle, octave)
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') m00 = raw_moments(im, 0, 0) m01 = raw_moments(im, 0, 1) m10 = raw_moments(im, 1, 0) m11 = raw_moments(im, 1, 1) m02 = raw_moments(im, 0, 2) m20 = raw_moments(im, 2, 0) m03 = raw_moments(im, 0, 3) m30 = raw_moments(im, 3, 0) m21 = raw_moments(im, 2, 1) m12 = raw_moments(im, 1, 2) return np.array([m00, m01, m10, m11, m02, m02, m03, m30, m21, m12])
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') u00 = central_moments(im, 0, 0) u01 = central_moments(im, 0, 1) u10 = central_moments(im, 1, 0) u11 = central_moments(im, 1, 1) u02 = central_moments(im, 0, 2) u20 = central_moments(im, 2, 0) u03 = central_moments(im, 0, 3) u30 = central_moments(im, 3, 0) u21 = central_moments(im, 2, 1) u12 = central_moments(im, 1, 2) return np.array([u00, u01, u10, u11, u02, u02, u03, u30, u21, u12])
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') n00 = scale_invarient_moments(im, 0, 0) n01 = scale_invarient_moments(im, 0, 1) n10 = scale_invarient_moments(im, 1, 0) n11 = scale_invarient_moments(im, 1, 1) n02 = scale_invarient_moments(im, 0, 2) n20 = scale_invarient_moments(im, 2, 0) n03 = scale_invarient_moments(im, 0, 3) n30 = scale_invarient_moments(im, 3, 0) n21 = scale_invarient_moments(im, 2, 1) n12 = scale_invarient_moments(im, 1, 2) return np.array([n00, n01, n10, n11, n02, n02, n03, n30, n21, n12])
def calculate(self, resource): #initalizing except_image_only(resource) image_uri = resource.image #image_uri = BQServer().prepare_url(image_uri, remap='gray') im = image2numpy(image_uri, remap='gray') im = np.uint8(im) #calculating descriptor radius = 5 points = 5 descriptor = lbp(im, radius, points) #initalizing rows for the table return descriptor
def calculate(self, resource): """ Append descriptors to h5 table """ except_image_only(resource) image_uri = resource.image feature_info = feature_list[self.name] tranforms = feature_info[1:3] #adds the correct delimiter if image_uri.count('?') < 1: image_uri += '?' else: image_uri += '&' args = [] if feature_info[4] == True: #force the image to 3 channels prefered rgb args.append('remap=display') else: #force the image to be 1 channel args.append('remap=grey') for t in tranforms: if t != "Empty Transform": if t == "Hue Transform": args.append('depth=8,d') args.append( 'transform=rgb2hsv' ) #converts rgb to hsv and then selects the hue channel args.append('remap=1') else: args.append('transform=' + t) args.append('format=tiff') #return tiff format image_uri += '&'.join(args) log.debug('WNDCharm uri: %s' % image_uri) im = image2numpy(image_uri) extractWNDCharmFeature = feature_info[0] descriptor = extractWNDCharmFeature(im) #initalizing rows for the table return descriptor
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') return rotation_invariant_moments(im)
def calculate(self, resource): except_image_only(resource) im = image2numpy(resource.image, remap='gray') min_length = np.min(im.shape) # pylint: disable=no-member return hog(im, pixels_per_cell=(min_length, min_length), cells_per_block=(1,1))