用光绘画以测量时间
最近,我在家工作时面临两难的境地。我需要验证一阶的实现 ∑-Δ调制 用于调整乐橙云app的亮度。 (我已经在 软件工程师的调制选择。)但是,我没有示波器。
然后我想起了一种叫做 “light painting”:基本上是长时间曝光的照片,快门打开时光源在其中移动。一世’d首先在杂志文章中看到了一些不寻常的照片,其中包括 埃里克·斯托勒‘s 1979 work, 内窥镜。 (我希望我能记得该杂志!这篇文章可能出自《游戏》杂志或《国家地理》,大约1983-1986年。)
斯托勒(Saller)晚上在走廊上走过,并以圆形和菱形形状安装了两串圣诞灯泡,在他身后留下了发光的痕迹,从而创造了它。因此,画家也在画中,但又如此朦胧又模糊,以致于他被有效地隐藏了。
从技术上讲 所有 照片是轻绘画;光线落在感光板,胶片或传感器上,随着光能在图像的不同部分累积而引起化学或电气变化。
它在相当早的时候就已经用作定量测量的方法:例如,参见Eadweard Muybridge’s 1878年的十二张精心拍打的小跑照片系列 或者 的生理研究ÉTienne-Jules Marey和Georges Demeny始于1880年代.
阳光下没有新事物。
阴极射线管 在20世纪数十年来一直使用光绘技术,在1930年代风靡一时,并在2003-2005年左右被LCD平板显示器取代之前主导了显示器市场。 CRT的原理是向覆盖荧光粉的屏幕发射电子束,并用电磁体控制电子束,使其可以扫描整个CRT屏幕。当然,它们被电视和计算机显示器使用— 和 oscilloscopes (也在1930年代),其中输入电压信号控制电子束的水平和垂直位置。使用线性扫描的水平输入,将感兴趣的信号用作垂直输入,则可以直接可视化波形。
正如我所说,我不’家里没有示波器。但是我 做 有一台数码相机,我想我可以对我的sigma-delta调制的乐橙云app拍照,使相机足够平滑地移动,以便乐橙云app点在图像上扫描。
结果如下所示。它’在按下快门释放器的同时同步移动相机非常困难,但是如果我尝试了一下,我发现至少可以得到一到两张好照片。
这是一个p = 2048,q = 4096,曝光时间为1/10秒,滴答频率为(aka“chip rate”)频率为500Hz,因此名义上照片中应该有50位样本。如果仔细观察绿色闪烁的乐橙云app,您会发现24个点之间有23个间隙,显示出47到49位样本之间的某处。 (我们不’不知道照片是在绿色乐橙云app亮起还是熄灭的情况下开始和结束的。)还不错,至少’s consistent.
由于我有一个带机械快门的相机和一个带有石英晶体的电路板,因此’m倾向于相信乐橙云app时序更精确,并且曝光时间更可能在96毫秒左右,而不是标称的100毫秒。
红色乐橙云app是我无法控制的通信乐橙云app,但很可能是’s也以500Hz左右的频率闪烁。
绿色乐橙云app亮得多;太亮了,事实上,我认为’导致相机出现非线性’的图像响应。绿色的“blobs” aren’散焦工件。
无论如何,接下来是p = 2176,q = 4096(p / q = 17/32),曝光时间为1/10秒。
这里的绿色乐橙云app显示以下位序列(1 =亮,0 =灭):
1010101101010101010101101010101010101011010101
这个对吗?
observed_sequence = '1010101101010101010101101010101010101011010101' def sigmadelta(p,q,accum_init=0): accum = accum_init while True: accum += p if accum >= q: out = 1 accum -= q else: out = 0 yield out def sdsequence(p,q,accum_init,n=46,off='0',on='1'): sequence = '' for k,out in enumerate(sigmadelta(p,q,accum_init)): if k >= n: break sequence += '1' if out == 1 else '0' return sequence print repr(observed_sequence) sdsequence(2176,4096,3270)
'1010101101010101010101101010101010101011010101'
'1010101101010101010101101010101010101011010101'
它是!首先让我感到惊讶的是,双1脉冲之间的单1脉冲数是不同的,在6到7个单1脉冲之间交替,但是’这就是数学计算的方式。
这里’s用p = 1920,q = 4096、1 / 10秒曝光的第三张照片:
这里 the observed bit sequence is
1010101001010101010101010010101010101010010101
observed_sequence = '1010101001010101010101010010101010101010010101' print repr(observed_sequence) sdsequence(1920,4096,3100)
'1010101001010101010101010010101010101010010101'
'1010101001010101010101010010101010101010010101'
Works for me! I just wanted to make sure the 芯片率 looked correct 和 the overall sequence was 做 ing what I expected.
I’d much rather use a “real”测试设备,但在紧要关头,相机表现不错。起初,我在一个昏暗的房间里拍照,除了板上的乐橙云app以外,什么都没打开,这很痛苦… then I 真实ized, oh, I just need to keep the F-stop high enough that the ambient light in the room is low, 和 the only thing that will show up in the image is the light trail of the 乐橙云apps.
祝您节日快乐,新年快乐!
©2020 Jason M. Sachs,保留所有权利。
杰森·萨克斯(Jason Sachs)上一篇文章:
烧焦器,第3部分:具有双缓冲和旋转壁炉的裸机并发