Python реализовал Dct и OpenCV дают разные результаты - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь реализовать преобразование 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
...