def main(): res = open("results.csv", "a") res.write( "BlockSize,k,Alpha,ClusteringTime,MiningTime,EncodingTime,CompressionTime,DecompressionTime,ClusterTableSize,CodeTableSize,EncodedImageSize,CompressedSize,ActualSize,JPEG Size,GIF Size,JPEG Cr,GIF Cr,Our Cr,CRP Actual,CRP JPEG,CRP GIF,PSNR,MSE,NormalisedCrossRelation,MaxDiff,AvgDiff,NormalisedAbsoluteError,StructuralContent\n" ) global blockSize, numberOfClusters, s, rows, columns, numberOfBlocks, minimumSupport for blockSize in doubling_range(32, 257): for numberOfClusters in range(8, 33, 8): for s in range(10, 50, 20): inputFileName = "4.2.02.tiff" outputFileName = str(blockSize) + "-" + str( numberOfClusters) + "-" + str(s) # res = open("s_results.csv", "a") image = imread(inputFileName) (rows, columns) = getImageSize(inputFileName) print str(blockSize) + "-" + str(numberOfClusters) + "-" + str( s) minimumSupport = (s * rows) / 100.0 numberOfBlocks = (rows * columns) / (blockSize * blockSize) oTS = time.time() cTS = time.time() runAllClusteringParallel() cTE = time.time() print "Clustering done" clusteringTime = cTE - cTS runClusterEncodingParallel() print "Cluster Encoding Done" mTS = time.time() minerParallel() mTE = time.time() print "Mining Done" mineTime = mTE - mTS huffEncodeParallel() print "Huffman Encoding Done" coTS = time.time() Compressor() coTE = time.time() print "Encoding Done" compressTime = coTE - coTS oTE = time.time() totalCompressionTime = oTE - oTS print "Compression Done" dTS = time.time() Decoder() print "Decoding Done" runClusterDecodingInParallel() dTE = time.time() decompressionTime = dTE - dTS print "Decompression Done" reconstruct(rows, columns, outputFileName) ClTableSize = (3 * numberOfBlocks * (nob(numberOfClusters) + 8) * numberOfClusters) / 8000.0 coTableSize = os.stat("redCodetable.txt").st_size + os.stat( "greenCodetable.txt").st_size + os.stat( "blueCodetable.txt").st_size coTableSize = ((coTableSize / (6 * 1.0))) / 1000.0 compressedImageSize = os.stat( "redCompressed.txt").st_size + os.stat( "greenCompressed.txt").st_size + os.stat( "blueCompressed.txt").st_size compressedImageSize = ( (compressedImageSize / 8 * 1.0)) / 1000.0 - 40 totalSize = ClTableSize + coTableSize + compressedImageSize # Image Quality Measures output = cv2.imread(outputFileName + ".bmp", 1).astype(float) input = cv2.imread(inputFileName).astype(float) # declare variable for each image quality measurement and assign it to zero mse = 0 norm_cor = 0 max_diff = 0 avg_diff = 0 nor_abs_error = 0 str_con = 0 psnr = 0 for i in range(0, 3): psnr += iq.PSNR(input[i], output[i]) mse += iq.mean_square_error(input[i], output[i]) norm_cor += iq.normalised_cross_relation( input[i], output[i]) max_diff += iq.maximal_difference(input[i], output[i]) avg_diff += iq.average_difference(input[i], output[i]) nor_abs_error += iq.normalised_absolute_error( input[i], output[i]) str_con += iq.structural_content(input[i], output[i]) mse /= 3 norm_cor /= 3 max_diff /= 3 avg_diff /= 3 nor_abs_error = 3 str_con /= 3 psnr /= 3 ActualSize = 786.6 JPEGSize = 404 GIFSize = 226 OurCr = ActualSize / totalSize JPEGCr = ActualSize / JPEGSize GIFCr = ActualSize / GIFSize CRPActual = ((ActualSize - totalSize) * 100) / ActualSize CRPJPEG = ((JPEGSize - totalSize) * 100) / JPEGSize CRPGIF = ((GIFSize - totalSize) * 100) / GIFSize res.write( str(blockSize) + "," + str(numberOfClusters) + "," + str(s) + "," + str(clusteringTime) + "," + str(mineTime) + "," + str(compressTime) + "," + str(totalCompressionTime) + "," + str(decompressionTime) + "," + str(ClTableSize) + "," + str(coTableSize) + "," + str(compressedImageSize) + "," + str(totalSize) + "," + str(ActualSize) + "," + str(JPEGSize) + "," + str(GIFSize) + "," + str(JPEGCr) + "," + str(GIFCr) + "," + str(OurCr) + "," + str(CRPActual) + "," + str(CRPJPEG) + "," + str(CRPGIF) + "," + str(psnr) + "," + str(mse) + "," + str(norm_cor) + "," + str(max_diff) + "," + str(avg_diff) + "," + str(nor_abs_error) + "," + str(str_con) + "\n") filelist = [f for f in os.listdir(".") if f.endswith(".txt")] for f in filelist: os.remove(f) res.close()
def ss(): res = open("image_quality.csv", "w") tiff_ex = ["airplane", "zelda", "scene"] tif_ex = ["baboon", "lena"] jpg_ex = ["barbara", "high_parrot", "high_tiger", "medical", "medical2"] for inputFileName in tiff_ex: conv = inputFileName res.write(conv + "\n") orig = "../../data/" + conv + ".tiff" for blockSize in doubling_range(32, 257): for numberOfClusters in range(8, 33, 4): for s in range(10, 51, 20): inputFileName = "../../results/new/" + conv + "/" + conv + ".tiff_" + str( blockSize) + "-" + str(numberOfClusters) + "-" + str( s) + ".bmp" input = cv2.imread(orig) output = cv2.imread(inputFileName) input = input.astype(float) print inputFileName output = output.astype(float) result = 0 for i in range(0, 3): result += iq.normalised_absolute_error( input[:, :, i], output[:, :, i]) result /= 3 res.write(str(result)) res.write("\n") res.write("\n\n\n") for inputFileName in tif_ex: conv = inputFileName res.write(conv + "\n") orig = "../../data/" + conv + ".tif" for blockSize in doubling_range(32, 257): for numberOfClusters in range(8, 33, 4): for s in range(10, 51, 20): inputFileName = "../../results/new/" + conv + "/" + conv + ".tif_" + str( blockSize) + "-" + str(numberOfClusters) + "-" + str( s) + ".bmp" input = cv2.imread(orig) output = cv2.imread(inputFileName) input = input.astype(float) print inputFileName output = output.astype(float) result = 0 for i in range(0, 3): result += iq.normalised_absolute_error( input[:, :, i], output[:, :, i]) result /= 3 res.write(str(result)) res.write("\n") res.write("\n\n\n") for inputFileName in jpg_ex: conv = inputFileName res.write(conv + "\n") orig = "../../data/" + conv + ".jpg" for blockSize in doubling_range(32, 257): for numberOfClusters in range(8, 33, 4): for s in range(10, 51, 20): inputFileName = "../../results/new/" + conv + "/" + conv + ".jpg_" + str( blockSize) + "-" + str(numberOfClusters) + "-" + str( s) + ".bmp" input = cv2.imread(orig) output = cv2.imread(inputFileName) input = input.astype(float) print inputFileName output = output.astype(float) result = 0 for i in range(0, 3): result += iq.normalised_absolute_error( input[:, :, i], output[:, :, i]) result /= 3 res.write(str(result)) res.write("\n") res.write("\n\n\n") res.close()