Я пытаюсь реализовать преобразование DCT типа 2 согласно [этой ссылке] [1], но при сравнении моего результата применения метода в предварительном PDF с opencv dct полученные массивы не равны:
здесьмой код:
import numpy as np
import cv2
import math
DCT = np.zeros((32,32))
N=32
for i in range(0,32):
for j in range (0,32):
if i==0:
DCT[i,j]=np.sqrt(1/N)
else:
DCT[i,j]=np.sqrt(2/N)*math.cos((((2*j)+1)*(i*math.pi))/(2*N))
im = cv2.imread("/home/ojj/PycharmProjects/graduatingProject/org/4k-wallpaper-architecture-bird-s-eye-view-1482778.jpg")
image = cv2.resize(im, (32, 32))
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
h, w = image_gray.shape[:2]
vis = np.zeros((h,w), np.float32)
vis[:h,:w]=image_gray
manual = vis-128
phase_1=np.dot(DCT,manual)
phase_2=phase_1*DCT.T
print(np.array_equal(phase_2, cv2.dct(vis)))
что не так?как это исправить пожалуйста?
[1]: https://www.math.cuhk.edu.hk/~lmlui/dct.pdf