def Execute(self): images = self.GetInputStageValue(0, "images") self.StartProcess() kds = [] for im in images.GetImages(): keypointDescriptorFile = os.path.join( os.path.splitext(im.GetFilePath())[0] + ".key") if (Common.Utility.ShouldRun(self._properties["Force Run"], keypointDescriptorFile)): daisyKD = self.Process(im.GetFilePath()) kd = FeatureExtraction.KeypointDescriptorFileLowe( daisyKD, self._properties["Parse Descriptors"]) kd.Write(os.path.splitext(daisyKD.GetFilePath())[0] + ".key") else: kd = FeatureExtraction.KeypointDescriptorFileLowe( keypointDescriptorFile, self._properties["Parse Descriptors"]) kds.append(kd) kds = FeatureExtraction.KeypointDescriptors(images.GetPath(), kds) self.SetOutputValue("keypointDescriptors", kds)
def Execute(self): images = self.GetInputStageValue(0, "images") self.StartProcess() kds = [] images.WriteFileList() ds = 0 if (self._properties["Downsample"]): ds = 1 for im in images.GetImages(): keypointDescriptorFile = os.path.join( os.path.splitext(im.GetFilePath())[0] + ".key") if (Common.Utility.ShouldRun(self._properties["Force Run"], keypointDescriptorFile)): self.RunCommand( "ASIFTkeypoint", Common.Utility.CommandArgs( Common.Utility.Quoted(im.GetFilePath()), Common.Utility.Quoted(keypointDescriptorFile), self._properties["Number of Tilts"], ds)) kd = FeatureExtraction.KeypointDescriptorFileLowe( keypointDescriptorFile, False) kds.append(kd) kds = FeatureExtraction.KeypointDescriptors(images.GetPath(), kds) self.SetOutputValue("keypointDescriptors", kds)
def process(self, im): # special case if (self.__parent._properties["Sift Method"] == "VLFeat"): exeName = "sift" argsPattern = "--orientations \"%s\" -o \"%s\"" keypointDescriptorFile = os.path.join(os.path.splitext(im.GetFilePath())[0]+".key") if (Common.Utility.ShouldRun(self.__parent._properties["Force Run"], keypointDescriptorFile)): self.__parent.RunCommand(exeName, argsPattern % (im.GetFilePath(),keypointDescriptorFile)) vlkd = KeypointDescriptorFileVLFeat(keypointDescriptorFile, True) kd = FeatureExtraction.KeypointDescriptorFileLowe(vlkd) kd.Write(vlkd.GetFilePath()) else: kd = FeatureExtraction.KeypointDescriptorFileLowe(keypointDescriptorFile, self.__parent._properties["Parse Descriptors"]) return kd else: if (self.__parent._properties["Sift Method"] == "SiftWin32"): exeName = "siftWin32" argsPattern = "<\"%s\"> \"%s\"" elif (self.__parent._properties["Sift Method"] == "SiftHess"): exeName = "sifthess" argsPattern = "\"%s\" \"%s\"" elif (self.__parent._properties["Sift Method"] == "SiftGPU"): exeName = "SiftGPUKeypoint" argsPattern = "\"%s\" \"%s\"" else: raise Exception("Unknown Sift method: " + self.__parent._properties["Sift Method"]) keypointDescriptorFile = os.path.join(os.path.splitext(im.GetFilePath())[0]+".key") if (Common.Utility.ShouldRun(self.__parent._properties["Force Run"], keypointDescriptorFile)): self.__parent.RunCommand(exeName, argsPattern % (im.GetFilePath(),keypointDescriptorFile)) kd = FeatureExtraction.KeypointDescriptorFileLowe(keypointDescriptorFile, self.__parent._properties["Parse Descriptors"]) return kd
def Execute(self): images = self.GetInputStageValue(0, "images") self.StartProcess() import cv MIN_DESC_VAL = -0.5 MAX_DESC_VAL = 0.8 CONV_FACTOR = 255.0 / (MAX_DESC_VAL-MIN_DESC_VAL) kds = [] for im in images.GetImages(): keypointDescriptorFile = os.path.join(os.path.splitext(im.GetFilePath())[0]+".key") if (Common.Utility.ShouldRun(self._properties["Force Run"], keypointDescriptorFile)): cvim = cv.LoadImageM(im.GetFilePath(), cv.CV_LOAD_IMAGE_GRAYSCALE) keypoints, descriptors = cv.ExtractSURF(cvim, None, cv.CreateMemStorage(), (1, self._properties["Hessian Threshold"], self._properties["Number Octaves"], self._properties["Number Octave Layers"])) l = [] for i,descriptor in enumerate(descriptors): descr = [int((x-MIN_DESC_VAL)*CONV_FACTOR) for x in descriptor] l.append(FeatureExtraction.KeypointDescriptor(keypoints[i][0][1], keypoints[i][0][0], keypoints[i][2], math.radians(keypoints[i][3]), descr)) kdfl = FeatureExtraction.KeypointDescriptorFileLowe(l) kdfl.Write(keypointDescriptorFile) kdfl = FeatureExtraction.KeypointDescriptorFileLowe(keypointDescriptorFile, False) kds.append(kdfl) kds = FeatureExtraction.KeypointDescriptors(images.GetPath(), kds, False) self.SetOutputValue("keypointDescriptors", kds)