在低光照的夜间,摄像头采集的画面通常是一片昏暗,画面清晰度要远远低于肉眼。而随着实时音视频应用技术的发展,我们已经看到了各种画质增强的视频增强技术,那么是否存在一种技术,可以使视频在低光照条件下看起来比实际情况更清晰或接近实际情况呢?

卧室的墙和灯,在低照度增强之前和之后
低照度图像增强是指对暗光条件下拍摄的图像进行画质增强,使其变得清晰或接近于肉眼效果。我们总结了一些与低照度相关的强需求场景,具体如下:
在夜间条件下,监控摄像头或汽车安全摄像头的视频质量和清晰度至关重要。

夜晚的乌镇牌楼,低照度增强前后的对比
在公共场所设置监控摄像头的目的是为了监视和记录。然而,夜间视频记录在光线不足的情况下大多是黑暗和不清晰的,不能作为刑事案件的线索或证据提供明确和有力的支持。
而汽车安全摄像头的视频记录对于交通事故的处理至关重要,越清楚的视频包含更多的细节,有助于交警更好更快的处理。
当涉及到互联网娱乐和社交场景时,我们希望即使在暗光条件下也能清楚的看到对方的脸。
这是发生在我们客户上的一个真实事件。该客户是一个颇具规模的网络交友平台,有一个用户不喜欢在她的卧室里开灯再加上她本身是偏黑色的皮肤,结果她的网友在这种昏暗的环境中看不到她的脸。我们的客户对用户保持了高度的尊重,所以希望能够在不开灯或光线不足的情况下也能改善用户的体验。

我们的 Avatar 技术能够根据输入图像对人物进行实时建模。该技术中的人脸识别、人体关键点识别等多种和视频相关的算法都对输入图像质量有着比较高的要求。算法能够正确的识别到人脸和躯体位置取决于输入图像是否足够清晰。
在输入图像黑暗或模糊的情况下,识别人脸和身体轮廓是非常具有挑战性的,所以最终的输出效果会受到影响。
为了满足用户需求,解决在光线不足及条件下视频质量低下的这些问题,我们通过自研 AI 算法对低光照视频进行增强。
低照度增强的主要作用是提升画面的亮度,同时还要考虑以下几点限制:
传统算法很难同时考虑上述几点要求。深度学习方法也可用于低照度图像增强,但它在内存、CPU 和 GPU 上有一定的消耗,其弊端如下:

夜晚的社区走廊,在低照度增强之前和之后
传统算法在进行视频低照度增强的同时,对画面中的所有内容都按照相同的规则进行处理,容易导致画面中的亮区灰度被过度拉伸,使得画面出现过曝。
而深度学习方法的模型一般较大,运算量大,功耗大,很难在移动端或边缘设备上进行实时处理,覆盖机型极其有限。
为了解决传统低照度图像增强带来的问题,我们做了以下几个方面的改进:

夕阳下的乌镇水道,在低照度增强之前和之后
FHD 视频是指具有高帧率的高清视频,它能给用户更好的观看体验。由于采用了深度学习算法训练得到的 2D/3D-LUT,该算法能在保证增强质量的同时进行实时处理。
我们相信 "少即是多 "的理念。我们对不同亮度的区域做不同程度的处理,避免过曝,使视频看起来自然、舒适。当我们检测到视频画面足够亮时,我们甚至不进行任何处理。
得益于离线深度学习方法和其他创新措施,ZEGO 低照度技术即使在低端或老旧智能手机(如小米 2S 或 iPhone 4S)和物联网设备上也能有出色的性能表现。
ZEGO 低照度技术已经在大量的极端照明情况下进行了测试,能够在极端黑暗或明亮的条件下良好工作。我们还与其他友商解决方案进行了对比测试,发现后者在极端的照明条件下会出现炫光或闪烁等异常情况。
ZEGO 即构科技拥有一支专门从事视频增强的人工智能研发团队,并且已系统的建立了一套复杂的人工智能画质增强算法。该团队多年来深耕图像处理技术,不断超越现有的技术手段,即使在极端的低照度场景,也能提供令人惊艳的画质,同时能够在边缘设备上以高分辨率、高帧率、进行实时运行。
深度学习技术虽然能对增强低光视频起到很大的作用,但它很难在低端机型上实时运行起来。
我们使用模型训练得到的 2D/3D LUT 并在运行阶段加载该查找表用于低照度增强。基于该查找表,算法的实际算力和内存消耗都非常小,使得低端机型也能进行实时的画质增强。
该算法会对整个图像进行扫面并评估不同区域的亮度水平。我们只对低光照且包含有效信息的区域进行增亮而不会处理那些已经足够亮的区域。
为了给用户更好的使用体验,我们会在一小段时间里动态调整低照度的增强水平,使其能够平稳过渡到目标亮度,避免环境光亮的忽亮忽暗导致的画面出现闪烁。
如果不考虑增强效果的过渡,当环境光出现频繁变化时会导致算法来回切换增强模式从而使得画面出现闪烁。该算法会在一定时间内进行渐进式增亮,保证增亮效果平稳过渡,使得肉眼看起来感到自然和舒适。所有这些努力背后的理念是以人为本。
在实际情况下,光线可能是闪烁的,两个连续帧之间的光照可能会出现比较大的差异。我们不会对相邻两帧之间进行光照变化的检测,避免额外的计算消耗。
检测光线变化会消耗一定的计算资源,这将减慢处理速度并引入额外的延迟。除此之外,检测算法很复杂,它的判断可能会出错。考虑到这些限制,我们决定避免检测帧间的光线变化。
图像噪声是图像增强中的一个经典问题。市面上有各种处理图像噪声的算法,我们在经过全面的实验和比较后总结出以下几个原则:
ZEGO 即构科技低照度处理技术能够智能感知环境光亮程度,并智能调整图像亮度到符合人眼舒适程度,一切以符合用户的感知为标准进行暗场景智能化调整。
未来,即构科技视频算法团队也将继续深入用户需求,致力为用户提供更加舒适的视觉体验!
我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("