Визуальные иллюзии — это феномены восприятия, которые обманывают наш мозг, заставляя воспринимать нечто отличное от того, что существует на самом деле. Существуют различные методы создания визуальных иллюзий, и я приведу примеры кода для нескольких популярных из них. Однако обратите внимание, что эти примеры упрощены и для полноценной работы программы могут потребоваться дополнительный код и библиотеки.
- Иллюзия тени в клетку:
Иллюзия тени в клетку — это оптическая иллюзия, из-за которой два квадрата одного и того же оттенка серого кажутся разными в зависимости от окружающего контекста.
import matplotlib.pyplot as plt
import numpy as np
def checker_shadow_illusion():
# Create a checkerboard pattern
pattern = np.zeros((8, 8))
pattern[1::2, ::2] = 1
pattern[::2, 1::2] = 1
# Create two squares with the same shade of gray
square1 = np.ones((3, 3)) * 0.5
square2 = np.ones((3, 3)) * 0.5
# Place the squares on the checkerboard pattern
pattern[2:5, 2:5] = square1
pattern[4:7, 4:7] = square2
# Plot the checkerboard pattern
plt.imshow(pattern, cmap='gray')
plt.axis('off')
plt.show()
# Call the function to generate the illusion
checker_shadow_illusion()
- Иллюзия сетки Германа.
Иллюзия сетки Германа — это оптическая иллюзия, при которой черные точки появляются на пересечениях белой сетки на сером фоне.
import matplotlib.pyplot as plt
import numpy as np
def hermann_grid_illusion():
# Create a gray background
background = np.ones((10, 10)) * 0.5
# Create a white grid
grid = np.ones((10, 10))
grid[::2, ::2] = 0
grid[1::2, 1::2] = 0
# Combine the background and grid
image = background + grid
# Plot the illusion
plt.imshow(image, cmap='gray', vmin=0, vmax=1)
plt.axis('off')
plt.show()
# Call the function to generate the illusion
hermann_grid_illusion()
<ол старт="3">
Муаровый узор — это визуальный интерференционный узор, который возникает, когда два обычных узора перекрываются или накладываются друг на друга.
import matplotlib.pyplot as plt
import numpy as np
def moire_pattern():
# Create two sets of parallel lines
lines1 = np.zeros((100, 100))
lines1[::5, :] = 1
lines2 = np.zeros((100, 100))
lines2[::7, :] = 1
# Combine the lines to create the Moiré pattern
moire = np.logical_xor(lines1, lines2).astype(int)
# Plot the Moiré pattern
plt.imshow(moire, cmap='gray')
plt.axis('off')
plt.show()
# Call the function to generate the pattern
moire_pattern()