Initial commit with project files
This commit is contained in:
60
3_Signalorientierte_Bildverarbeitung/ü6/l_a.py
Normal file
60
3_Signalorientierte_Bildverarbeitung/ü6/l_a.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
normal = cv2.imread("../../data/lena.png", cv2.IMREAD_GRAYSCALE)
|
||||
|
||||
|
||||
def valid_rows(N):
|
||||
n = np.log2(N)
|
||||
n = np.ceil(n)
|
||||
N = np.power(2, n)
|
||||
return N
|
||||
|
||||
|
||||
def create_H(m, N):
|
||||
"""
|
||||
m: Columns
|
||||
n: Rows
|
||||
"""
|
||||
H = np.zeros((int(N), int(m)))
|
||||
for i in range(1, int(N) + 1):
|
||||
for j in range(1, int(m) + 1):
|
||||
if i <= (N/2):
|
||||
if j == (2*i -1) or j == 2*i:
|
||||
H[i-1,j-1] = 1 / np.sqrt(2)
|
||||
else:
|
||||
#print(j, i)
|
||||
if j == (2 * (i - N/2) - 1):
|
||||
H[i-1,j-1] = 1 / np.sqrt(2)
|
||||
elif j == (2 * (i - N/2)):
|
||||
H[i-1,j-1] = -1 / np.sqrt(2)
|
||||
return H
|
||||
|
||||
''' Reshape to valid resolution '''
|
||||
N, m = normal.shape
|
||||
new_N = valid_rows(N)
|
||||
print("Original Resolution:", m, "x", N)
|
||||
print("New Resolution:", m, "x", new_N)
|
||||
if N != new_N:
|
||||
_ = np.zeros((new_N, m))
|
||||
_[:N, :m] = normal
|
||||
normal = _
|
||||
|
||||
''' Get Haar-Matrix '''
|
||||
H = create_H(m, new_N)
|
||||
print(H[0:5, 0:5])
|
||||
print(H[256:261, 0:5])
|
||||
|
||||
''' Filter with HxI'''
|
||||
haar = np.matmul(H, normal)
|
||||
|
||||
''' Invert Filter '''
|
||||
haar_inv = np.matmul(np.transpose(H), haar)
|
||||
|
||||
''' Show images '''
|
||||
cv2.imshow("normal", normal)
|
||||
cv2.imshow("haar", haar / 255)
|
||||
cv2.imshow("haar_inv", haar_inv / 255)
|
||||
print("Difference:", np.sum(np.abs(normal-haar_inv)))
|
||||
|
||||
cv2.waitKey()
|
||||
Reference in New Issue
Block a user