Насколько большим должен быть QR-код на моей крыше, чтобы спутник мог его сканировать при допустимом сегодня разрешении?

Jan 26 2021

Скажем, с помощью спутников Planet Labs

Спасибо

Ответы

7 uhoh Jan 28 2021 at 04:55

Насколько большим должен быть QR-код на моей крыше, чтобы спутник мог его сканировать при допустимом сегодня разрешении?

Скажем, с помощью спутников Planet Labs

Это дополнительный ответ. Я смоделировал 6-метровые «QR»-пиксели при просмотре из космоса с апертурой 9 см (за пределами куба Dove 3U) на длинах волн 450, 550 и 650 нм, повернутых на 45 градусов и затем снятых с помощью 3-метровых пикселей.

Это лоскутный и хрупкий сценарий, но он выполняет свою работу.

Изображение подтверждает основной вывод другого ответа о том, что это, вероятно, минимальный размер для некоторой надежности наблюдения за голубем.

Сценарий неоптимальный, я был ленив и использовал PIL для вращения, я мог бы интерполировать с помощью scipy.ndimage.map_coordinates, и я мог бы «размыть» с помощью scipy.ndimage.gaussian_filterвместо причудливого диска Эйри.

Оттенки на окончательном изображении обусловлены дифракционными пределами диафрагмы, зависящими от длины волны, примерно $1.22 \lambda / D$ изменение углового разрешения в зависимости от длины волны и светосилы.

import numpy as np
import matplotlib.pyplot as plt
import itertools
from PIL import Image
from scipy import special as spe
from scipy.ndimage import convolve

N = 5*2

data = ('111111' + '110001' + '111011' +
        '000011' + '010101' + '111111')
data = np.array([int(x) for x in data]).reshape((6, 6))
data = np.pad(data, ((6, 6), (6, 6)))

img = np.zeros((N*18, N*18, 3))

for i, j in itertools.product(np.arange(18), repeat=2):
    img[N*i:N*(i+1), N*j:N*(j+1)] = data[i, j]

pixsize = 6 # meters
scale = pixsize/N
extent = 9*N * scale * np.array([-1, 1, -1, 1])

R = 575 * 1000. # meters distance
x = 4*N * scale * np.linspace(-1, 1, 8*N)
X, Y = np.meshgrid(x, x)
q = np.sqrt(X**2 + Y**2)
wavelengths = 1E-09 * np.array([650, 550, 450])

a = 0.045 # radius of aperture in meters (looking out end of a 3U cubesat)
x = (2 * np.pi * a / wavelengths) * (q[..., None] / R)

# https://en.wikipedia.org/wiki/Airy_disk
airy = (2 * spe.j1(x) / x)**2
areas = airy.sum(axis=0).sum(axis=0)
airy /= areas

new = [convolve(img[..., i], airy[..., i]) for i in range(3)]
newarray = np.stack(new, axis=2)
newarray = np.uint8(255 * newarray/newarray.max())

newimg = Image.fromarray(newarray)
newimg45 = newimg.rotate(45)
newimg45.show()
n45 = np.array(list(newimg45.getdata())).reshape(18*2, N>>1, 18*2, N>>1, 3)
n45 = np.uint8(n45.sum(axis=(1, 3)) / (N>>1)**2)

if True:
    plt.figure()
    plt.subplot(1, 2, 1)
    plt.imshow(img, extent=extent)
    plt.title('6 meter pixels on Earth')
    plt.xlabel('meters')
    plt.subplot(1, 2, 2)
    plt.imshow(n45, extent=extent)
    plt.title('9cm aperture at 575 km, 3 m pixels')
    plt.xlabel('meters')
    plt.show()
4 uhoh Jan 27 2021 at 08:30

Насколько большим должен быть QR-код на моей крыше, чтобы спутник мог его сканировать при допустимом сегодня разрешении?

Скажем, с помощью спутников Planet Labs

tl; dr: с использованием « тега дополненной реальности » 6x6, обсуждаемого в ответе @ CamilleGoudeseune, например, на марсоходе Curiosity и 6-метровых пикселях (в два раза меньше минимального разрешения, чтобы обеспечить произвольное перемещение и вращение), ваш шаблон должен быть 36 x 36 метров, чтобы иметь Хорошая перемена в том, чтобы быть обнаруженным и восстановленным с изображения голубя PlanetLabs.

Я бы удалил красную и инфракрасную отражательную способность из ярких областей и кодировал бы только на более коротких длинах волн, поскольку у Doves есть четыре цветовых канала (вероятно), дифракционно ограниченных, и более длинные волны могут иметь худшее разрешение.

Try to excite only the shorter wavelength bands of your targeted spacecraft to make them "pop-out" to casual viewers, or only look at those wavelengths in the final data product if you are looking for yourself.


At https://www.planet.com/products/planet-imagery/ the most numerous satellites or "Doves" provide data for the PLANETSCOPE data product. The satellites are said to have 3.7 meter resolution and the data product have a resampled pixel size of 3 meters. See also @djr's answer to Are these images from Planet Labs? Are the images publicly available?

If you were incredibly lucky to have the pixels lined up with your QR pattern both translationally and rotationally, they could theoretically be 3 meters.

На практике, однако, при произвольном перемещении и повороте вашего рисунка в поле изображения вы должны иметь их коэффициент как минимум в 2, если не в 3 раза больше этого.

@Uwe напоминает нам, что небольшой QR-код все равно будет довольно большим. Есть 11 x 11 Micro QR-кодов, и космические люди использовали еще меньшее количество пикселей в качестве альтернативы QR-кодам с еще меньшим количеством пикселей.

Для тех, кто видит ответы на:

  • Почему Curiosity имеет два изображения на себе или одно представляет собой QR-код?
  • этот ответ на «Использовались ли« QR »или другие двухмерные штрих-коды в космических полетах?

Engineering interns Tristan Schuler, left, and Greta Studier pose with 2D barcodes and a Nano Air-Bearing Simulator prototype that uses the navigation system they developed while at Marshall. Their navigation system is available as open source code on code.nasa.gov. Credits: NASA/Emmett Given