Le programme de téléchargement d'origine a été déplacé de Los Hawlos sur Wikipedia allemand vers Commons depuis de.wikipedia. , CC View-Inheritance 3.0, par https://commons.wikimedia.org/w/index.php?curid=1966500
Peux-tu le voir? En déplaçant la focalisation des yeux d'avant en arrière, des images et des lettres émergent (en trois dimensions). Je suis désolé pour ceux qui regardent depuis un smartphone. Regardez de votre ordinateur.
Je veux faire ça moi-même.
Il y avait un exemple d'implémentation en Python sur le site suivant, j'ai donc créé un stéréogramme original à points aléatoires en y faisant référence.
import numpy as np
import matplotlib.pyplot as plt
import cv2
J'ai expérimenté le format Notebook et utilisé le familier matplotlib
pour afficher des images, mais tout va bien tant que vous pouvez voir les images.
def make_pattern(shape=(16, 16)):
return np.random.uniform(0, 1, shape)
Essayez de l'exécuter.
pattern = make_pattern((400,400))
plt.imshow(pattern, cmap='gray')
Quelque chose est déjà sur le point d'émerger.
def make_depthmap(shape=(400, 600)):
depthmap = np.zeros(shape, dtype=np.float)
cv2.circle(depthmap, (int(shape[1]/2), int(shape[0]/2)), 100, (255 ,255, 255), -1)
return depthmap
Essayez de l'exécuter.
depthmap = make_depthmap()
plt.imshow(depthmap, cmap='gray')
Celui-ci devrait venir au premier plan.
def make_autostereogram(depthmap, pattern, shift_amplitude=0.1, invert=False):
"Creates an autostereogram from depthmap and pattern."
depthmap = normalize(depthmap)
if invert:
depthmap = 1 - depthmap
autostereogram = np.zeros_like(depthmap, dtype=pattern.dtype)
for r in np.arange(autostereogram.shape[0]):
for c in np.arange(autostereogram.shape[1]):
if c < pattern.shape[1]:
autostereogram[r, c] = pattern[r % pattern.shape[0], c]
else:
shift = int(depthmap[r, c] * shift_amplitude * pattern.shape[1])
autostereogram[r, c] = autostereogram[r, c - pattern.shape[1] + shift]
return autostereogram
def normalize(depthmap):
return depthmap/255
Le traitement principal est cité à partir du site de référence mentionné au début. Essayez de l'exécuter.
autostereogram = make_autostereogram(depthmap, pattern, 0.3)
plt.imshow(autostereogram, cmap='gray')
** Un cercle est clairement visible. ** ** (La marque circulaire semble être bosselée dans la méthode de croisement, ce qui rapproche la focalisation des yeux.)
J'ai essayé de faire du texte un stéréogramme à points aléatoires.
def make_text_depthmap(shape=(400, 600), text='Q i i t a'):
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(depthmap, text, (50, 250), font, 4, (255,255,255), 12, cv2.LINE_AA)
return depthmap
Quelque chose qui émerge.
depthmap_text = make_text_depthmap()
plt.imshow(depthmap, cmap='gray')
Essayez de l'exécuter.
autostereogram = make_autostereogram(depthmap_text, pattern, 0.05)
plt.imshow(autostereogram, cmap='gray')
C'est un peu vague que le cercle, mais vous pouvez le voir.
Sur quoi est-il écrit? ?? Le texte.
Les réponses sont les bienvenues dans les commentaires ^^
J'ai écrit une suite.
J'ai écrit une suite.
Recommended Posts