コード例 #1
0
ファイル: montage.py プロジェクト: spartango/LeginonSpots
	def needImage(self, image):
		if not self.isClose(image):
			return False
		if polygon.pointsInPolygon(image.stagecorners, self.stagecorners):
			return True
		if polygon.pointsInPolygon([image.stagecenter], self.stagecorners):
			return True
		if polygon.pointsInPolygon(self.stagecorners, image.stagecorners):
			return True
		if polygon.pointsInPolygon([self.stagecenter], image.stagecorners):
			return True
		return False
コード例 #2
0
 def needImage(self, image):
     if not self.isClose(image):
         return False
     if polygon.pointsInPolygon(image.stagecorners, self.stagecorners):
         return True
     if polygon.pointsInPolygon([image.stagecenter], self.stagecorners):
         return True
     if polygon.pointsInPolygon(self.stagecorners, image.stagecorners):
         return True
     if polygon.pointsInPolygon([self.stagecenter], image.stagecorners):
         return True
     return False
コード例 #3
0
 def setPolygon(self):
         vertices = self.panel.getTargetPositions('Polygon Vertices')
         if len(vertices) < 3:
                 self.polygonrasterpoints = self.rasterpoints
         else:
                 self.polygonrasterpoints = polygon.pointsInPolygon(self.rasterpoints, vertices)
         self.setTargets(self.polygonrasterpoints, 'Polygon Raster')
コード例 #4
0
 def setPolygon(self):
     vertices = self.panel.getTargetPositions('Polygon Vertices')
     if len(vertices) < 3:
         self.polygonrasterpoints = self.rasterpoints
     else:
         self.polygonrasterpoints = polygon.pointsInPolygon(
             self.rasterpoints, vertices)
     self.setTargets(self.polygonrasterpoints, 'Polygon Raster')
コード例 #5
0
    def makeRaster(self):
        shape = self.currentimagedata['image'].shape
        spacing = self.settings['raster spacing']
        angledeg = self.settings['raster angle']
        anglerad = math.radians(angledeg)
        rasterpoints = raster.createRaster(shape, spacing, anglerad)
        regionrasters = []
        fullrasterset = set()
        for region in self.regionarrays:
            regionraster = polygon.pointsInPolygon(rasterpoints, region)
            regionrasters.append(regionraster)
            fullrasterset = fullrasterset.union(regionraster)
        # set is unordered, so use original rasterpoints for order
        self.fullraster = []
        for point in rasterpoints:
            if point in fullrasterset:
                self.fullraster.append(point)

        fullrasterdisplay = self.transpose_points(self.fullraster)
        self.setTargets(fullrasterdisplay, 'acquisition', block=False)
コード例 #6
0
	def makeRaster(self):
		shape = self.currentimagedata['image'].shape
		spacing = self.settings['raster spacing']
		angledeg = self.settings['raster angle']
		anglerad = math.radians(angledeg)
		rasterpoints = raster.createRaster(shape, spacing, anglerad)
		regionrasters = []
		fullrasterset = set()
		for region in self.regionarrays:
			regionraster = polygon.pointsInPolygon(rasterpoints, region)
			regionrasters.append(regionraster)
			fullrasterset = fullrasterset.union(regionraster)
		# set is unordered, so use original rasterpoints for order
		self.fullraster = []
		for point in rasterpoints:
			if point in fullrasterset:
				self.fullraster.append(point)

		fullrasterdisplay = self.transpose_points(self.fullraster)
		self.setTargets(fullrasterdisplay, 'acquisition', block=False)
    def insideRegionArrays(self, rasterpoints, spacing):
        fullrasterset = set()

        ## this block will reduce the number of raster points
        if self.regionarrays:
            region = self.regionarrays[0]
            gmin0 = gmax0 = region[0][0]
            gmin1 = gmax1 = region[0][1]
            for region in self.regionarrays:
                min0 = min(region[:, 0])
                min1 = min(region[:, 1])
                max0 = max(region[:, 0])
                max1 = max(region[:, 1])
                if min0 < gmin0:
                    gmin0 = min0
                if min1 < gmin1:
                    gmin1 = min1
                if max0 > gmax0:
                    gmax0 = max0
                if max1 > gmax1:
                    gmax1 = max1
            gmin0 -= (2 * spacing)
            gmin1 -= (2 * spacing)
            gmax0 += (2 * spacing)
            gmax1 += (2 * spacing)
            newrasterpoints = []
            for rasterpoint in rasterpoints:
                if gmin0 < rasterpoint[0] < gmax0:
                    if gmin1 < rasterpoint[1] < gmax1:
                        newrasterpoints.append(rasterpoint)
            rasterpoints = newrasterpoints

        #for region in self.regionarrays:
        for region in self.regionarrays:
            ### keep raster points that are either in the polygon
            ### or near the polygon
            fillraster = polygon.pointsInPolygon(rasterpoints, region)
            fullrasterset = fullrasterset.union(fillraster)

            leftovers = list(set(rasterpoints).difference(fillraster))
            if len(region) > 1:
                distances = polygon.distancePointsToPolygon(leftovers, region)
            else:
                # handle the case for one point in the region
                regionlist = region.tolist()
                regionlist = [(regionlist[0][0], regionlist[0][1]),
                              (regionlist[0][0] + 1, regionlist[0][1] + 1)]
                newregion = numpy.array(regionlist)
                distances = polygon.distancePointsToPolygon(
                    leftovers, newregion)

            isnear = distances < spacing
            #nearraster = numpy.compress(distances<spacing, rasterpoints)
            nearraster = []
            for i, point in enumerate(leftovers):
                if isnear[i]:
                    nearraster.append(point)
            fullrasterset = fullrasterset.union(nearraster)
        # set is unordered, so use original rasterpoints for order
        fullraster = []
        for point in rasterpoints:
            if point in fullrasterset:
                fullraster.append(point)

        return fullraster
コード例 #8
0
	def insideRegionArrays(self, rasterpoints,spacing):
		fullrasterset = set()

		## this block will reduce the number of raster points
		if self.regionarrays:
			region = self.regionarrays[0]
			gmin0 = gmax0 = region[0][0]
			gmin1 = gmax1 = region[0][1]
			for region in self.regionarrays:
				min0 = min(region[:,0])
				min1 = min(region[:,1])
				max0 = max(region[:,0])
				max1 = max(region[:,1])
				if min0 < gmin0:
					gmin0 = min0
				if min1 < gmin1:
					gmin1 = min1
				if max0 > gmax0:
					gmax0 = max0
				if max1 > gmax1:
					gmax1 = max1
			gmin0 -= (2*spacing)
			gmin1 -= (2*spacing)
			gmax0 += (2*spacing)
			gmax1 += (2*spacing)
			newrasterpoints = []
			for rasterpoint in rasterpoints:
				if gmin0 < rasterpoint[0] < gmax0:
					if gmin1 < rasterpoint[1] < gmax1:
						newrasterpoints.append(rasterpoint)
			rasterpoints = newrasterpoints

		#for region in self.regionarrays:
		for region in self.regionarrays:
			### keep raster points that are either in the polygon
			### or near the polygon
			fillraster = polygon.pointsInPolygon(rasterpoints, region)
			fullrasterset = fullrasterset.union(fillraster)

			leftovers = list(set(rasterpoints).difference(fillraster))
			if len(region) > 1:
				distances = polygon.distancePointsToPolygon(leftovers, region)
			else:
			# handle the case for one point in the region
				regionlist = region.tolist()
				regionlist =[(regionlist[0][0],regionlist[0][1]),(regionlist[0][0]+1,regionlist[0][1]+1)]
				newregion = numpy.array(regionlist)
				distances = polygon.distancePointsToPolygon(leftovers, newregion)
				
			isnear = distances < spacing
			#nearraster = numpy.compress(distances<spacing, rasterpoints)
			nearraster = []
			for i, point in enumerate(leftovers):
				if isnear[i]:
					nearraster.append(point)
			fullrasterset = fullrasterset.union(nearraster)
		# set is unordered, so use original rasterpoints for order
		fullraster = []
		for point in rasterpoints:
			if point in fullrasterset:
				fullraster.append(point)

		return fullraster