Skip to content

Instantly share code, notes, and snippets.

@fifiteen82726
Created April 17, 2019 04:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fifiteen82726/afcf0450c12e80e747196ffc165af670 to your computer and use it in GitHub Desktop.
Save fifiteen82726/afcf0450c12e80e747196ffc165af670 to your computer and use it in GitHub Desktop.
import matplotlib.pyplot as plt
import numpy as np
origin_image = [
[70, 70, 100, 70, 87, 87, 150, 187],
[85, 100, 96, 79, 87, 154, 87, 113],
[100, 85, 116, 79, 70, 87, 86, 196],
[136, 69, 87, 200, 103, 71, 96, 113],
[161, 70, 87, 200, 113, 113, 85, 161],
[161, 123, 147, 133, 113, 113, 85, 161],
[146, 147, 175, 100, 103, 103, 163, 187],
[156, 146, 189, 70, 113, 161, 163, 197],
]
origin_image = np.array(origin_image, dtype=np.float64)
plt.imshow(origin_image, cmap='gray')
plt.show()
rows = 8
cols = 8
level1_row_haar_transform = np.zeros((rows, cols))
for i in xrange(rows):
for j in xrange(0, cols, 2):
average = (origin_image[i][j] + origin_image[i][j+1]) / 2.0
diff = (origin_image[i][j] - origin_image[i][j+1]) / 2.0
level1_row_haar_transform[i][j/2] = average
level1_row_haar_transform[i][j/2 + 4] = diff
# print level1_row_haar_transform
# plt.imshow(level1_row_haar_transform, cmap='gray')
# plt.show()
level1_cols_haar_transform = np.zeros((rows, cols))
for j in xrange(cols):
for i in xrange(0, rows, 2):
average = (level1_row_haar_transform[i][j] + level1_row_haar_transform[i+1][j]) / 2.0
diff = (level1_row_haar_transform[i][j] - level1_row_haar_transform[i+1][j]) / 2.0
level1_cols_haar_transform[i/2][j] = average
level1_cols_haar_transform[i/2 +4][j] = diff
print level1_cols_haar_transform
# plt.imshow(level1_cols_haar_transform, cmap='gray')
# plt.show()
rows = 4
cols = 4
level2_rows_t = np.zeros((rows, cols))
for i in xrange(rows):
for j in xrange(0, cols, 2):
avg = (level1_cols_haar_transform[i][j] + level1_cols_haar_transform[i][j+1]) / 2.0
diff = (level1_cols_haar_transform[i][j] - level1_cols_haar_transform[i][j+1]) / 2.0
level2_rows_t[i][j/2] = avg
level2_rows_t[i][j/2 + 2] = diff
print level2_rows_t
level2_cols_t = np.zeros((rows, cols))
for j in xrange(cols):
for i in xrange(0, rows, 2):
avg = (level2_rows_t[i][j] + level2_rows_t[i+1][j]) / 2.0
diff = (level2_rows_t[i][j] - level2_rows_t[i+1][j]) / 2.0
level2_cols_t[i/2][j] = avg
level2_cols_t[i/2 +2][j] = diff
print level2_cols_t
result = np.copy(level1_cols_haar_transform)
for i in xrange(4):
for j in xrange(4):
result[i][j] = level2_cols_t[i][j]
print result
plt.imshow(result, cmap='gray')
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment