Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.

Zufälliges Punktstereogramm (RDS)

Mh_stereogramm_sirds.png Der ursprüngliche Uploader wurde von Los Hawlos in der deutschen Wikipedia nach Commons von de.wikipedia verschoben. , CC View-Inheritance 3.0, von https://commons.wikimedia.org/w/index.php?curid=1966500

Können Sie es sehen? Durch Hin- und Herbewegen des Fokus der Augen entstehen Bilder und Buchstaben (dreidimensional aussehen). Es tut mir leid für diejenigen, die von einem Smartphone aus zuschauen. Schauen Sie von Ihrem Computer aus.

Ich möchte das selbst machen.

Auf der folgenden Site gab es ein Implementierungsbeispiel in Python, daher habe ich ein originales zufälliges Punktstereogramm erstellt, indem ich darauf Bezug genommen habe.

Was zu verwenden

import numpy as np
import matplotlib.pyplot as plt
import cv2

Ich habe mit dem Notebook-Format experimentiert und die bekannte "matplotlib" verwendet, um Bilder anzuzeigen, aber alles ist in Ordnung, solange Sie die Bilder sehen können.

Verfahren

1. Erstellen Sie ein zufälliges Muster

def make_pattern(shape=(16, 16)):
    return np.random.uniform(0, 1, shape)

Versuchen Sie es auszuführen.

pattern = make_pattern((400,400))
plt.imshow(pattern, cmap='gray')

pattern.png

Es ist schon etwas im Entstehen.

2. Erstellen Sie ein Muster, das entsteht

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

Versuchen Sie es auszuführen.

depthmap = make_depthmap()
plt.imshow(depthmap, cmap='gray')

depthmap.png Dieser sollte in den Vordergrund treten.

3. Ich habe es versucht


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

Die Hauptverarbeitung wird von der eingangs erwähnten Referenzstelle zitiert. Versuchen Sie es auszuführen.

autostereogram = make_autostereogram(depthmap, pattern, 0.3)
plt.imshow(autostereogram, cmap='gray')

autostereogram.png

** Ein Kreis ist deutlich sichtbar. ** ** ** (Die Kreismarkierung scheint bei der als Kreuzungsmethode bezeichneten Methode, bei der der Fokus der Augen näher gebracht wird, verbeult zu sein.)

Weil es eine große Sache ist

Ich habe versucht, den Text zu einem zufälligen Punktstereogramm zu machen.

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

Etwas, das auftaucht.

depthmap_text = make_text_depthmap()
plt.imshow(depthmap, cmap='gray')

depthmap_qiita.png Versuchen Sie es auszuführen.


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

autostereogram_text.png Es ist etwas vager als der Kreis, aber Sie können es sehen.

Quiz für Ingenieure

Worauf steht es geschrieben? ?? Der Text. autostereogram_quiz.png

Antworten sind in den Kommentaren willkommen ^^

Nachtrag

Ich habe eine Fortsetzung geschrieben.

Ich habe eine Fortsetzung geschrieben.

Recommended Posts

Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
Erstellen Sie Ihre eigenen Linux-Befehle in Python
[LLDB] Erstellen Sie Ihren eigenen Befehl mit Python
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Auf der Suche nach dem besten zufälligen Punktstereogramm (RDS).
[Python] Anmelden Ihres eigenen Moduls
Erstellen Sie eine zufällige Zeichenfolge in Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Holen Sie sich Ihre eigene IP-Adresse in Python
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Erstellen Sie Ihre eigene Ausnahme
Erstellen Sie Spatia Lite in Python
Zufälliger Spaziergang in Python
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
[Blender x Python] Erstellen Sie Ihre eigene Funktion und Zusammenfassung
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Erstellen Sie Ihre erste GDSII-Datei in Python mit gdspy
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Balanced Random Forest in Python
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Verwenden Sie Random Forest mit Python
Erstellen Sie Ihre eigene Django-Middleware
Gewichtete zufällige Auswahl in Python
Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Erstellen Sie ein originales Random Dot Stereogram (RDS) aus 2D-Fotos mit Tiefenschätzung durch maschinelles Lernen
[Python] Zufällige Verarbeitung (erstellen, auswählen, sortieren)
[Python] Erstelle deinen eigenen LINE-Bot
Testen mit Zufallszahlen in Python
Erstellen Sie einen DI-Container mit Python
Erstellen Sie eine Binärdatei in Python
Docker ausprobieren: Erstellen Sie Ihr eigenes Container-Image für eine Python-Web-App
Erstellen Sie Google Mail in Python ohne Verwendung der API
Erstellen Sie Ihren eigenen Namensauflösungsdienst
[Django] Erstellen Sie Ihre eigene 403, 404, 500-Fehlerseite
Erstellen Sie eine Python-Projektdokumentation in Sphinx
Erstellen und lesen Sie Messagepacks in Python
Erstellen Sie mit Python selbst die bekannte 3-Tage-Darstellung des Röntgenflusses von NOAA / GOES
Erstellen Sie mit Python + OpenCV Ihre eigene virtuelle Kamera und wenden Sie Originaleffekte an
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Erstellen Sie ScriptableObject in Python, wenn Sie ADX2 erstellen
Erstellen Sie mit Twisted Ihren eigenen DNS-Server
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
[Python] Packen und verteilen Sie Ihre eigenen Module
Erstellen Sie eine einfache GUI-App in Python
Erstellen Sie mit SQLAlchemy Ihren eigenen zusammengesetzten Wert
Erstellen Sie Qt-Designerteile mit Python (PyQt)
[Python] Registrieren Sie Ihre eigene Bibliothek in PyPI
Bis Sie Ihre eigene Python-Bibliothek installieren
[GPS] Erstellen Sie eine kml-Datei mit Python
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
Krankheitsklassifizierung durch Random Forest mit Python
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
[Python] Krankheitsklassifikation in zufälligen Wäldern - mit LDA-
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung