오늘의 허용 해상도를 고려할 때 위성이 스캔 할 수 있으려면 QR 코드가 지붕에 얼마나 커야합니까?

Jan 26 2021

Planet Labs 위성을 사용하여

감사합니다

답변

7 uhoh Jan 28 2021 at 04:55

오늘의 허용 해상도를 고려할 때 위성이 스캔 할 수 있으려면 QR 코드가 지붕에 얼마나 커야합니까?

Planet Labs 위성을 사용하여

이것은 보충 답변입니다. 저는 450, 550, 650nm 파장에서 9cm의 조리개 (3U Dove cubesat의 끝 부분)로 우주에서 볼 때 6m "QR"픽셀을 시뮬레이션하고 45도 회전 한 다음 3m 픽셀로 샘플링했습니다.

스크랩하고 깨지기 쉬운 스크립트이지만 작업을 수행합니다.

이 이미지는 Dove와 함께 볼 수있는 안정성을위한 최소 크기 일 수 있다는 다른 답변 의 주요 결론을 뒷받침합니다 .

스크립트는 차선책이고, 나는 게으르고 회전하는데 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 : Curiosity 로버와 6m 픽셀 (임의의 변환 및 회전을 허용하기 위해 최소 해상도의 두 배)에있는 것과 같은 @CamilleGoudeseune의 답변 에서 논의 된 6x6 " 증강 현실 태그 " 를 사용하면 패턴이 36 x 36m 여야합니다 . PlanetLabs Dove의 이미지에서 발견 및 복구되는 좋은 변화.

나는 밝은 영역에서 적색 및 적외선 반사율을 제거하고 더 짧은 파장으로 만 인코딩 할 것입니다. 비둘기에는 4 개의 색상 채널이 있기 때문에 (아마도) 회절이 제한되고 더 긴 파장은 더 나쁜 해상도를 가질 수 있기 때문입니다.

대상 우주선의 더 짧은 파장 대역 만 자극하여 일반 시청자에게 "튀어 나오도록"하거나 자신을 찾고있는 경우 최종 데이터 제품에서 해당 파장 만 살펴보십시오.


에서 https://www.planet.com/products/planet-imagery/가장 많은 위성 또는 "비둘기"는 PLANETSCOPE 데이터 제품에 대한 데이터를 제공합니다. 위성의 해상도는 3.7 미터이고 데이터 제품의 픽셀 크기는 3 미터입니다. 참조 DJR의 대답 @ 에 있습니다 행성 연구소에서 이러한 이미지? 이미지를 공개적으로 사용할 수 있습니까?

픽셀이 변환 및 회전 모두에서 QR 패턴과 일렬로 정렬 된 것이 믿을 수 없을만큼 운이 좋았다면 이론적 으로 3 미터가 될 수 있습니다.

실제로 이미지 필드 내에서 패턴의 임의의 변환 및 회전을 고려할 때 이보다 3 배가 크지 않으면 최소 2 배를 가져야합니다 .

@Uwe는 우리에게 상기시켜 작은 QR 코드는 여전히 꽤 큰 것이라고. 11 x 11 Micro QR 코드가 있으며 우주인들은 더 적은 픽셀을 가진 QR 코드 대신 더 작은 픽셀 번호를 사용했습니다.

이에 대한 답변을 참조하십시오.

  • 왜 Curiosity는 자체 이미지가 두 개입니까, 아니면 하나가 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