基恩士的浓淡补正算法(Shading Correction Filter)的模拟实现。
知道这个算法应该有很久了,主要当时在意2个事情,一个是这个名字的翻译是在是搞笑,第二是这个算法的效果。不过一直以来都十分好奇这个算法是怎么实现的。因为之前一直无法实际的用基恩士的软件平台用不同的图片去测试这个算法的不同结果,故而无从分析和总结规律,但是恰好最近有朋友能帮这个忙,获得了一些测试数据,也基本分析出了这个算法的大概。 我们首先看看这个算法的官方文档的说明:
其中文的参考界面如下图:
参数很多啊。
其中补正方法里有4种方法:平均值补正、中间值补正、阴影补正、高速阴影补正等。当选择平均值补正和中间值补正时,我们发现下面的抽取大小和抽取方向都变为不可用了,所以就是说明他们不需要这个参数。就平这一点,我们其实就可以猜到这个算法的一个基准数据,比如这个平均值补正,结合其帮助文档里说的,就可以猜测到他是以全图的平均值为一个基准数据进行后续的处理。那个中间值补正,我原以为他是用中值滤波来做的,但是一看没参数可选,后来一想也就是用全图的中值(用直方图做统计,累加直方图数据到图像像素量一半时那个值)作为计算依据的。
当选择阴影补正或者高速阴影补正时,可选择抽取大小和处理方向,文档里说什么基于抽取大小生产什么曲线,我感觉有点带偏了,应该就是某种模糊吧,所谓高速啥的,应该指不同类型的模糊。
在明暗抽取中,他有明部、暗部、明暗和明暗独立四个选项,其实所谓明暗也就是各个像素点和基准数据之间的比较,当选择明时,保留大于的部分,选择暗时,保留小于的部分,明暗都选择,我原以为是明暗的结果相加求平均,但是实际测试好像真的不是,但是也没有发现其他的办法。
当选择明暗独立时,下部的增益和出去干扰旋向会增加明部和暗部的独立设置。 这里的增益其实就是一个线性的放大系数,去除干扰是一个offset项目,类似于
y = gain * diff + offset;
这样的一个表达式吧。
下面的对比度平均化没有去研究他,感觉作用不是很大,范围外参照其实没啥,就是决定了边缘像素如何处理,选择on,边缘部分可以参考超出的位置的值(前提是要有).off应该就是选择了镜像或者重复边缘之类的吧。 次数这个参数也是垃圾参数。
找了几个图做了测试,通过调整一些参数,可以达到不错的效果:
当然这些图都是我精心挑选的来表示这个算法很好,实际上对于很多图像,我们是得不到理想的结果的。所以每个算法都有其局限性和适应范围。
一个值得注意的事项是,抽取方向的参数也还是有一定的作用,比如上面的后2个图,就必须分别用X和Y方向的抽取,才能获得有效目标,而抽取大小也是有一定的限制的,必须合适,方可有效。
这个算法的速度的核心还是后台使用的各种模糊或者其他的基础算法,本身的计算量确很小。
本文Demo下载地址: https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar,位于Detection-》Auxliary Enhance-》 Shading Correction Filter。里面的所有算法都是基于SSE实现的。
如果想时刻关注本人的最新文章,也可关注公众号:
基恩士的浓淡补正算法(Shading Correction Filter)的模拟实现。的更多相关文章
- 从局部信息推测基恩士的Removing BackGround Information算法的实现。
最近从一个朋友那里看到了一些基恩士的资料,本来是想看下那个比较有特色的浓淡补正滤波器的(因为名字叫Shading Correction Filter,翻译过来的意思有点搞笑),不过看到起相关文档的附近 ...
- 三维网格补洞算法(Poisson Method)
下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原 ...
- 三维网格补洞算法(Poisson Method)(转载)
转载:https://www.cnblogs.com/shushen/p/5864042.html 下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网 ...
- PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)
PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...
- 三维网格补洞算法(Radial Basis Function)
在逆向工程中,由于设备或模型的原因,我们获取得到的三维模型数据往往并不完整,从而使得生成的网格模型存在孔洞,这对后续的模型分析会造成影响.下面介绍一种基于径向基函数(RBF:Radial Basis ...
- Linux用户身份(命令详解与补正)
基于Red Hat Enterprise Linux 7.5 Linux中的root就是存在于所有类UNIX系统中的超级用户,持有最高管理权限,能添加/删除用户.开关机.关闭或开启硬件或者系统服务等, ...
- 三维网格去噪算法(bilateral filter)
受图像双边滤波算法的启发,[Fleishman et al. 2003]和[Jones et al. 2003]分别提出了利用双边滤波算法对噪声网格进行光顺去噪的算法,两篇文章都被收录于当年的SIGG ...
- PID算法的理解及场景模拟
增量式PID算法的简化版之后的公式: △u(t)=Ae(t)-Be(t-1)+Ce(t-2) △u:PID控制器输出的下一时刻的调整量 e(t):PID控制器在当前时刻的状态变化量-给定值 e(t-1 ...
- 算法笔记_224:夺冠概率模拟(Java)
目录 1 问题描述 2 解决方案 1 问题描述 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能. 假设有甲.乙.丙.丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表 ...
随机推荐
- Cookie&&Session&&jsp入门
会话技术 会话:一次会话中包含多次请求和响应. 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Coo ...
- Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维
传送门: https://codeforces.com/contest/1493/problem/B 题目: Example input 5 24 60 12:21 24 60 23:59 90 8 ...
- python 包之 redis 数据库操作教程
一.安装 redis 是一个 Key-Value 数据库 Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型 pip inst ...
- 音视频基本概念和FFmpeg的简单入门
写在前面 最近正好有音视频编辑的需求,虽然之前粗略的了解过FFmpeg不过肯定是不够用的,借此重新学习下: 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视 ...
- CAS如何解决ABA问题
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. CAS如何解决ABA问题 什么是ABA:在CAS过程中,线程1.线程2分 ...
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- web框架的本质、MVC框架MTV框架的介绍
1.web框架的本质 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请 ...
- 谈谈markdown
谈谈markdown 欢迎关注我的博客,️点他即可. 最近一年开始学习有关编程的内容了. 迷上代码的我开始接触到一些好玩的东西,我发现很多事情都可以由代码来完成,甚至是ppt.同学就经常说我疯掉了,连 ...
- 初始 Django
Python 知识点:函数,面向对象 前端开发:HTML,CSS,JavaScript,jQuery,BootStrap MySQL 数据库 Python 的 WEB 框架 Flask:轻量化,第三方 ...
- 804. Unique Morse Code Words - LeetCode
Question 804. Unique Morse Code Words [".-","-...","-.-.","-..&qu ...