曝光图像融合算法之DeepFuse

曝光图像融合通常的应用场景是HDR,传统的图像融合算法分为两类,一类是像素级的图像融合,通过将图像不同频段分离,在像素层及进行融合,另一类是基于变换域的方法,把图像变换到频率、小波域进行图像融合,最后再反变换回来,有些类似于同态滤波的形式。博主之前介绍过Mertens Exposure Fusion、Pyramid Blending、Possion Blending等都是经典的传统图像融合算法。

传统图像融合算法在融合曝光程度差异小的图像时非常有效,但是图像之间曝光差异程度大的时候融合结果就会出现瑕疵,事实上极端曝光情况下的图像融合具有非常大的挑战,这篇博客介绍一种基于无监督的图片融合算法DeepFuse,看名字就知道这是一种CNN的算法实现。

阅读更多

使用word发布wordpress博客

WordPress后台古腾堡编辑器越更新越用不习惯,加之博主最近网络变差之后,就一直寻求wordpress本地编辑博客的工具,之前一直使用windows live writer,WLW用起来挺顺手的,事实上windows live系列软件即使多年不更新,依然好用,只是偶尔换一台计算机就需要安装下软件,有时候临时使用本地编辑器编辑博客,最近突然发现,word也可以很轻松的把内容发布到博客,写一篇随笔。

阅读更多

保边滤波之选择性模糊

博主之前的博客中介绍了数种保边滤波算法,它们滤波器设计的共性就是,同时考虑空间信息和灰度信息,这次要介绍的选择性滤波也是一样。选择性滤波是在一定空间领域内,选择灰度值范围进行加权平均(这一点和surface blur是一样的,与surfaceblur的不同是,surface blur是根据灰度值是否接近计算权重,选择性模糊是根据像素数量计算权重)。所以选择性模糊的一大好处就是,知道领域的直方图就可以完成滤波计算了,核心问题变成直方图统计之后,算法复杂度就大大降低了,在领域半径急剧增加时,可以体现优势。

阅读更多

自动对比度和自动伽马

在图像处理后期,常常会拿Photoshop做实验,所以开始研究Photoshop里面的算法。Photoshop中的算法都已经商业化,有些甚至原理非常简单,但是简单并不代表不好用,所以记录下。

自动对比度的设置在 调整->色阶 中,我们可以看到,算法主要有三个参数,阴影、中间调、高光。

阅读更多

加权中值滤波

中值滤波是经典的非线性滤波,教材中都会介绍其处理椒盐噪声的作用。而加权中值滤波就是在窗口内的每一个像素都乘以一个相应的权值,然后用加权后的值进行排序,累加权重值等于所有权重值的一半使停止,使用此时的像素值替换中心像素,像素的权重通常是相似度,这种改进可以滤除更多形态的噪声。

通常我们使用中值滤波都会非常谨慎,因为中值滤波非常慢,不断的排序对现在的GPU架构非常不友好,那么加权中值滤波使用时的核心就是速度考量了。这篇博客介绍一篇论文:100+ Times FasterWeighted Median Filter。

阅读更多

SSH通过公钥登录并执行命令

配置ssh自动登录脚本进行远程管理时常常需要手动输入密码,Powershell开发者表示永远不会开发保存密码的功能,因为这样太不安全,那么我们如何才能省去手动输入密码的步骤呢,答案就是ssh,配置ssh登录更为安全和方便。

阅读更多

Halide(五)算法调度

这篇博客应该紧跟在第二节  Halide(二)算法描述 后面的,也是对官方教程的笔记。前面介绍了如何用Halide描述算法,进行调试,这一节就是讲如何对去调度算法,排算法的流水,让算法运行更快。

算法调度是一个很深入的课题,牵扯都各种平台、算法,这篇博客也仅仅是对官方教程第四节到第八节的简要笔记,记录一下Halide的相关API。

阅读更多

Halide(三)Buffer与cv::Mat的相互转换

目前OpenCV的NN模块中已经有Halide一部分代码,可以通过 net.setPreferableBackend(DNN_BACKEND_HALIDE); 告诉OpenCV NN引擎尽可能使用Halide进行计算。除非以后OpenCV完全实现Halide的运行机制,否则在图像处理任务中,Halide与OpenCV协同工作是不可避免的。这篇博客主要介绍Halide的图像类型和OpenCV图像类型的相互转化。

阅读更多

Halide(二)算法描述

基本语法和规则一定从官方教程开始,这篇博客是官方教程前几节的简要笔记。主要介绍 Halide 算法描述的语法规则、变量打印和调试、算法对ROI和padding的处理。

Halide(五)算法调度 是紧跟在本博客之后的章节,都是对官方教程的笔记,(三)和(四)是一些环境和常用算法的穿插,不关心可跳过。

阅读更多

Halide(一)环境配置

在工业生产环境中,算法从设计到落地一般跨度比较大。尤其是计算密集的图像处理算法,要达到比较高的效率,就必须要在数据临近、数据复用、计算并行等方面做均衡,算法实现者通常需要深入了解该算法,才能取得比较好的优化。为了降低算法实现过程中开发者的负担,要把算法设计和实现相分离开来,已经有多重解决案例,其中较为典型的就是Halide。

Halide就不多介绍了,毕竟是在Pixel2 HDR Plus上用过的,官网:https://halide-lang.org,上面有很多详细的教程和文档。Halide主要分为两部分,第一部分是要描述需要计算的内容(计算在算法层面的流程),第二部分是规划计算,把计算并行起来、分块儿、数据复用、顺序重排,以实现更高的性能。博主认为第一部分是比较容易的,官网的教程看一遍就可以理解,自己再跑下demo,而第二分部取决于使用的硬件,如果调试优化,需要更多时间去摸索(毕竟我们使用halide是为了获得比较高的性能,减少部署开销)。

这篇博客主要介绍windows下配置halide开发环境,linux配置开发环境比较简单,并且官网已经写的很详细了,只在最后会简要讲下linux配置开发环境步骤中官网没有提及的部分。

阅读更多

看一看泄露的Windows源码(一)源码目录结构

昨天有一份42.9G的windows源码包泄露出来,包括多个Windows、Windows Searver发行版的源码,最重要的是Windows XP和Windows Server 2003目前依旧运行在很多老旧的电脑上,如果有漏洞被拿来利用,可能产生很严重的危害。

博主在数年之前就拿到过Windiows Server的源码,但是代码很杂,也编译不了,不过这次源码泄露范围更广,在各个社区也有分析,并且已经有一些人编译成功了(本来还以为需要微软内部的工具集,看起来泄露的压缩包里都有了,微软糗大了),可以跟着学习一波,先简单看下,能不能从里面抽出一些有用的工具。

阅读更多

《以奋斗者为本》读书笔记(一)价值创造和评价

博主对华为存在许多负面看法,华为令人痛恶的加班文化、奋斗者协议、利用司法和公关力量对员工的控制和胁迫,都是博主十分排斥的(当然博主是个局外人,仅代表个人看法)。最近逛华为的体验店,也切实感觉到,如果不与苹果对比,华为在消费产品确实做得不错,华为在通信上亦是实力强劲。作为一家商业公司而言,华为确实实现了高速增长,也为社会创造了不少财富,相比于躺着赚钱的互联网和金融,在需要站着赚钱的制造业上的成功更让人敬佩。

此时中美战略对抗亦进入一个新阶段,前段时间拜读了大火的《美国陷阱》,也是把全球企业对抗背后的国家较量展示的淋漓尽致,亦体会到全球市场竞争的实质就是和平时期的战争。而于中国而言,华为在此时的意义不言自明,博主亦有兴趣了解华为的企业文化,理解华为内部管理和行动的准则。这篇博客是对华为内部管理培训教材第一章和第二章的整理,目前只是细碎的笔记,留以后来有需要的时候索引和扩充。

阅读更多

Image Watch支持自定义的图像类型

Image Watch插件是为了满足OpenCV可视化图像处理调试而开发的插件,天然的支持OpenCV各种图像类型。如果我们要支持自己的图像类型在Image Watch中显示,那么应该怎么做呢?
有两种方法可以使用 Image Watch 来显示自己的图像,一是使用Image Watch自带的显示内存操作,使用@mem(img_ptr,type,width,height,stride) 来显示,二是使用Image Watch的类型拓展,加入自己的类型的配置文件即可。

阅读更多