Исследование визуальных иллюзий: методы и примеры кода

Визуальные иллюзии — это феномены восприятия, которые обманывают наш мозг, заставляя воспринимать нечто отличное от того, что существует на самом деле. Существуют различные методы создания визуальных иллюзий, и я приведу примеры кода для нескольких популярных из них. Однако обратите внимание, что эти примеры упрощены и для полноценной работы программы могут потребоваться дополнительный код и библиотеки.

  1. Иллюзия тени в клетку:
    Иллюзия тени в клетку — это оптическая иллюзия, из-за которой два квадрата одного и того же оттенка серого кажутся разными в зависимости от окружающего контекста.
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()
  1. Иллюзия сетки Германа.
    Иллюзия сетки Германа — это оптическая иллюзия, при которой черные точки появляются на пересечениях белой сетки на сером фоне.
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()