Mã QR sẽ phải lớn đến mức nào trên mái nhà của tôi để vệ tinh có thể quét nó với độ phân giải cho phép ngày nay?

Jan 26 2021

Giả sử, sử dụng vệ tinh Planet Labs

Cảm ơn bạn

Trả lời

7 uhoh Jan 28 2021 at 04:55

Mã QR sẽ phải lớn đến mức nào trên mái nhà của tôi để vệ tinh có thể quét nó với độ phân giải cho phép ngày nay?

Giả sử, sử dụng vệ tinh Planet Labs

Đây là một câu trả lời bổ sung. Tôi đã mô phỏng các điểm ảnh "QR" 6 mét khi nhìn từ không gian với khẩu độ 9 cm (nằm ở phần cuối của một khối Dove 3U) ở các bước sóng 450, 550 và 650 nm, xoay 45 độ và sau đó được lấy mẫu với các điểm ảnh 3 mét.

Đó là một tập lệnh vụn vặt và dễ vỡ nhưng nó thực hiện được công việc.

Hình ảnh hỗ trợ kết luận chính trong câu trả lời khác rằng đây có lẽ là kích thước tối thiểu để có một số độ tin cậy khi nhìn thấy nó bằng Dove.

Tập lệnh là không tối ưu, tôi đã lười biếng và sử dụng PIL để xoay, tôi có thể đã nội suy scipy.ndimage.map_coordinates, và tôi có thể đã "làm mờ" scipy.ndimage.gaussian_filterthay vì một đĩa Airy ưa thích.

Màu sắc trong hình ảnh cuối cùng là do giới hạn nhiễu xạ phụ thuộc bước sóng của khẩu độ, khoảng $1.22 \lambda / D$ sự thay đổi của độ phân giải góc với bước sóng và tỷ lệ khẩu độ.

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

Mã QR sẽ phải lớn đến mức nào trên mái nhà của tôi để vệ tinh có thể quét nó với độ phân giải cho phép ngày nay?

Giả sử, sử dụng vệ tinh Planet Labs

tl; dr: sử dụng " thẻ thực tế tăng cường " 6x6 được thảo luận trong câu trả lời của @ CamilleGoudeseune giống như câu trả lời trên Curiosity rover và pixel 6 mét (độ phân giải tối thiểu gấp đôi để cho phép dịch và xoay tùy ý) mẫu của bạn phải là 36 x 36 mét để có thay đổi tốt khi được phát hiện và phục hồi từ một hình ảnh từ PlanetLabs Dove.

Tôi sẽ loại bỏ phản xạ màu đỏ và hồng ngoại khỏi các vùng sáng và chỉ mã hóa ở các bước sóng ngắn hơn, vì Doves có bốn kênh màu (có thể là) bị hạn chế nhiễu xạ và các bước sóng dài hơn có thể có độ phân giải kém hơn.

Cố gắng chỉ kích thích các dải bước sóng ngắn hơn của tàu vũ trụ được nhắm mục tiêu của bạn để làm cho chúng "bật ra" đối với người xem bình thường hoặc chỉ xem xét các bước sóng đó trong sản phẩm dữ liệu cuối cùng nếu bạn đang tự tìm kiếm.


Tại https://www.planet.com/products/planet-imagery/nhiều vệ tinh nhất hoặc "Bồ câu" cung cấp dữ liệu cho sản phẩm dữ liệu PLANETSCOPE. Các vệ tinh được cho là có độ phân giải 3,7 mét và sản phẩm dữ liệu có kích thước pixel được lấy mẫu lại là 3 mét. Xem thêm câu trả lời của @ djr cho Có phải những hình ảnh này từ Phòng thí nghiệm Hành tinh không? Hình ảnh có được công bố rộng rãi không?

Nếu bạn cực kỳ may mắn khi có các pixel được xếp cùng hàng với mẫu QR của bạn theo cả phương pháp tịnh tiến và quay, về mặt lý thuyết chúng có thể dài 3 mét.

Tuy nhiên, trên thực tế, với việc dịch và xoay tùy ý mẫu của bạn trong trường hình ảnh, bạn nên đặt chúng với hệ số ít nhất là 2 nếu không lớn hơn 3.

@Uwe nhắc chúng ta rằng một mã QR nhỏ vẫn sẽ khá lớn. Có mã QR Micro 11 x 11 và các dấu cách đã sử dụng số pixel thậm chí còn nhỏ hơn để thay thế cho mã QR có số pixel ít hơn.

Đối với những người xem câu trả lời cho:

  • Tại sao Curiosity lại có hai hình ảnh của chính nó, hay một hình là mã QR?
  • câu trả lời này cho Có “QR” hoặc mã vạch 2D khác được sử dụng trong tàu vũ trụ không?

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