コード例 #1
0
    def test_ocrtShahedWithDataset(self):
        rgbImages = self.datasetUtils.loadArri()
        cfaImages, image_size = self.datasetUtils.convertDatasetToCFA(rgbImages)
        psnrs = []
        ssims = []
        jpeg2000CompressionRatioAfters = []
        JpegLsCompressionRatios = []
        compressionRatioLZWs = []
        compressionRatiojpeg2000LossyAfters = []

        # filtered = (filtered + 128)
        # filtered[:, 1::2] = filtered[:, 1::2] / 2 + 128

        def inverseFunction(data):
            data = data.astype('float32') * 2 - 256

            data = compute_orct1inverse(data, precisionFloatingPoint=self.precisionFloatingPoint)
            return data

        sampleFunctionReverse = inverseFunction

        for bayer in cfaImages:
            bayer = bayer.astype("float32")

            filtered = compute_orct2(compute_orct1(bayer, precisionFloatingPoint=self.precisionFloatingPoint), precisionFloatingPoint=self.precisionFloatingPoint)
            test_sample = filtered
            filtered = (filtered + 256) / 2

            psnr, ssim, jpeg2000CompressionRatioAfter, JpegLsCompressionRatio, compressionRatioLZWAfter, compressionRatiojpeg2000LossyAfter = self.evaluation.evaluate(filtered, bayer,
                                                                                                                                                                       sampleFunctionReverse,
                                                                                                                                                                       precisionFloatingPoint=self.precisionFloatingPoint)

            psnrs.append(psnr)
            ssims.append(ssim)
            jpeg2000CompressionRatioAfters.append(jpeg2000CompressionRatioAfter)
            JpegLsCompressionRatios.append(JpegLsCompressionRatio)
            compressionRatioLZWs.append(compressionRatioLZWAfter)
            compressionRatiojpeg2000LossyAfters.append(compressionRatiojpeg2000LossyAfter)
        pd.DataFrame({"psnr": psnrs, "ssim": ssims, "jpeg200CompressionRatio (bpp)": jpeg2000CompressionRatioAfters,
                      "JpegLsCompressionRatio": JpegLsCompressionRatios,
                      "compressionRatioLZW": compressionRatioLZWs,
                      "compressionRatiojpeg2000Lossy": compressionRatiojpeg2000LossyAfters}).to_excel("resultsShahedMethod.xlsx")
コード例 #2
0
    def opt_func(self, X, twoComplement):
        n_particles = X.shape[0]  # number of particles
        costs = []
        for x in X:
            x = np.reshape(x, [2, 2])
            filtered = compute_orct2(compute_orct1(twoComplement, x), x)
            filtered = (filtered + 255) / 2

            def inverseFunction(data):
                data = data.astype('float32') * 2 - 255
                data = compute_orct2inverse(data, x)
                data = compute_orct1inverse(data, x)
                return data

            sampleFunctionReverse = inverseFunction
            psnr, ssim, jpeg2000CompressionRatioAfter, jpeg2000CompressionRatioBefore = self.evaluation.evaluate(
                filtered, twoComplement, sampleFunctionReverse)
            cost = np.abs(
                (1 / psnr) * (1 / ssim) * 1 / (jpeg2000CompressionRatioAfter))
            costs.append(cost)
        return np.array(costs)
コード例 #3
0
    def _evaluate(self, X, out, *args, **kwargs):
        n_particles = X.shape[0]  # number of particles
        psnrs = []
        ssims = []
        jpeg200compressions = []
        for x in X:
            x = np.reshape(x, [2, 2])
            filtered = compute_orct2(compute_orct1(self.twoComplement, x), x)
            filtered = (filtered + 255) / 2

            def inverseFunction(data):
                data = data.astype('float32') * 2 - 255
                data = compute_orct2inverse(data, x)
                data = compute_orct1inverse(data, x)
                return data

            sampleFunctionReverse = inverseFunction
            try:
                psnr, ssim, jpeg2000CompressionRatioAfter, jpeg2000CompressionRatioBefore = self.evaluation.evaluate(
                    filtered,
                    self.twoComplement,
                    sampleFunctionReverse,
                    verbose=False)
            except:
                psnr = 1
                ssim = .1
                jpeg2000CompressionRatioAfter = 1
                jpeg2000CompressionRatioBefore = 1.001
            psnrs.append(1 / psnr)
            ssims.append(1 / ssim)
            CR = jpeg2000CompressionRatioAfter - jpeg2000CompressionRatioBefore
            if CR < 0:
                CR = 0.001
            jpeg200compressions.append(1 / CR)

        out["F"] = np.column_stack([psnrs, ssims, jpeg200compressions])
        out["G"] = np.column_stack(
            [-1 * np.asarray(psnrs), -1 * np.asarray(ssims)])
コード例 #4
0
    def test_orct12(self):
        bayer = self.datasetUtils.readCFAImages()

        bayer = bayer.astype("float64")

        orct1Res = compute_orct1(bayer, precisionFloatingPoint=self.precisionFloatingPoint)
        filtered = compute_orct2(orct1Res, precisionFloatingPoint=self.precisionFloatingPoint)
        # filtered = (filtered)/2

        filtered[filtered == 0] = -256
        filtered = (filtered + 256) / 2

        def inverseFunction(data):
            data = data.astype('float32')
            data = data * 2 - 256
            data[data == -256] = 0
            data = compute_orct2inverse(data, precisionFloatingPoint=self.precisionFloatingPoint)
            data = compute_orct1inverse(data, precisionFloatingPoint=self.precisionFloatingPoint)
            return data

        sampleFunctionReverse = inverseFunction
        self.evaluation.evaluate(filtered, bayer, sampleFunctionReverse, precisionFloatingPoint=self.precisionFloatingPoint)
        pass
コード例 #5
0
    def test_ocrtOptimizedWithDataset(self):
        pos = np.asarray([0.39182592, 0.23747258, 0.51497874, -0.08751142])
        x = np.reshape(pos, [2, 2])
        rgbImages = self.datasetUtils.loadKodakDataset()
        cfaImages, image_size = self.datasetUtils.convertDatasetToCFA(
            rgbImages)
        bayer = cfaImages[2, :, :]

        twoComplement = self.datasetUtils.twoComplementMatrix(bayer)
        twoComplement = twoComplement.astype("float32")

        filtered = compute_orct2plus3(compute_orct1(twoComplement, x), x)

        filtered = (filtered + 255) / 2

        def inverseFunction(data):
            data = data.astype('float32') * 2 - 255
            data = compute_orct2plus3inverse(data, x)
            data = compute_orct1inverse(data, x)
            return data

        sampleFunctionReverse = inverseFunction
        self.evaluation.evaluate(filtered, bayer, sampleFunctionReverse)
        pass
コード例 #6
0
    def test_orct12_(self):
        pos = np.asarray([0.39182592, 0.23747258, 0.51497874, -0.08751142])
        x = np.reshape(pos, [2, 2])
        # x = np.asarray([[0.05011018, -0.53709484],
        #                 [-1.1104253, -0.30699651]])
        bayer = self.datasetUtils.readCFAImages()

        twoComplement = self.datasetUtils.twoComplementMatrix(bayer)
        twoComplement = twoComplement.astype("float32")

        filtered = compute_orct2(compute_orct1(twoComplement, x), x)

        filtered = (filtered + 255) / 2

        def inverseFunction(data):
            data = data.astype('float32') * 2 - 255
            data = compute_orct2inverse(data, x)
            data = compute_orct1inverse(data, x)
            return data

        sampleFunctionReverse = inverseFunction
        self.evaluation.evaluate(filtered, twoComplement,
                                 sampleFunctionReverse)
        pass
コード例 #7
0
 def test_orct1(self):
     bayer = cv2.imread("../Data/image.bmp")
     bayer = np.sum(bayer, axis=2).astype('float64')
     orct1Filtered = compute_orct1(bayer, precisionFloatingPoint=self.precisionFloatingPoint)
     pass
コード例 #8
0
    def test_ocrtNewMethodWithDataset(self):
        psnrs = []
        ssims = []
        jpeg2000CompressionRatioAfters = []
        JpegLsCompressionRatiosAfters = []
        compressionRatioLZWsAfters = []
        jpeg2000CompressionRatioBefores = []
        JpegLsCompressionRatiosBefores = []
        compressionRatioLZWsBefores = []
        datasetName = []
        nameOfdatasets = ["Akademie", "Arri exterior", "Color test chart", "Face", "Kodak", "Lake locked", "Lake pan", "Night Odeplatz", "Nikon D40", "Nikon D90", "Nikon D7000", "Siegestor",
                          "Pool interior"]
        for nameOfdataset in nameOfdatasets:
            print(nameOfdataset)
            if nameOfdataset in ["Kodak", "Nikon D90", "Nikon D7000", "Nikon D40"]:
                self.precisionFloatingPoint = 0
                bias = 256
            else:
                self.precisionFloatingPoint = 4
                bias = 65536
            rgbImages = self.datasetUtils.loadOtherDataset(nameOfdataset)
            cfaImages, image_size = self.datasetUtils.convertDatasetToCFA(rgbImages)

            def inverseFunction(data):
                data = data.astype('float32')
                data = data * 2 - bias
                data = compute_orct2plus3inverse(data, precisionFloatingPoint=self.precisionFloatingPoint)
                data = compute_orct1inverseV2(data, precisionFloatingPoint=self.precisionFloatingPoint)
                return np.round(data)

            sampleFunctionReverse = inverseFunction

            for bayer in cfaImages:
                bayer = bayer.astype("float32")

                filtered = compute_orct2plus3(compute_orct1(bayer, precisionFloatingPoint=self.precisionFloatingPoint), precisionFloatingPoint=self.precisionFloatingPoint)
                test_sample = filtered
                filtered = (filtered + bias) / 2
                filtered = np.ceil(filtered-np.min(filtered))

                psnr, ssim, jpeg2000CompressionRatioAfter, JpegLsCompressionRatioAfter, compressionRatioLZWAfter, jpeg2000CompressionRatioBefore, JpegLsCompressionRatioBefore, compressionRatioLZWBefore = self.evaluation.evaluate(
                    filtered, bayer,
                    sampleFunctionReverse,
                    precisionFloatingPoint=self.precisionFloatingPoint,
                    roundingMethod="ceil")
                datasetName.append(nameOfdataset)
                psnrs.append(psnr)
                ssims.append(ssim)
                jpeg2000CompressionRatioAfters.append(jpeg2000CompressionRatioAfter)
                JpegLsCompressionRatiosAfters.append(JpegLsCompressionRatioAfter)
                compressionRatioLZWsAfters.append(compressionRatioLZWAfter)
                jpeg2000CompressionRatioBefores.append(jpeg2000CompressionRatioBefore)
                JpegLsCompressionRatiosBefores.append(JpegLsCompressionRatioBefore)
                compressionRatioLZWsBefores.append(compressionRatioLZWBefore)

        pd.DataFrame({"Image set name": datasetName,
                      "psnr": psnrs,
                      "ssim": ssims,
                      "jpeg200-LS After": jpeg2000CompressionRatioAfters,
                      "jpeg-Ls After": JpegLsCompressionRatiosAfters,
                      "LZW After": compressionRatioLZWsAfters,
                      "jpeg200-LS Before": jpeg2000CompressionRatioBefores,
                      "jpeg-Ls Before": JpegLsCompressionRatiosBefores,
                      "LZW Before": compressionRatioLZWsBefores}).to_excel("resultsAll2.xlsx")