云南土土 发布的文章

摄像头拍摄高清月面,马赛克拼接,没有那么复杂。注意好几个因素,自然成功。

1.对焦

月面对焦必须看着画面调,不要想着用鱼骨对焦对准恒星的方式调好焦距了直接转过来拍月面,那是肯定不行的。月球离我们才38万公里,而恒星离我们数以光年计,两者的焦点位置肯定不同。来回调焦,直到感到最清晰的时候果断停下。相信你的直觉。

必须要上电动调焦,否则画面的抖动会让你折腾一刻钟都无法确定是否真正合焦了。

2.参数选择

马赛克最要紧的,是每一张图片的曝光参数一定要完全一致,因此,设置好曝光参数后,在整组拍摄中就绝对不能再调整相关参数,否则有你好看。月面亮度高,所以增益不用太高,我一般选择15%左右,过高的增益会压缩动态。

既然是马赛克,那一定画面上装不下整个页面,在调整了曝光时间后,先不要忙着开始拍摄,先控制赤道仪或者经纬仪将整个月面扫一遍,观察有没有过曝的地方。曝光参数选择我的体会是,不要过曝,稍微黯淡一点没有关系。

帧数选择可以自定,我自己通常选500帧,然后叠加时选择其中最好的200帧进行叠加。我不太同意月面拍摄帧数不要太多以免将坏帧叠加进去的说法,因为叠加时选用多少帧,是可以自己设置的。

3.拍摄

月面拍摄不需要导星,赤道仪或者经纬仪均可,电动跟踪是必须的,虽说手动跟踪从理论上也是可以的,但是为了达到最大分辨率,我们应该尽可能减少手动跟踪带来的晃动等不利因素。

马赛克的最大忌讳就是拍漏了局部,最后合成出来的图像缺个角或者缺一条。这个问题我在拍第一张全月面的时候就遇到了。马赛克的基本拍摄方式是扫射,即赤经轴先不动,先逐步移动赤纬,覆盖完整条再调整赤经,开始新的一条扫射,或者赤纬轴先不动,先移动赤经进行逐条扫射也可。

为了避免拍漏,必须做到两点:一是每张之间要有一定的画面重叠,我的经验是至少重叠25%;二是当完成了一条的拍摄,需要移动赤经或者赤纬时,只能移动一个轴,或者赤经或者赤纬,尽量不要两个轴一起移动,否则很容易拍漏。

4.暗场平场

月面拍摄的单帧曝光时间很短,暗场拍不拍差别都不大,我从来不拍,平场则很有必要进行拍摄。摄像头的点距一般都很小,如我用的QHY5LII-M的点距仅3.75微米,这样极小的一粒灰尘都会在画面上留下阴影。每次拍摄前我都要用高压皮老虎吹一下靶面,但即便如此也无法将所有灰尘吹掉,也许用罐装的高压清洁空气是更好的选择。如果望远镜口径不大,将平板电脑或者显示器调为全白,擦干净屏幕倒扣到镜头上,控制曝光至直方图在中间,拍摄一段视频即可。

5.叠加

用R5,R6或者AVISTACK都可以,我个人习惯用AVISTACK。AVISTACK的设置,可见这个帖子http://www.astronomy.com.cn/bbs/forum.php?mod=viewthread&tid=191497。叠加参数我选500帧中选择最好的200帧叠加,输出TIFF格式,先用软件调出平场视频文件,制作出平场文件(FIT格式),然后在叠加设置中将这个平场文件加上。平场必须在视频叠加的时候同步来做,不要想着等视频叠加成图像了,再用DSS等文件来加平场。由于视宁的关系视频画面是抖动,最后叠加出来的图像分辨率都会略为小于摄像头的原始分辨率(边缘抖动部分被切掉了),而平场FIT文件则是原始分辨率,两者分辨率不匹配会直接导致平场叠加失败。

注意AVISTACK叠加出来的图像和视频源文件相比,是上下翻转的。

6.拼接

用PHOTOTSHOP里的文件-自动-photomerge,把叠加好的图像全部丢进去,缺省设置进行叠加即可。正常情况下都能自动拼接出完整,过渡自然的大片,将图像放大到100%,全面检查如果没有任何拼接的痕迹,就可以合并图层,进行后期制作了。

有时候拼接出来的图像会有拼缝,我想这也许是因为拍摄时间太长,导致拍摄不同画面时亮度发生了极其细微的变化所致,也可能是因为叠加的关系,有时边缘会有极细的一道黑边。这种情况时,可以手动将每张照片的边缘裁掉细细的一圈,再拼,有一半的机会可以消除拼缝。其他的办法,就超过我的能力了。

还有少数时候,拼接不成功,我判断出现这样问题的原因,首先是欠曝过于严重,软件难找画面的参考点,其次是交叉覆盖做得不好,交叉覆盖太少难以判断,太多(如50%以上)似乎也会出现问题。遇到这种情况,拼接就要化整为零,先把每条拼好,再拼成一个完整的。如果画面欠曝实在严重,连一条都不能自动拼好,就试着拼三张甚至两张,将无法自动拼接的部分用手动的方式进行拼接,最终完成。

一般来说,只要曝光合适,交叉覆盖得当,自动拼接即可成功。

7.后期

后期并非我的强项,对我来说,月面的后期只拉曲线和做锐化。拉曲线的时候不要调节幅度过大,多设几个参考点,至少四个,一点点拉,尽量将画面的层次拉出来,同时又不导致分辨率损失或者画面过曝。锐化采用复制图层,用“高反差保留”滤镜处理复制图层后叠加回原图层,也可以用USM锐化,只是两种处理的参数都要反复试验比较,不要做过头。看上去稍微模糊一点点是最好的,过锐的图像太生硬,也不耐看。

(本文原创于2013年)

        第二次因为修改raspberry的系统文件造成sudo无法使用了。第一次是因为修改了/etc/sudoers导致,那一次是用以下语句救回来的:
pkexec --pi nano /etc/sudoers

        这一次是因为python脚本执行问题,怀疑导入的模块环境变量不对,修改了/etc/profile导致。用上面这个语句无法救回,试验了半天,用下面这句:
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
        运行这一句后,sudo语句暂时可以运行,赶紧进/etc/profile把添加进去的环境变量路径删掉,然后用如下语句刷新:
source /etc/profile
        系统sudo语句恢复正常。

        所以raspberry的系统文件修改有风险!还有就是要事先设置好root账户的密码,这样sudo用不了以后可以用root账户登录,不用sudo语句就可以修改。

        需要修改环境变量的缘起,是将流星监测站的叠加图上传由sm图床改为腾讯云COS自建图床,当时试验是好的,后面就没有能够收到图片推送,今天putty登录人工运行python脚本发现报错缺少qcos模块,可是我已经安装过cos-python-sdk-v5模块了啊,pip freeze也能看到安装的模块,最后各种添加环境变量都没有用,还是用pip uninstall以后再install这个模块才解决了这个问题。记住,以后再有这样的幺蛾子,先卸载,再安装试试。

        两次到轿子山,都留下了美好的印象。一次走一线天,一次走轿顶,风光各有千秋,高原杜鹃林的繁茂和清凉固然让人神清气爽,然而苔藓地衣装点的高原草甸更让人回肠荡气。雨季的轿子山遍地都是小溪和瀑布,雷鸣般的水声让缆车里的我以为是天降暴雨。轿顶云雾缭绕,无人机数次起飞才在云雾变幻的缝隙一窥壮阔的美景。没有办法,山已在云里。
        我喜欢攀登高山,喜欢站在山顶看几公里几十公里外的群山,喜欢头顶蓝得近乎黑色的天空,喜欢峰巅狂野得令人站不住脚的大风,喜欢脚下依次铺陈开去的绿色草甸与莽莽森林,喜欢经过长时间攀登后筋疲力尽疲惫的感觉,喜欢还有更高山峰可以攀登的期待。

DJI_0341_小.jpg
DJI_0330_小.jpg
DJI_0358_小.jpg
DJI_0347_小.jpg
DJI_0357_小.jpg
DJI_0360_小.jpg
DJI_0363_小.jpg
DJI_0367_小.jpg
DJI_0368_小.jpg
DJI_0371_小.jpg
_P1M0283_副本.jpg
_P1M0277_副本.jpg
_P1M0270_副本.jpg
_P1M0292_副本.jpg
_P1M0285_副本.jpg
_P1M0296_2_副本.jpg

  • Arduino的开发板是拿来搞开发的,不是拿来搭建应用系统的,nano这样小体积的板子除外。批量应用用ATMEGA328P或ATMEGA2560单片机最小系统搭建即可。

    • 网上找的电路图注意看是对应哪种封装的,DIP封装和TQFP封装的管脚定义不同。PU是DIP封装,AU是TQFP封装。
    • 用ICSP接口灌装bootloader,之后用UART0灌装程序。UART0接口要附带reset,否则无法成功烧录。
    • 如果自制的板子不工作,在电路本身无错误的情况下,大概率是ATMEL芯片引脚出现虚焊、短连等焊接质量问题。
    • 不能盲信嘉立创的自动布线,布线完成后一定要仔细核查DRC,可能出现短连等非正常情况。
    • 绝对不要把系统的复位电路和其他模块的复位电路直接并联,如果电平或复位逻辑不一致会导致复位管脚电平处于浮动状态,会导致一系列匪夷所思的故障。
    • D0口要做外部上拉。会大幅提升供电可靠性。
  • Arduino的内存没那么容易用完。如果编译时提示动态内存太低,肯定是哪个地方没弄对。

    • 用自定义函数,函数内使用局部变量,减少全局变量使用。
    • Serial.print语句用到的固定字符串用F()包起来,这样固定字符串就只占用程序空间而不会占用内存空间。
  • 串口读取数据语法升级。按照一般的Arduino教材(包括中文互联网中)说明,串口读取只能采用read()方法,一次读取一个字节,如果需要读取字符串需要人工构建算法,但实际上现在Arduino已有readString()方法,可直接读取串口接收到的字符串,无需人工构建算法。用英文在google中搜索可以找到相应信息。
  • 有关Arduino扩充串口缓冲区的设置。当一次接收串口数据数百个字节时,因Arduino串口默认发送、接收缓冲区各只有64字节,如接收到的字节数超出64字节,其后的将会被舍弃。因此,必须在Arduino的HardwareSerial.h中设置发送、接收缓冲区尺寸,将字节数扩充到450字节。需要注意的是,必须修改以下目录中的HardwareSerial.h才有效!C:\user\xxxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\cores\arduino\HardwareSerial.h
    (其中XXXX为所安装机器的用户名) 修改方法:在HardwareSerial.h中开头增加两个宏定义:

    #define SERIAL_RX_BUFFER_SIZE 450
    #define SERIAL_TX_BUFFER_SIZE 450
    两个缓冲区尺寸必须一样,否则无法通过编译。 Arduino IDE如果升级了,一定要再次进入该目录进行修改,否则串口响应会出现问题。
    *《ARDUINO技术内幕》是本好书,深度开发必看。

本记录持续更新中。

        《碧海蓝天》不是一部人人喜欢的电影。The Big Blue,如果它契合了你的心境,你会理解它,会因它而感动,会因它沉默不语,但不会因它而消沉。你会知道这个世界上有人和你一样,你并不孤独。
        人很难被理解,但如果一个人说他喜欢《碧海蓝天》,你可以瞬间了解他。

_P1M0022_小.jpg

_P1M0034_小.jpg

_P1M0040_小.jpg

_P1M0042_小.jpg

_P1M0046_小.jpg

_P1M0053_小.jpg

_P1M0064_小.jpg

_P1M0070_小.jpg

_P1M0071_小.jpg

        这个季节的轿子雪山没有雪,有的只是从山谷蔓延至山巅的水汽,高山草甸中肆意流淌的小溪,漫山遍野抽出新芽的杜鹃花,树干上石头上绿得不真实的青苔,以及那条连绵不绝穿行在林间延伸到山巅的木头栈道。游人很少,青年人很多,呼朋唤友的笑闹声传出很远。海拔四千二的空气,凛冽而清新,连起飞无人机都会提醒你空气稀薄,但是我喜欢。
        我喜欢登高,喜欢任何一个季节,哪怕站在山巅,被满天的云雾遮住远方,看不到天边的群山,看不到脚下的森林与草原。你知道它们就在远方,你知道你就在云里。

_P1M0283_小.jpg

_P1M0285_小.jpg

_P1M0292_小.jpg

DJI_0330_小.jpg

DJI_0341_小.jpg

DJI_0347_小.jpg

DJI_0357_小.jpg

DJI_0358_小.jpg

DJI_0360_小.jpg

DJI_0363_小.jpg

DJI_0367_小.jpg

DJI_0371_小.jpg

_P1M0270_小.jpg

_P1M0277_小.jpg

“弥留之际请为我播放此曲。”

        帕格尼尼,小提琴鬼才,24首小提琴随想曲尤其是第24首是耳熟能详的名曲。拉赫玛尼诺夫所做帕格尼尼主题狂想曲第18变奏,却完全是另一风格,情真意切,深情无比,恰如人之老后,夕阳西下之时眺望远山,不喜不悲,不悔不怨,坦然接受必然到来的命运。如我有幸,请于我弥留之际,为我播放此曲,死亡不是结束,而是新的开始。

        初识AI绘画,是谷歌的在线AI程序深度梦境Deep Dream,一个上传照片后选择一个滤镜对照片进行处理从而形成梦幻效果的在线程序。名字叫深度梦境,但是要作出一张真正梦境般的图片并不容易,处理后的照片能够明显看出原来的图案是什么,是应用了什么样风格的滤镜进行的处理,是一种显而易见的融合及结合。比如下面这张照片,无印良品里的杯碟架子变成高楼林立的都市:
微信图片_20220509084214.jpg
        或者是这样,丛林里的城市只是房屋后院的梦呓:
微信图片_20220509084239.jpg
        五彩缤纷的效果是容易形成的效果:
微信图片_20220509084201.jpg
        或是电子游戏争霸战的赛博朋克风格:
微信图片_20220509084257.jpg
        深度梦境真正给我惊喜的,是这样一张照片,这是一张银河的星野照片,能想象经过滤镜后变成另外这样一种星空的样子吗?
微信图片_20220509084245.jpg
        在祛除了不切实际的梦幻设想后,深度梦境其实更能给我们一些例如油画、水粉画这样的处理效果:
deepdream1.jpg

        然后,我遇到了谷歌的深度学习算法Disco Diffusion,用Tensorflow训练模型,在线运行可使用谷歌的在线GPU提高运行速度,也可以下载到本地机器运行,但由于我的电脑的硬件性能远远无法达到跑这个模型的需求,所以始终只能在线上进行运行。DD的特点,是用一句包含若干关键词的话来告诉程序想要一幅什么样的画。不做修改时,默认的关键词是这样的:
        "A beautiful painting of a singular lighthouse, shining its light across a tumultuous sea of blood by greg rutkowski and thomas
kinkade, Trending on artstation.", "yellow color scheme”
这样画出来的是灯塔:
TimeToDisco(0)_0.png

        一直想要画一张赛博朋克风格的画,所以我用了这句关键词:"A sense of awe of a steampunk Industrial City,filled with holograms by M.C. Escher, Trending on surreal.","silver color scheme"
        结果挺出人意料:
TimeToDisco(2)_1.png
TimeToDisco(2)_2.png
TimeToDisco(2)_5.png
TimeToDisco(2)_6.png

        另一个想要的场景是帆船在波涛汹涌的大海上,所以我用了这句关键词: "A beautiful painting of a ultrawide shot of a sailboat ,sailing in rough sea by greg rutkowski and thomas kinkade, trending on artstation."结果不满意。
TimeToDisco(5)_1.png
TimeToDisco(6)_2.png
TimeToDisco(6)_7.png

        这句关键词:"A sense of awe of the end of time ,a desire for knowledge by Hiroshi Yoshida and Marc Simonetti, trending on futuristic."第一张就非常好,但是后面的图画就每况愈下,所以只保留了这一张:
TimeToDisco(7)_0.png

        由于末世流的风格效果很好,于是我又调整了关键词:"A sense of awe of the end of civilization by Ivan Aivazovsky and Peter Mohrbacher, trending on futuristic."至于效果......只能说不好,嫁接的痕迹太严重。
TimeToDisco(8)_0.png
TimeToDisco(8)_3.png
TimeToDisco(8)_6.png
TimeToDisco(8)_8.png

        AI绘画的程序还有很多,AI绘画到底能不能代替人类的绘画呢?其他的程序我不知道,DD我看难。用一句话来告诉程序想要画什么,这其中的不确定性太多,按理说不确定性是灵感的来源,可偏偏这程序的程式化还是太严重,这就造成了画作的移花接木和可以理解的混合。对于抽象艺术而言,能够理解便落了下乘,更何况能把自己的幻想明白说出来的话,那幻想还是幻想吗?

        抬头望天不需要教,是人的天性,只要看到每个孩子看到星空时的那份兴奋,谁都能从心中自然而然浮现出这样一句话。在我小的时候,出了环城路的滇池路两遍都是农田和旷野,骑单车不用多长时间就能看到满天星斗与跨越其间的银河,但是现在城市里的孩子已经无此幸运,要想看到如我们小时候那样的星空,必须精心筹划,开车远行,望天变成了如同其他旅游一般的事情。与此同时,天文爱好也同样发生着巨大的变迁,从我们小时候淳朴的抬头观天,逐渐演变成了需要大量金钱堆积设备的军备竞赛,天文爱好者在电脑屏幕之前的时间越来越长,但是目视观天的时间却越来越少。每位新加入这个爱好的人都会问两个问题:我该买一架什么样的天文望远镜,我要花多少钱才能拍摄出网上那些美轮美奂的星云照片。少有人在四季的星夜里体会辨识星座的乐趣,少有人只是单纯地躺在引擎盖上静静地看流星划过星际。星空是巨大的黑暗,但并不令人绝望,因为星星点点的光明给了你目标和希望。正如我们短暂而漫长的一生,纵有无数自己不想做而不得不做的事情,终归会有一些事、一些人,让你觉得不虚此生。

20200621日偏食蒙德里安拼图
玫瑰星云
日偏食的过程
月半弯