예제 #1
0
def HM_Color_C(path):
    img = cv.imread(path, cv.IMREAD_COLOR)
    S_T = time.time()
    b, g, r = cv.split(img)

    xb = list(b.ravel())
    xg = list(g.ravel())
    xr = list(r.ravel())

    # hist = np.bincount(im.ravel(), minlength=256)
    freq_B, HMcode_B, Treenode_B = HM_image.Coding(xb)
    freq_G, HMcode_G, Treenode_G = HM_image.Coding(xg)
    freq_R, HMcode_R, Treenode_R = HM_image.Coding(xr)
    height = img.shape[0]
    width = img.shape[1]
    input_bits = img.shape[0] * img.shape[1] * 8 * 3

    summ = HM_image.Sum_Bit(freq_B, HMcode_B) + HM_image.Sum_Bit(freq_G, HMcode_G) + HM_image.Sum_Bit(freq_R, HMcode_R)

    print("Number of bits required to represent the data before compression:", input_bits)
    print("Number of bits required to represent the data after compression by Huffman coding:", summ)
    ratio = (input_bits / summ)
    print("Compression ratio: ", ratio)
    # Write_to_file(xg, h, 'texttttt')
    filename = HM_image.filename_from_path(path)
    filename_compress = os.getcwd() + '/compressed_file_HM/compressed_file_' + filename
    HM_image.Write_to_file(xb, HMcode_B, filename_compress + '_B')
    HM_image.Write_to_file(xg, HMcode_G, filename_compress + '_G')
    HM_image.Write_to_file(xr, HMcode_R, filename_compress + '_R')
    E_T = time.time()
    time_elapsed = (E_T - S_T)
    print("DONE COMPRESSS\n\n\n")
    return time_elapsed, ratio, Treenode_B, Treenode_G, Treenode_R, height, width, filename_compress
예제 #2
0
def HM_compress_for_GRAY_image(path):
    img = cv.imread(path, cv.IMREAD_GRAYSCALE)
    list_data_of_img = list(img.ravel())
    start_time = time.time()
    # Histogram
    freq, huffmancode, treeHM = HM_image.Coding(list_data_of_img)
    height = img.shape[0]
    width = img.shape[1]
    input_bits = width * height * 8
    summ = HM_image.Sum_Bit(freq, huffmancode)
    print("Number of bits required to represent the data before compression:",
          input_bits)
    print("Number of bits required to represent the data after compression:",
          summ)
    ratio = (input_bits / summ)
    print("Compression ratio: ", ratio)
    print("WRITE DATA TO FILE")
    filename = HM_image.filename_from_path(path)
    print("File compress will save at folder .\compress_file_HM\\%s" %
          filename)
    filename_compress = os.getcwd(
    ) + '/compressed_file_HM/compressed_file_' + filename
    HM_image.Write_to_file(list_data_of_img, huffmancode, filename_compress)
    print("DONE COMPRESSS")
    end_time = time.time()
    time_es = (end_time - start_time) * 1000
    return time_es, ratio, treeHM, height, width, filename_compress