今日の許容解像度で衛星がQRコードをスキャンできるようにするには、QRコードを屋根にどのくらいの大きさにする必要がありますか?

Jan 26 2021

プラネットラボの衛星を使って言う

ありがとうございました

回答

7 uhoh Jan 28 2021 at 04:55

今日の許容解像度で衛星がQRコードをスキャンできるようにするには、QRコードを屋根にどのくらいの大きさにする必要がありますか?

プラネットラボの衛星を使って言う

これは補足的な答えです。私は、450、550、および650nmの波長で9cmの開口部(3U Doveキューブサットの端から)の空間から見た6メートルの「QR」ピクセルをシミュレートし、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コードをスキャンできるようにするには、QRコードを屋根にどのくらいの大きさにする必要がありますか?

プラネットラボの衛星を使って言う

tl; dr: Curiosityローバーと6メートルのピクセル(任意の平行移動と回転を可能にするための最小解像度の2倍)のような@CamilleGoudeseuneの回答で説明されている6x6の「拡張現実タグ」を使用すると、パターンは36 x36メートルになります。 PlanetLabsDoveからの画像から発見されて回復されるという良い変化。

ハトには4つのカラーチャネルがあり(おそらく)回折限界があり、波長が長くなると解像度が低下する可能性があるため、明るい領域から赤と赤外線の反射率を取り除き、より短い波長でのみエンコードします。

ターゲットとする宇宙船のより短い波長帯域のみを励起して、カジュアルな視聴者に「ポップアウト」させるか、自分自身を探している場合は、最終的なデータ製品でそれらの波長のみを確認してください。


で https://www.planet.com/products/planet-imagery/最も多くの衛星または「鳩」は、PLANETSCOPEデータ製品のデータを提供します。衛星の解像度は3.7メートルと言われ、データ製品のピクセルサイズは3メートルにリサンプリングされています。参照してくださいDJRの答え@する惑星研究所からこれらのイメージはありますか?画像は公開されていますか?

ピクセルをQRパターンと並進および回転の両方で並べることができて非常に幸運だった場合、理論的には3メートルになる可能性があります。

ただし、実際には、画像のフィールド内でのパターンの任意の平行移動と回転を考えると、これより3倍ではないにしても、少なくとも2倍大きくする必要があります。

@Uweは、小さなQRコードでもかなり大きいことを思い出させてくれます。11 x 11のマイクロQRコードがあり、宇宙飛行士はさらに少ないピクセル数のQRコードの代わりにさらに小さなピクセル数を使用しています。

それらについては、次の回答を参照してください。

  • Curiosityがそれ自体に2つの画像を持っているのはなぜですか、または1つはQRコードですか?
  • この回答への持っている「QR」または他の2Dバーコードは、宇宙飛行で使用されていますか?

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