自动照相馆,第1部分

一年半以前,我正在浏览一位知名俄罗斯肖像摄影师的博客,其风格广为人知,这种想法thought绕在我的脑海里,为什么不只将相机放在三脚架上,一次在工作室里放灯,设置所有相机设置并使用给定的图像进行自动照片处理个人资料? 博客照片很棒,但彼此非常相似。



由于我属于不知道如何在电话上拍照并且喜欢照相机的人,所以我非常喜欢这个主意。 是的,我看到了各种各样的照相亭和照相亭,但是这些设备的开发人员甚至还没有掌握制作正常色彩的能力。 我认为这是因为开发人员不了解摄影。


这样一来,就不会发生与其他人(在最初阶段没有让步或停滞不前)相同的事情。 我认为最重要的事情是使所有事物都整体运行,而不是抛光某些单独的组件以使其发光。 而且由于我的开发时间很少,在主要的全职工作后,我的最大力量为1-2小时,而周末则更多,因此,您应该尽量不要学习任何新知识,并充分利用可用的知识。


我想在本文中讲述我遇到的问题以及如何解决这些问题。


关于拍摄条件和设备的一些解释:我只考虑了具有APS-C传感器最低要求的相机和专业摄影棚闪光灯,这是保证在任何时间,任何白天或晚上提供高质量图像的唯一方法。


所有身材不同的人


当我将相机放在三脚架上时,我惊讶地发现的第一件事是,它不容易装入框架,甚至没有很好的构图。 当您往返于相机时,如果将其正确放置在特定地点的特定人员身上,整个构图也会变差。 是的,您可以放一把椅子,说您需要坐在椅子上,但这不会很有趣。 您仍然可以裁剪照片,但是质量会大大下降。 好吧,我选择的最后一种方法是使相机自动对准目标。


这里也有2个选项。 正确-光轴始终是水平的,相机会上下移动,并且更容易实现-倾斜调整相机的位置。 在这种情况下,可能会有一些失真,但是如果您记得相机的角度,则可以在处理过程中很好地校正失真。


由于我几乎没有制造任何类型的熨斗设备的经验,因此我试图找到一种可以随时使用的东西。 我发现了几台1000美元范围内的全景拍摄设备,所有这些设备都可以手动控制倾斜和转弯,以及自动拍摄全景照片。 但是不可能通过计算机来控制它们。 还有很多控制摄像机的设备,例如用于从摄像机起重机拍摄的设备。 具有数字控制提示的优质设备非常昂贵,并且尚不清楚是否有可用的API。 结果,我在一个受欢迎的网站上发现了这样的设备:



电子产品一无所获。 一年前,只有我购买的带有集尘器发动机(带集成变速箱)的版本。 有必要以某种方式从计算机管理此事物。 在我们研究所的论坛上,他们建议最经济的方式是使用Arduino。 所以我做到了。 我购买了另一个电动机护罩,因为那里的发动机由12伏特供电。 在尝试将其打开后,我感觉到集热器电动机可能给人带来的所有痛苦-它们不仅不可能以给定的角度旋转,而且“稍微转动”也不容易。 我的第一个想法是在那放一个步进电机。 很长一段时间以来,我一直在寻找一种适合该平台的步进电机,而不是一直停在那里但找不到的步进电机。 然后,他开始考虑如何将伺服器拧入,甚至买了它,但也无法提出任何可靠的建议。 下一个想法是将加速度计固定在平台上,然后逐渐将平台旋转到预定角度。 我用陀螺仪和指南针拧紧了加速度计,但这非常容易出错,我也拒绝了这个想法(一个月后,我意识到,由于加速度计的故障,相机的中文电源是罪魁祸首,干扰没有那么严重)。 然后我不小心阅读了伺服的布置方式。 我喜欢拧一个电阻来测量角度的想法,但是我不得不以某种方式将其连接到皮带轮上。 我不得不学习FreeCAD并一生中第一次使用3D打印。 简而言之,在处理完文件后,便可以收集所有内容。



我不得不用程序为arduino设置一个给定的角度来折磨自己,因为平台上的相机具有很大的惯性矩,并且不会立即停止。 但是最后,结果证明该角度的设置精度约为1度。


现在关于自动瞄准-这个想法很容易使面部位于镜框的顶部。 因此,您只需要查找一张脸并在实时取景的每张照片中调整平台。 我对识别人脸一无所知,因此在本教程中使用了Haar标志(haar级联)。 我发现对于个人而言,这种方法行不通。 它在每个帧上除了需要的东西之外还会发现一堆垃圾,并消耗大量的处理器时间。 然后,他找到了另一个如何通过OpenCV使用神经网络的示例。 神经网络工作正常! 但是直到我开始并行处理照片时,我才感到高兴。 Linux以某种方式开始在平台管理线程和照片处理过程之间分配处理器时间。 他走上阻力最小的道路-他开始在视频卡上做鬼脸。 一切开始完美运行。


尽管我不想深入研究细节,但是我还是进行了一次小测试。 我购买了英特尔神经计算棒2-我试图依靠它而不是视频卡。 我的结果大致相同(数字-一幅尺寸为800x533的图像的处理时间)-


  • 酷睿i5 9400F-59
  • 酷睿i7 7500U-108
  • 酷睿i7 3770-110
  • GeForce GTX 1060 6Gb-154
  • GeForce GTX 1050 2Gb-199
  • 来自OpenVINO的带有opencv的Core i7 3770,Ubuntu 18.04-67
  • 来自OpenVINO的带opencv的Intel Neural Compute Stick 2,ubuntu 18.04-349

事实证明,在较小的一侧处理300号尺寸的图像就足够了,以便可靠地定位站在框架中全高位置的人的脸部。 在此类图像上工作更快。 我目前使用的是GeForce GTX1050。我相信它可以得到很大的改进,但是现在存在一个更加严重的问题。



展览会


必须正确曝光照片已不是秘密。 就我而言,这是更重要的,因为没有修饰。 为了使皮肤缺陷不太明显,照片应尽可能地光亮,处于过度曝光的边缘,但不能过度曝光。


使用闪光灯拍摄时,最终照片的亮度取决于以下参数:


  • 闪光灯功率
  • 闪光灯到拍摄对象的距离
  • 光圈
  • ISO值
  • 从RAW转换时的选项

制作完框架后,我们只能更改最后一个参数。 但是,在较大范围内更改它并不是很好,因为对暗框的曝光进行大幅度的正校正会产生噪音,而在相反的情况下,在明亮的区域可能会出现削波。


TTL(直通镜头)系统用于自动确定闪光拍摄期间的曝光。 其工作方式如下:


  1. 闪光灯发出一系列小闪光。
  2. 此时,相机会测量曝光,对焦并测量到被摄对象的距离。
  3. 根据这些数据,它将计算所需的闪光灯输出。
  4. 闪光灯再次闪光,此时快门打开,即会拍照。

当您可以在拍摄后手动调整照片时,此系统非常有用。 但是,要获得最终结果,它不能令人满意地工作。 如果是这样-我尝试了Profoto闪光灯>100t.r。


我有一个众所周知的情况,闪光灯应始终站立在一处。 因此,您可以简单地通过一个人在太空中的位置来计算曝光量。 问题出现了-如何确定一个人的位置?


第一个想法只是从EXIF到聚焦对象的距离,并且第一帧在RAV转换器中进行很多曝光补偿,而下一帧则调整闪光功率或光圈。 一个人很可能会站在一个地方拍摄很多照片。 但是事实证明,用EXIF编写的距离是非常离散的,对象越远-步骤越大。 此外,对于不同的镜头,到物体的距离采用不同的值集,有些甚至根本无法测量。


下一个想法是使用超声波测距仪。 该设备可以非常精确地测量距离,但是只能测量一米,并且只有当一个人没有穿着吸收声波的衣服时,才可以测量距离。 如果将测距仪放在伺服驱动器上并像雷达一样旋转,它会变得更好一点-它的最大距离为1.5米,这也非常小(如果您在2米的距离内射击,人们会得到最好的)。


当然,我知道即使便宜的手机也已经可以建立深度图并选择性地模糊背景。 但是我不想参与其中。 不幸的是,别无选择。 首先,我想购买2个网络摄像头,将它们组合起来,然后使用OpenCV读取位移图。 但是,幸运的是,我发现许多深度相机已经在自己内部进行了此操作。 我选择了Intel D435(如果有人想购买一个,则在主内核分支中的Linux中不支持它。librealsense存储库中有针对debian和ubuntu的补丁。我必须为fedora修复它们)。



连接完所有组件后,我编写了一个测试程序,该程序可以测量到中心一个小正方形的距离。 因此,此代码仍然有效。 而且效果很好。 当然,您需要从RGB相机中查找图片中的脸部,并计算从闪光灯到该脸部的距离。 但是这些都是未来的计划。


根据人在空间中的位置,有必要计算对曝光的校正。 最初,我想出了一些公式,该公式仅适用于真空中的点光源(实际上,没有反射墙和天花板很重要)。 但是随后,他以恒定的闪光输出进行了一系列拍摄,并通过肉眼在均衡器中调节了曝光,结果证明校正几乎线性地取决于距离。 我使用伦勃朗的照明方案,相机的平面上装有柔光箱的闪光灯。


但是需要进行曝光校正。 理想情况下,您需要更改闪光功率,但到目前为止,我的光阑和添加剂在rav转换器中的变化<1 / 6Ev-。 可以使用手机应用程序通过蓝牙控制我的闪光灯同步。 因此,将来我打算弄清楚协议的安排方式并更改闪光灯的功率。


这是使用TTL和我的方法进行恒定闪光输出的比较。 TTL更稳定,更准确地工作:



品种


当一个女孩(甚至一个男孩)来找摄影师照相时,她(或他)通常想要一张不同计划的照片,一个更大的计划,只有她的脸和更一般的脸是全长的或腰高的。 并非所有人都知道,但最重要的是,通过更改镜头的焦距可以改变计划。 也就是说,一个人总是站立在2米的距离上,如果我们需要全高拍摄,我们会包裹35mm镜头,如果只有脸部是135mm,或者是腰高,则是50mm或85mm。 好吧,或者不要更换镜头并设置变焦镜头。 为了让用户用手在相机上扭转变焦,相机站立在可移动的平台上,突破一束电线,听起来不是很好。 因此,我在速卖通上购买了一包备件,并采用了对我来说无用的伺服驱动器来控制平台并执行以下操作:



这是它的工作方式:



在照相馆进行的首次测试的结果,首先,我想了解一下拍摄照片,在拍摄过程中没有移动任何东西或进行重新配置的多样性:



处理视频:



结果


这些是一些最好的镜头:



就像每个人都要求发布许可一样,如果您认识自己并想删除照片,请写信给我


我为什么要这样做? 这是尚未发生的事情,至少我还没有找到类似的东西。 可能有用-现在有很多专家,例如心理学家,商业培训师,运动培训师,美发师通过博客出售其服务,他们需要大量照片,并且以他们想要的形式,而不是摄影师。 某些人只是不喜欢拍摄时陌生人(摄影师)看着他们。 好吧,最简单的就是为公司活动,展览和其他活动提供娱乐。


我没有描述软件部分,也没有描述照片的处理方式以及有关用户交互的内容,因为已经有太多的文本,因此我将在稍后编写第二部分。 这些要点已经很好地解决了,以便对编程不熟悉的人可以使用该系统。

Source: https://habr.com/ru/post/zh-CN460605/


All Articles