保边滤波之基于测地距离的滤波与局部拉普拉斯滤波_测距滤波csdn-程序员宅基地

技术标签: 计算机视觉  图像处理  人工智能  

(1)基于测地距离的滤波

给定图像I及其Hard Mask M,其中M(x)∈{0,1} ,M(x)=0表示x属于前景,M(x)=1表示x属于背景,图像中某点x到前面Hard Mask的测地距离为
在这里插入图片描述
在这里插入图片描述

???d(a,b)表示的是两个点之间像素值与像素位置之间的调和平均,而双边滤波也是用像素值以及像素位置表示,这两者都加入了像素值和像素位置,有什么区别吗?
基于硬掩膜做保边滤波:弄出255张掩膜,图像里面所有像素值为0的点在第一张掩膜的相应位置像素值标为0,以此类推,255张掩膜都这么做。再算图像里面每一个像素到0~255张掩膜的测地距离,e的-测地距离次方*对应像素值,再叠加起来。
针对Soft Mask的距离,考虑每个像素点的Mask值,测地距离为
在这里插入图片描述

基于soft mask做保边滤波,把所有的像素分成了k个level (μ1,μ2…μk),根据这k个level计算出k张Soft Mask 在这里插入图片描述

所以像素值离均值越近越近,执行度越高。
计算每个像素点到每个Soft Mask的测地距离在这里插入图片描述
并计算权重为:在这里插入图片描述

滤波后的图像为:在这里插入图片描述

(2)局部拉普拉斯滤波

用mask强行融合两个图像的话,边界交界处不平滑,有个拼接的缝。局部拉普拉斯滤波可以得到自然的处理结果。

利用局部拉普拉斯滤波图像融合过程:
(1) 为两幅图像生成拉普拉斯金字塔;
(2) 为Mask图像生成高斯金字塔;
(3) 将两幅图像的拉普拉斯金字塔按照Mask逐层合成一个拉普拉斯金字塔;好处:拼缝处高斯模糊了。
(4)重构融合的图像。如此接缝处是平滑的,并且包含各个尺度的特征。

???在重构拉普拉斯金字塔的时候我们要得到一些高频信息以及低频信息,然而高频信息却是通过高斯金字塔图层减去拉普拉斯金字塔图层来得到的,这样显然是合理的。但是为什么不用拉普拉斯变换来直接得到这些高频细节信息呢?拉普拉斯变换不就是通过拉普拉斯算子对图片进行判断来保留一些高频信息吗。

如果一个像素与其高斯滤波后的对应像素差异较大,那么该像素就在边缘上;如果一个像素与其高斯滤波后的对应像素差异较小,则其为细节。由此定义一个对于细节处理的函数与一个对于边缘处理的函数:在这里插入图片描述

其中i为某个像素,g是高斯滤波后i对应的像素;α控制模糊的程度(对小纹理区域梯度压制的程度),β控制动态范围扩展(缩小)的程度;σr是分辨细节和边缘的阈值。在这里插入图片描述

图一:某一点梯度在[g-sigma, g+sigma]范围内,是细节,α大于1,压制;梯度在[g-sigma, g+sigma]之外,不变。
图二:某一点梯度在[g-sigma, g+sigma]范围内,是细节,α小于1,扩展;梯度在[g-sigma, g+sigma]之外,不变。
第三个图是对图像在[g-sigma, g+sigma]之外做色调映射,α=1于是[g-sigma, g+sigma]范围内不变,而β在0-1之间,于是把动态范围缩小;
第四个是对图像在[g-sigma, g+sigma]之外做反色调映射。α=1于是[g-sigma, g+sigma]范围内不变,而β大于1,于是把动态范围放大扩展;
最后一个图是对图像在[g-sigma, g+sigma]之外做色调映射,在[g-sigma, g+sigma]之内做细节增强。在[g-sigma, g+sigma]之内α属于0~1,对该区域梯度压制,而β在0-1之间,于是把动态范围缩小。

双边滤波器:在这里插入图片描述

未归一化双边滤波器:在这里插入图片描述

归一化系数:在这里插入图片描述

归一化与未归一化的双边滤波器关系:在这里插入图片描述

其中,在这里插入图片描述

这个式子的意义就是未归一化的双边滤波结果是归一化的双边滤波结果和输入图像的加权平均。所以在一些边缘区域,αp比较小,这样未归一化双边滤波的输出结果就更像原图像一些,通常来说未归一化双边滤波会比归一化双边滤波软一些。

在这里插入图片描述

P1的边缘有伪像,p3是未归一化的双边滤波器,边缘没有伪像,p4是拉普拉斯滤波,更加的sharp。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/passwordee/article/details/127833640

智能推荐

tornado 异步执行shell命令并返回执行结果_486cpu tornado shell命令-程序员宅基地

文章浏览阅读1k次。思路:通过tornado框架构建web服务器,通过执行后台命令程序获取监控目标状态或监控结果,根据状态或结果,通过websocket发送信息到前端进行相应的展现。问题:tornadoweb框架是异步处理的,其核心是将事务都放入到ioloop异步循环中。但通常使用python调用shell脚本或者执行的shell命令,以及python打开文件的操作都是同步阻塞模式,无法加入到ioloop中。在下面的连接中提到了如何将shell命令通过异步方式执行并获取执行结果。https://www.cn..._486cpu tornado shell命令

设计类似于抖音、小红书、微博等方式的主题点赞与评论的数据库表_小红书 评论 表结构-程序员宅基地

文章浏览阅读2.8k次。转载请注明Garcia主题设计: 主题ID、用户ID、主题标题、主题城市、主题位置名称、主题位置详细地址、地理经度、地理纬度、 主题展示内容(100)、主题展示媒体文件路径(List图片名称)、点赞数、评论数、收藏数,转发数、 是否为转发主题、被转发主题ID、被转发主题发行人ID、被转发主题发行人名称、创建时间、更新时间主题内容设计: 主题ID,主题完整内容主题点赞表: 主题ID、用户ID、状态(1有效,0取消)主题主评论表(根据点赞数排序)..._小红书 评论 表结构

牛客练习赛76_牛客练习赛76b-程序员宅基地

文章浏览阅读141次。牛客练习赛76B zzugzx (vs) Kurisu是一个博弈游戏注意到(m+1)^n<=5000那么我们是可以直接考虑爆搜的总共N个回合,那么两个人就是2*N次操作定义f[a][b]代表当 ,zzugzx 选了a的数,Kurisu选了b的数,zzugzx赢的概率a和b分别是n位m+1进制的数,代表n回合他抽到1-m的数放在1~n哪个位置#include<bits/stdc++.h>using namespace std;int ok[5000][5000];dou_牛客练习赛76b

物联网IOT选型wifi路由模块串口透传不得不知的秘密_wifi透传与iot-程序员宅基地

文章浏览阅读1.2k次。2020年一场突如其来的疫情灾难袭来,各大经济市场在不同程度被按下了“暂停键”。物联网控制作为新兴行业优势凸显出来,其无接触式的交互方式,远程控制,智能控制车间,给疫情期间的人民带来安全、智能的生活体验。这些物联网控制大多用到了网关信息桥梁来传输—wifi 路由模块。但你知道吗?工程师们想要选择高性价比的wifi路由模块做串口透传,不得不知道wifi路由模块的两大区分:mcu+wifi模块和C..._wifi透传与iot

Ubuntu 17.10 + Cuda9.0 + CUDNN + Tensorflow最正确姿势排坑_cuda9.0 tensorflow1.7 ubuntu-程序员宅基地

文章浏览阅读4.3k次。 博主之前一直使用16.04与win10双系统,但是由于当初安装系统时候引导安装的有点问题,导致ubuntu使用起来一直有些毛病,搞了好久也没搞好,索性就想到干脆重新把系统装一下。作为一个爱尝鲜的用户,使用了这么长时间平平淡淡的长期稳定支持版,还是想要换换口味试试最新的17.10版本,不过鉴于长期支持版的18版本再过不久就会放出来了,估计17.10的寿命和用户数量也不会太多了,也正是这个原..._cuda9.0 tensorflow1.7 ubuntu

笔记_数学建模_数学模型-机器学习&机器学习常用算法_机器学习数学建模-程序员宅基地

文章浏览阅读481次。《数学模型-姜启源》——《机器学习》1、数学规划 (包括全部的规划问题)线性、非线性、动态规划、多目标规划、整数规划2、传染病模型(微分方程)3、稳定性模型包括捕鱼、人口、军事竞赛等等4、概率模型5、博弈模型6、计算机虚拟(数值模拟、动态仿真、蒙特卡罗算法)7、调度问题 (智能算法、遗传算法、多目标规划、数学规划、dijstra算法、Floyd算法)8、智能算法(遗传算法、模拟退火算法、蚁群算法、神经网络)9、微分方程所研究对象与已知因素之间可以用微分方程的形式表示(常微分方程(_机器学习数学建模

随便推点

CUDA c programming guide_cude c program model-程序员宅基地

文章浏览阅读3.1k次。http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#axzz4FIp5fBgMCUDA C Programming GuideChanges from Version 7.0Updated C/C++ Language Support to:Added new_cude c program model

Redis(十八)-Redis的数据结构之整数集合_redis int64 9.2233720368548e+18-程序员宅基地

文章浏览阅读2.4k次。本文简单介绍了整数集合这种数据结构,整数集合是集合键的底层实现之一,是专门用来存储整数的,整数集合的底层实现是数组,这个数组以有序,无重复的方式保存集合元素,在有需要时,程序为会根据新添加元素的类型,改变这个数组的类型,升级操作为整数集合带来了操作上的灵活性,并且尽可能节约了内存。_redis int64 9.2233720368548e+18

解决idea protobuf插件(intellij-protobuf-editor)不生效 问题_protobuf插件启用失败-程序员宅基地

文章浏览阅读3.7k次。公司项目内部各个模块之间的交互,是通过谷歌的protobuf来进行交互的。各个protobuf之间又存在相互引用,如果不借助强大的ide识别各个文件之间的引用,方便点击类名字段名来进行跳转,则很难捋清楚之间的关系。这就用到了我们今天的主角——intellij-protobuf-editor。intellij-protobuf-editor的安装十分的简单,简单某度一下,直接在idea的插件中心下载安装就可以了。但是有的小伙伴安装后,可能会发现,自己项目内的protobuf文件并没有被intellij_protobuf插件启用失败

求斐波那契前n个数c语言,C语言 计算斐波那契数列的第N个数-程序员宅基地

文章浏览阅读2.5k次,点赞4次,收藏4次。何为斐波那契数列?斐波那契数列就是:1 1 2 3 5 8 13 21 34……这样一串有规律的数,即从第三个数开始,该数字为前两个数字之和那么要计算第N个数字,就必须知道N-1,N-2的值…以此类推递归算法实现(首选)递归算法,代码简介但是效率低int D_fib(int n){if(n == 1 || n == 2) //第一个和第二个数均为1return 1;else{return F_f..._计算斐波那契数列的前n个数(1≤n≤20),即1, 1, 2, 3, 5, …,55,并按每行打印5个数

svc: failed to register lockdv1 RPC service (errno 111).-程序员宅基地

文章浏览阅读1.6k次。挂载时,用mount -t nfs 192.168.1.105:/ /mnt/nfs时出现svc: failed to register lockdv1 RPC service (errno 111)改为mount -t nfs -o nolock 192.168.1.105:/ /mnt/nfs就行了。全部配置步骤:1、进入配置文件,输_failed to register lockdv1 rpc service (errno 111)

python判断数字位数_Python中的位数,之,判断,数字-程序员宅基地

文章浏览阅读3.9k次。这里是一段防爬虫文本,请读者忽略。本文原创首发于CSDN,作者IDYS博客首页:https://blog.csdn.net/weixin_41633902/本文链接:https://blog.csdn.net/weixin_41633902/article/details/107440627未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!写在开头的话请记住:实践是掌握知识的最快方法如果..._python判断一个数是几位数

推荐文章

热门文章

相关标签