3
votes

Comment lire une image avec PyWavelets?

J'ai besoin d'utiliser pyWavelet, c'est-à-dire pywt pour lire mon image pour en faire des ondelettes, l'exemple ci-dessous utilisé pour charger uniquement l'image de la caméra, comment utiliser une autre image de mon chemin d'ordinateur?

import pywt
import pywt.data

# Load image
original = pywt.data.camera()


0 commentaires

5 Réponses :


0
votes

Je ne sais pas si vous pouvez lire une image simplement en utilisant pywt mais vous pouvez charger une image en utilisant OpenCV, puis la convertir en un format utilisable pour une utilisation avec pywt

import cv2
import numpy as np
import pywt

image = cv2.imread('1.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Convert to float for more resolution for use with pywt
image = np.float32(image)
image /= 255

# ...
# Do your processing
# ...

# Convert back to uint8 OpenCV format
image *= 255
image = np.uint8(image)

cv2.imshow('image', image)
cv2.waitKey(0)


0 commentaires

-1
votes

Vous pouvez essayer ce qui suit.

import numpy as np
import matplotlib.pyplot as plt
import pywt
import pywt.data
# Load image
original = pywt.data.camera()
# Wavelet transform of image, and plot approximation and details
titles = ['Approximation', ' Horizontal detail', 'Vertical detail', 'Diagonal detail']
coeffs2 = pywt.dwt2(original, 'bior1.3')
LL, (LH, HL, HH) = coeffs2
fig = plt.figure(figsize=(12, 3))
for i, a in enumerate([LL, LH, HL, HH]):
ax = fig.add_subplot(1, 4, i + 1)
ax.imshow(a, interpolation="nearest", cmap=plt.cm.gray)
ax.set_title(titles[i], fontsize=10)
ax.set_xticks([])
ax.set_yticks([])
fig.tight_layout()
plt.show()

Référence: https://pywavelets.readthedocs.io/en/latest/


1 commentaires

vous ne répondez pas vraiment à la question posée



0
votes

Une alternative à OpenCV est scikit-image.

import pywt
from skimage import io, color

data = io.imread(filename)

# Process your image
gray = color.rgb2gray(data)
coeffs = pywt.dwt2(gray, 'haar')

# Or... process each channel separately
r, g, b = [c.T for c in data.T]
cr = pywt.dwt2(r, 'haar')
cg = pywt.dwt2(r, 'haar')
cb = pywt.dwt2(r, 'haar')


# output: PIL, matplotlib, dump to file...


0 commentaires

0
votes

Vous pouvez utiliser matplotlib et numpy:

from matplotlib.image import imread
import numpy as np
import pywt
   
A = imread("1.jpg")
original = np.mean(A, -1)
#rest of your codes


0 commentaires

0
votes

J'ai utilisé des pandas pour lire l'image, parce que j'ai utilisé le jeu de données hm3.6 pour la prédiction de mouvement et appliqué la transformation en ondelettes comme prétraitement.

Mon code est simplement le suivant;

path = ".../your_path"
img = pd.read_csv(path + "h3.6m/dataset/S1/directions_1.txt") #read the image

#if you want to apply DWT you can continue with dataframe    
coeffs2 = dwt(image,  'bior1.3')
titles = ['Approximation', ' Horizontal detail',
              'Vertical detail', 'Diagonal detail']

LL, LH = coeffs2


0 commentaires