Exemple #1
0
    def __init__(self):

        # CREATING CLASS DATA
        self.ndim = -1
        self.shape = np.zeros((vc.VGL_MAX_DIM() + 1), np.int32)
        self.offset = np.zeros((vc.VGL_MAX_DIM() + 1), np.int32)
        self.size = -1
        self.bps = 8
Exemple #2
0
	def loadCL(self, filepath):
		print("Loading OpenCL Kernel")
		self.kernel_file = open(filepath, "r")
		buildDir = self.getDir(filepath)

		self.build_options = ""
		self.build_options = self.build_options + "-I "+buildDir
		self.build_options = self.build_options + " -D VGL_SHAPE_NCHANNELS={0}".format(vc.VGL_SHAPE_NCHANNELS())
		self.build_options = self.build_options + " -D VGL_SHAPE_WIDTH={0}".format(vc.VGL_SHAPE_WIDTH())
		self.build_options = self.build_options + " -D VGL_SHAPE_HEIGHT={0}".format(vc.VGL_SHAPE_HEIGHT())
		self.build_options = self.build_options + " -D VGL_SHAPE_LENGTH={0}".format(vc.VGL_SHAPE_LENGTH())
		self.build_options = self.build_options + " -D VGL_MAX_DIM={0}".format(vc.VGL_MAX_DIM())
		self.build_options = self.build_options + " -D VGL_ARR_SHAPE_SIZE={0}".format(vc.VGL_ARR_SHAPE_SIZE())
		self.build_options = self.build_options + " -D VGL_ARR_CLSTREL_SIZE={0}".format(vc.VGL_ARR_CLSTREL_SIZE())
		self.build_options = self.build_options + " -D VGL_STREL_CUBE={0}".format(vc.VGL_STREL_CUBE())
		self.build_options = self.build_options + " -D VGL_STREL_CROSS={0}".format(vc.VGL_STREL_CROSS())
		self.build_options = self.build_options + " -D VGL_STREL_GAUSS={0}".format(vc.VGL_STREL_GAUSS())
		self.build_options = self.build_options + " -D VGL_STREL_MEAN={0}".format(vc.VGL_STREL_MEAN())

		#print("Build Options:\n", self.build_options)

		# READING THE HEADER FILES BEFORE COMPILING THE KERNEL
		for file in glob.glob(buildDir+"/*.h"):
			self.pgr = cl.Program(self.ctx, open(file, "r"))

		if ((self.builded == False)):
			self.pgr = cl.Program(self.ctx, self.kernel_file.read())
			self.pgr.build(options=self.build_options)
			#self.pgr.build()
			self.builded = True
		else:
			print("Kernel already builded. Going to next step...")

		self.kernel_file.close()
Exemple #3
0
    def vglCreateShape(self, shape, ndim, bps=8):

        self.ndim = ndim
        self.bps = bps
        self.size = 1

        if ((bps == 1) and (shape[0] != 1)):
            print(
                "Error: Image with 1 bps and mode then one color channels(!)")
            return 1

        maxi = ndim
        c = shape[vc.VGL_SHAPE_NCHANNELS()]
        w = shape[vc.VGL_SHAPE_WIDTH()]

        if (ndim == 1):
            maxi == 2

        for i in range(0, vc.VGL_MAX_DIM() + 1):
            if (i <= maxi):
                self.shape[i] = shape[i]

                if (i == 0):
                    self.offset[i] = 1
                elif (i == 2):
                    self.offset[i] = self.findWidthStep(bps, w, c)
                else:
                    self.offset[i] = shape[i - 1] * self.offset[i - 1]
            else:
                self.shape[i] = 1
                self.offset[i] = 0
        self.size *= self.shape[maxi] * self.offset[maxi]
Exemple #4
0
    def constructor2DShape(self, nChannels, w, h):
        shape = np.ones((vc.VGL_MAX_DIM() + 1), np.int32)
        ndim = 2
        shape[0] = nChannels
        shape[1] = w
        shape[2] = h

        self.vglCreateShape(shape, ndim)
Exemple #5
0
    def asVglClStrEl(self):
        result = VglClStrEl()
        shape = self.vglShape.asVglClShape()

        size = self.getSize()
        if (size > vc.VGL_ARR_CLSTREL_SIZE()):
            print(
                "Error: structuring element size > VGL_ARR_CLSTREL_SIZE. Change this value in vglClStrEl.h to a greater one."
            )

        result.ndim = np.int32(self.vglShape.getNdim())
        result.size = np.int32(self.vglShape.getSize())

        for i in range(0, vc.VGL_MAX_DIM() + 1):
            result.shape[i] = np.int32(shape.shape[i])
            result.offset[i] = np.int32(shape.offset[i])

        for i in range(0, size):
            result.data[i] = np.int32(self.data[i])

        return result
Exemple #6
0
    def asVglClShape(self):

        result = VglClShape()
        result.ndim = np.int32(self.ndim)
        result.size = np.int32(self.size)

        for i in range(0, vc.VGL_MAX_DIM() + 1):
            result.shape[i] = np.int32(self.shape[i])
            result.offset[i] = np.int32(self.offset[i])

        if (self.ndim == 1):
            result.shape[vc.VGL_SHAPE_WIDTH()] = np.int32(self.getWidth())
            result.offset[vc.VGL_SHAPE_WIDTH()] = np.int32(
                result.shape[vc.VGL_SHAPE_WIDTH() - 1] *
                result.offset[vc.VGL_SHAPE_WIDTH() - 1])
            result.shape[vc.VGL_SHAPE_HEIGHT()] = np.int32(self.getHeight())
            result.offset[vc.VGL_SHAPE_HEIGHT()] = np.int32(
                result.shape[vc.VGL_SHAPE_HEIGHT() - 1] *
                result.offset[vc.VGL_SHAPE_HEIGHT() - 1])

        return result
Exemple #7
0
    def constructorFromTypeNdim(self, Type, ndim):
        shape = np.zeros(vc.VGL_MAX_DIM(), np.int32)
        shape[0] = 1
        shape[2] = 1

        for i in range(1, ndim + 1):  # ndim+1 cuz in c++ is for i <= ndim
            shape[i] = 3

        vglShape = VglShape()
        vglShape.constructorFromShapeNdimBps(shape, ndim)

        size = vglShape.getSize()
        data = np.zeros((size), np.float32)
        index = 0

        if (Type == vc.VGL_STREL_CROSS()):
            coord = np.zeros((vc.VGL_ARR_SHAPE_SIZE()), np.int32)

            for i in range(0, size):
                data[i] = np.float32(0.0)

            for d in range(1, ndim + 1):
                coord[d] = np.int32(1)

            index = vglShape.getIndexFromCoord(coord)
            data[index] = np.float32(1.0)

            for d in range(1, ndim + 1):
                coord[d] = np.int32(0)
                index = vglShape.getIndexFromCoord(coord)
                data[index] = np.float32(1.0)

                coord[d] = np.int32(2)
                index = vglShape.getIndexFromCoord(coord)
                data[index] = np.float32(1.0)

                coord[d] = 1

        elif (Type == vc.VGL_STREL_GAUSS()):
            coord = np.zeros((vc.VGL_ARR_SHAPE_SIZE()), np.int32)
            coord[0] = np.int32(0)
            size = vglShape.getSize()

            for i in range(0, size):
                val = np.float32(1.0)
                vglShape.getCoordFromIndex(i, coord)

                for d in range(1, ndim + 1):
                    if (coord[d] == 1):
                        val = val * np.float32(0.5)
                    else:
                        val = val * np.float32(0.25)

                data[i] = val

        elif (Type == vc.VGL_STREL_MEAN()):
            for i in range(0, size):
                data[i] = 1.0 / size

        elif (Type == vc.VGL_STREL_CUBE()):
            for i in range(0, size):
                data[i] = 1.0
        else:
            for i in range(0, size):
                data[i] = 1.0

        self.constructorFromDataVglShape(data, vglShape)