รหัส QR จะต้องอยู่บนหลังคาของฉันขนาดไหนเพื่อให้ดาวเทียมสามารถสแกนได้ด้วยความละเอียดที่อนุญาตในปัจจุบัน

Jan 26 2021

พูดโดยใช้ดาวเทียม Planet Labs

ขอขอบคุณ

คำตอบ

7 uhoh Jan 28 2021 at 04:55

รหัส QR จะต้องอยู่บนหลังคาของฉันขนาดไหนเพื่อให้ดาวเทียมสามารถสแกนได้ด้วยความละเอียดที่อนุญาตในปัจจุบัน

พูดโดยใช้ดาวเทียม Planet Labs

นี่คือคำตอบเสริม ฉันได้จำลองพิกเซล "QR" ความยาว 6 เมตรเมื่อมองจากอวกาศโดยมีรูรับแสง 9 ซม. (จากจุดสิ้นสุดของก้อนโดฟ 3U) ที่ความยาวคลื่น 450, 550 และ 650 นาโนเมตรหมุนที่ 45 องศาแล้วสุ่มตัวอย่างด้วยพิกเซล 3 เมตร

เป็นสคริปต์ที่กระท่อนกระแท่นและเปราะบาง แต่ได้ผล

ภาพดังกล่าวสนับสนุนข้อสรุปหลักในคำตอบอื่น ๆว่านี่อาจเป็นขนาดขั้นต่ำสำหรับความน่าเชื่อถือในการมองเห็นด้วยนกพิราบ

สคริปต์นั้นไม่เหมาะสมฉันขี้เกียจและใช้ PIL ในการหมุนฉันสามารถแก้ไขได้scipy.ndimage.map_coordinatesและฉันสามารถ "คลุมเครือ" ด้วยscipy.ndimage.gaussian_filterแทนที่จะเป็นดิสก์ Airy แบบแฟนซี

เฉดสีในภาพสุดท้ายเกิดจากขีด จำกัด การเลี้ยวเบนของค่ารูรับแสงที่ขึ้นอยู่กับความยาวคลื่นโดยประมาณ $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 rover และพิกเซล 6 เมตร (ความละเอียดขั้นต่ำสองเท่าเพื่อให้สามารถแปลและหมุนได้ตามอำเภอใจ) รูปแบบของคุณควรมีขนาด 36 x 36 เมตรจึงจะมี การเปลี่ยนแปลงที่ดีของการถูกพบเห็นและกู้คืนจากภาพจาก PlanetLabs Dove

ฉันจะลบการสะท้อนแสงสีแดงและอินฟราเรดออกจากพื้นที่สว่างและเข้ารหัสเฉพาะในช่วงความยาวคลื่นที่สั้นกว่าเนื่องจากนกพิราบมีช่องสีสี่ช่อง (อาจ) การเลี้ยวเบนที่ จำกัด และความยาวคลื่นที่ยาวขึ้นอาจมีความละเอียดที่แย่ลง

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.

Practically though, given arbitrary translation and rotation of your pattern within the field of the image, you should have them a factor of at least 2 if not 3 larger than this.

@Uwe reminds us that a small QR code would still be pretty big. There are 11 x 11 Micro QR codes and spacefolks have used even smaller pixel numbers for alternatives to QR codes with even fewer pixels.

For those see answers to:

  • Why does Curiosity have two images of itself on itself, or is one a QR-code?
  • this answer to Have “QR” or other 2D barcodes been used in spaceflight?

นักศึกษาฝึกงานด้านวิศวกรรม Tristan Schuler ซ้ายและ Greta Studier แสดงบาร์โค้ด 2 มิติและต้นแบบ Nano Air-Bearing Simulator ที่ใช้ระบบนำทางที่พวกเขาพัฒนาในขณะที่ Marshall ระบบนำทางของพวกเขามีให้ใช้งานเป็นรหัสโอเพนซอร์สบน code.nasa.gov เครดิต: NASA / Emmett Given