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.
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.
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')
Es ist schon etwas im Entstehen.
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')
Dieser sollte in den Vordergrund treten.
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')
** 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.)
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')
Versuchen Sie es auszuführen.
autostereogram = make_autostereogram(depthmap_text, pattern, 0.05)
plt.imshow(autostereogram, cmap='gray')
Es ist etwas vager als der Kreis, aber Sie können es sehen.
Worauf steht es geschrieben? ?? Der Text.
Antworten sind in den Kommentaren willkommen ^^
Ich habe eine Fortsetzung geschrieben.
Ich habe eine Fortsetzung geschrieben.
Recommended Posts