Créez votre propre stéréogramme aléatoire (RDS) en Python.

Stéréogramme à points aléatoires (RDS)

Mh_stereogramm_sirds.png 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.

Quoi utiliser

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.

procédure

1. Créez un motif aléatoire

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')

pattern.png

Quelque chose est déjà sur le point d'émerger.

2. Créez un motif qui émerge

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')

depthmap.png Celui-ci devrait venir au premier plan.

3. Je l'ai essayé


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')

autostereogram.png

** 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.)

Parce que c'est un gros problème

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')

depthmap_qiita.png Essayez de l'exécuter.


autostereogram = make_autostereogram(depthmap_text, pattern, 0.05)
plt.imshow(autostereogram, cmap='gray')

autostereogram_text.png C'est un peu vague que le cercle, mais vous pouvez le voir.

Quiz pour les ingénieurs

Sur quoi est-il écrit? ?? Le texte. autostereogram_quiz.png

Les réponses sont les bienvenues dans les commentaires ^^

Postscript

J'ai écrit une suite.

J'ai écrit une suite.

Recommended Posts

Créez votre propre stéréogramme aléatoire (RDS) en Python.
Créez vos propres commandes Linux en Python
[LLDB] Créez votre propre commande avec Python
Créez votre propre Big Data en Python pour validation
À la recherche du meilleur stéréogramme à points aléatoires (RDS).
[Python] journalisation dans votre propre module
Créer une chaîne aléatoire en Python
Utilisez facilement vos propres fonctions en Python
Créez votre propre classe de structure graphique et son dessin avec python
Obtenez votre propre adresse IP en Python
Importez vos propres modules avec le développement Python de Grasshopper
Créez votre propre exception
Créer Spatia Lite en Python
Marche aléatoire en Python
Essayez d'améliorer votre propre quiz d'introduction avec Python
[Blender x Python] Créez votre propre fonction et résumé jusqu'à présent
Utilisez CASA Toolkit dans votre propre environnement Python
Créez votre premier fichier GDSII en Python en utilisant gdspy
[Road to Intermediate Python] Définissez dans votre propre classe
Forêt aléatoire équilibrée en python
Créer une fonction en Python
Créer un dictionnaire en Python
Utiliser Random Forest avec Python
Créez votre propre middleware Django
Choix aléatoire pondéré en python
Essayez de trier vos propres objets avec des files d'attente prioritaires en Python
Créez un stéréogramme de points aléatoires (RDS) original à partir de photos 2D avec estimation de la profondeur par apprentissage automatique
[Python] Traitement aléatoire (créer, sélectionner, trier)
[Python] Créez votre propre bot LINE
Tester avec des nombres aléatoires en Python
Créer un conteneur DI avec Python
Créer un fichier binaire en Python
Essayez docker: créez votre propre image de conteneur pour une application Web Python
Créez Gmail en Python sans utiliser l'API
Créez votre propre service de résolution de noms
[Django] Créez votre propre page d'erreur 403, 404, 500
Créer une documentation de projet Python dans Sphinx
Créer et lire des paquets de messages en Python
Créez vous-même le tracé familier du flux de rayons X sur 3 jours de NOAA / GOES avec Python
Créez votre propre caméra virtuelle avec Python + OpenCV et appliquez des effets originaux
Créez wordcloud à partir de votre tweet avec python3
Créer ScriptableObject en Python lors de la construction d'ADX2
Créez votre propre serveur DNS avec Twisted
Créez un environnement python sur votre Mac
[Python] Empaquetez et distribuez vos propres modules
Créer une application GUI simple en Python
Créez votre propre valeur composite avec SQLAlchemy
Créer des pièces de concepteur Qt avec Python (PyQt)
[Python] Enregistrez votre propre bibliothèque dans PyPI
Jusqu'à ce que vous installiez votre propre bibliothèque Python
[GPS] Créer un fichier kml avec Python
Publiez votre propre bibliothèque Python sur Homebrew
Classification des maladies par Random Forest en utilisant Python
Essayez de fouiller votre journal avec Python
[Python] Classification des maladies dans une forêt aléatoire-avec LDA-
Créez un environnement de test Vim + Python en 1 minute