SHARE
TWEET

Haar

a guest Jun 20th, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import cv2
  2. from PIL import Image
  3. #...
  4. image = Image.open('tot.jpg').convert('L')
  5.  
  6. def pconv(data, CL, CH, delta = 0):
  7.  assert(len(CL) == len(CH)) # Размеры списков коэффициентов должны быть равны
  8.  N = len(CL)
  9.  M = len(data)
  10.  out = [] # Список с результатом, пока пустой
  11.  for k in range(0, M, 2): # Перебираем числа 0, 2, 4…
  12.  sL = 0 # Низкочастотный коэффициент
  13.  sH = 0 # Высокочастотный коэффициент
  14.  for i in range(N): # Находим сами взвешенные суммы
  15.  sL += data[(k + i - delta) % M] * CL[i]
  16.  sH += data[(k + i - delta) % M] * CH[i]
  17.  out.append(sL) # Добавляем коэффициенты в список
  18.  out.append(sH)
  19.  return out
  20.  
  21. from math import sqrt
  22. CL = [(1 + sqrt(3)) / (4 * sqrt(2)),
  23.  (3 + sqrt(3)) / (4 * sqrt(2)),
  24.  (3 - sqrt(3)) / (4 * sqrt(2)),
  25.  (1 - sqrt(3)) / (4 * sqrt(2))]
  26.  
  27. def hpf_coeffs(CL):
  28.  N = len(CL) # Количество коэффициентов
  29.  CH = [(-1)**k * CL[N - k - 1] # Коэффициенты в обратном порядке с чередованием знака
  30.  for k in range(N)]
  31.  return CH
  32.  
  33.  
  34. def dwt2(img, CL):
  35.  CH = hpf_coeffs(CL) # Вычисляем недостающие коэффициенты
  36.  w, h = image.size # Размеры изображения
  37.  imageT = image.copy() # Копируем исходное изображение для преобразования
  38.  for i in range(h): # Обрабатываем строки
  39.  imageT[i,= pconv(imageT[i,, CL, CH)
  40.  for i in range(w): # Обрабатываем столбцы
  41.  imageT[:, i] = pconv(imageT[:, i], CL, CH)
  42.  
  43.  # Переупорядочиваем столбцы и строки
  44.  data = imageT.copy()
  45.  data[0:h/2, 0:w/2] = imageT[0:h:2, 0:w:2]
  46.  data[h/2:h, 0:w/2] = imageT[1:h:2, 0:w:2]
  47.  data[0:h/2, w/2:w] = imageT[0:h:2, 1:w:2]
  48.  data[h/2:h, w/2:w] = imageT[1:h:2, 1:w:2]
  49.  
  50.  return data
  51. data2 = dwt2(image, CL)
  52. img.show()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top