Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
 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]
Beispiel #4
0
 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)
Beispiel #5
0
    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])
Beispiel #6
0
 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
Beispiel #7
0
    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
Beispiel #8
0
    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
Beispiel #9
0
 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)
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
    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
Beispiel #14
0
    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
Beispiel #15
0
    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
Beispiel #16
0
    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)
Beispiel #17
0
 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])
Beispiel #18
0
 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])
Beispiel #19
0
 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])
Beispiel #20
0
    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
Beispiel #21
0
    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
Beispiel #22
0
 def calculate(self, resource):
     except_image_only(resource)
     im = image2numpy(resource.image, remap='gray')
     return rotation_invariant_moments(im)
Beispiel #23
0
 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))