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")
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)
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)])
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
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
def test_orct2(self): bayer = cv2.imread("../Data/image.bmp") bayer = np.sum(bayer, axis=2).astype('float64') orct2Filtered = compute_orct2(bayer, precisionFloatingPoint=self.precisionFloatingPoint) pass