def FFIC(domain_chunks, range_chunks, inpface): ############################################################################ # encode the range image using svd encoding ############################################################################ # encode image start = time.time() codebook = encode_svd(domain_chunks, range_chunks, verbose=False) svd_encoding_time = time.time() - start # for svd only we implement compression by # dropping coefficients in the codebook codebook[:, COMPRESSION_FACTOR:] = 0 # Use an input face to use as input for the reconstruction domain_chunks = utils.Partition(inpface, mode=MODE) # initialize psnr psnr = np.zeros(10); # decode image 100 times start = time.time() reconstructed_chunks = decode_svd(codebook, domain_chunks) reconstructed_chunks_1 = copy.deepcopy(reconstructed_chunks) psnr[0] = PSNR(range_image, reconstructed_chunks.image) for i in range(9): rec_dim = rescale(reconstructed_chunks.image, 0.5) domain_chunks = utils.Partition(rec_dim, mode=MODE) reconstructed_chunks = decode_svd(codebook, domain_chunks) psnr[i+1] = PSNR(range_image, reconstructed_chunks.image) svd_decoding_time = time.time()-start # plot_image(reconstructed_chunks.image, # title=f"Reconstructed Image (SVD Encoding) \n {reconstructed_chunks.image.shape[0]}x{reconstructed_chunks.image.shape[0]}, {COMPRESSION_FACTOR}/{BLOCK_SIZE} Compression", # cmap='gray', y=0.97) ############################################################################ # encoding and decoding time results ############################################################################ print(f"svd mode encoding: {svd_encoding_time}") print(f"svd mode decoding: {svd_decoding_time}") ############################################################################ # psnr results ############################################################################ # psnr = PSNR(range_image, reconstructed_chunks.image) print(f"PSNR: {psnr} \t Coefficients Retained: {COMPRESSION_FACTOR}/{BLOCK_SIZE}") return psnr
aaronface = np.asarray(aaronface.getdata()).reshape(512, 512) aaronface = rescale(aaronface, 0.25) else: facedir = Path(__file__).resolve().parent.parent / "data" aaronface = Image.open(list(facedir.glob("mandrill.jpg"))[0]) aaronface = np.asarray(aaronface.getdata()).reshape(512, 512) aaronface = rescale(aaronface, 0.25) # aaronface = np.asarray(aaronface.getdata()).reshape(64,64) # aaronface = images.get_image(0, scale_factor=0.125/2) plot_image(aaronface, title=f"Domain Image {aaronface.shape[0]}x{aaronface.shape[1]}", cmap='gray') domain_chunks = utils.Partition(aaronface, mode=MODE) reconstructed_chunks = decode_svd(codebook, domain_chunks) # save_contractiveness_factors(domain_chunks, 1) for i in range(26): rec_dim = rescale(reconstructed_chunks.image, 0.5) domain_chunks = utils.Partition(rec_dim, mode=MODE) # save_contractiveness_factors(domain_chunks, i) reconstructed_chunks = decode_svd(codebook, domain_chunks) if i in [1, 5, 10, 20, 25]: plot_image( reconstructed_chunks.image, title= f"Reconstructed Image {i} iterations \n{reconstructed_chunks.\ image.shape[0]}x{reconstructed_chunks.image.shape[0]} ({MODE})", cmap='gray',