Ejemplo n.º 1
0
def inverse_dct_reduced_coeff(X, coeff):
    '''Return the inverse DCT with reduced Coeff'''
    mask = masking(coeff)
    block_size = (8, 8)
    masker = lambda X: np.multiply(X, mask)
    dct_recons = dip.block_process(X, masker, block_size)
    return dip.block_process(dct_recons, dip.idct_2d, block_size)
 def perform_idct(self, F):
     return np.asarray(dip.block_process(F, scifft.idctn, (self.bs, self.bs)), np.float64)
Ejemplo n.º 3
0
def dct(X):
    '''Compute 2-D DCT of 8x8 non-overlaping blocks'''
    block_size = (8, 8)
    return dip.block_process(X, dip.dct_2d, block_size)
Ejemplo n.º 4
0
def inverse_dct(X):
    '''Compute the inverse 2-D DCT of 8x8 non-overlapping blocks'''
    block_size = (8, 8)
    return dip.block_process(X, dip.idct_2d, block_size)
Ejemplo n.º 5
0
    im_vec)
row, col = im.shape
im_bit_rate = stream_length / (row * col)
# ===================!!!!! DO NOT EDIT THIS PART !!!!!=========================
print("Bit rate of the original image = {:.2f} bits/pixel".format(im_bit_rate))

# STEP 6: Subtract 127
# ============================ EDIT THIS PART =================================
# Change im to a float for computations
im = im.astype(float)
im = im - 127

# STEP 7: Block-wise DCT
block_size = (8, 8)
# ============================ EDIT THIS PART =================================
im_DCT = dip.block_process(im, dip.dct_2d, block_size)

# ===================!!!!! DO NOT EDIT THIS PART !!!!!=========================
dip.subplot(2, 2, 3)
dip.imshow(im_DCT, 'gray')
dip.title(
    "Block-wise DCT coefficients - Blocksize = {}x{}".format(*block_size))

# STEP 8: Quantization
c = 1
Q_table = dip.JPEG_Q_table_luminance
# ============================ EDIT THIS PART =================================
quantize = lambda x: x / (c * Q_table)
im_DCT_quantized = dip.block_process(im_DCT, quantize, block_size)
im_DCT_quantized = im_DCT_quantized.astype(int)
# ===================!!!!! DO NOT EDIT THIS PART !!!!!=========================