当前位置: 首页 > news >正文

【CVAdd】Filter 滤波器

过滤器

  • 滤波器的一些常用操作
    • 降噪 De-noising
    • 超分辨率 Super-resolution
    • 图像修复 In-painting
  • 图像的离散表示
    • 图像分割成数组
    • 灰度图与彩色图
  • 滤波器操作
    • 平滑处理 Smooth
    • 图像分割 Segmentation
    • 操作满足的性质
  • 线性滤波器
    • 保持不动
    • 左右平移
    • 模糊
    • 锐化

滤波器的一些常用操作

降噪 De-noising

在这里插入图片描述
去除图像上的噪点。

超分辨率 Super-resolution

在这里插入图片描述
将模糊的图像变锐利。

图像修复 In-painting

在这里插入图片描述
修复一些外来因素引起的相关问题。


不论是降噪、超分辨率还是图像修复,其都是在原有图像上进行相关操作。
所以首先我将介绍一些针对图像操作以及图像的基础知识。

图像的离散表示

图像分割成数组

我们可以把图像分割成若干个小方格,其中每个小方格称为一个像素点。所以我们可以称2D图像是由m行*n列个像素构成的。由此,我们将一个图像转化为一个m行n列的数组。数组中的每个元素包含着颜色信息。
在这里插入图片描述


灰度图与彩色图

我们可以将图像分为灰度图像以及彩色图像。
灰度图: 灰度图由单个像素点,通过8位的灰度值(0-255)来表示,所以每个像素点可以表示为: f ( x , y ) = [ 0 , 255 ] f(x,y)=[0, 255] f(x,y)=[0,255]
彩色图: 彩色图由R、G、B三个不同的8位的灰度值(0-255)来表示,所以每个像素点可以表示为: f ( x , y ) = [ r ( [ 0 , 255 ] ) , g ( [ 0 , 255 ] ) , b ( [ 0 , 255 ] ) ] f(x,y)=[r([0, 255]),g([0, 255]),b([0, 255])] f(x,y)=[r([0,255]),g([0,255]),b([0,255])]


滤波器操作

平滑处理 Smooth

在这里插入图片描述
M o v i n g A v e r a g e Moving Average MovingAverage
在这里插入图片描述
公式: g [ n , m ] = 1 9 ∑ k = n − 1 n + 1 ∑ l = m − 1 m + 1 f [ k , l ] g[n,m]=\frac 1 9 \sum _{k=n-1} ^{n+1} \sum _{l=m-1} ^{m+1}f[k,l] g[n,m]=91k=n1n+1l=m1m+1f[k,l]
红色: 1 9 ( 0 ∗ 8 + 90 ) = 10 \frac 1 9 (0*8+90)=10 91(08+90)=10
蓝色: 1 9 ( 0 ∗ 6 + 90 ∗ 3 ) = 30 \frac 1 9 (0*6+90*3)=30 91(06+903)=30
绿色: 1 9 ( 90 ∗ 9 ) = 90 \frac 1 9 (90*9)=90 91(909)=90
橙色: 1 9 ( 0 ∗ 8 + 90 ) = 10 \frac 1 9 (0*8+90)=10 91(08+90)=10

最后构建出的 g [ n , m ] g[n,m] g[n,m] 为:
在这里插入图片描述


图像分割 Segmentation

设定一个阈值threshold,进行分割。将每个像素依次对比像素的值与阈值,大于阈值的设置其像素值为255(黑色),小于阈值的设定为0(白色)。

在这里插入图片描述

在这里插入图片描述


操作满足的性质

其实该性质描述的就是数组的性质。我们将图像转化为数组后,就已经可以将其按照数学模型结构做出调整和解答。

可加性 Additivity
S [ f i [ n , m ] + f j [ n , m ] ] = S [ f i [ n , m ] ] + S [ f j [ n , m ] ] S[f_i[n,m]+f_j[n,m]]=S[f_i[n,m]]+S[f_j[n,m]] S[fi[n,m]+fj[n,m]]=S[fi[n,m]]+S[fj[n,m]]

均匀性 Homogeneity
S [ α f i [ n , m ] ] = α S [ f i [ n , m ] ] S[αf_i[n,m]]=αS[f_i[n,m]] S[αfi[n,m]]=αS[fi[n,m]]

叠加性 Superposition
S [ α f i [ n , m ] + β f j [ n , m ] ] = α S [ f i [ n , m ] ] + β S [ f j [ n , m ] ] S[αf_i[n,m]+βf_j[n,m]]=αS[f_i[n,m]]+βS[f_j[n,m]] S[αfi[n,m]+βfj[n,m]]=αS[fi[n,m]]+βS[fj[n,m]]

可逆性 Invertibility
S − 1 [ S [ f i [ n , m ] ] ] = f i [ n , m ] S^{-1}[S[f_i[n,m]]]=f_i[n,m] S1[S[fi[n,m]]]=fi[n,m]


线性滤波器

保持不动

假设初始图片为:
在这里插入图片描述
线性滤波器为:
在这里插入图片描述
那么滤波后结果为:
在这里插入图片描述
没有任何变化。原因为:
在这里插入图片描述


左右平移

假设线性滤波为:
在这里插入图片描述
那么滤波后结果为:
在这里插入图片描述
向左平移一个像素,原因对照像素图可得。


模糊

假设线性滤波为:
在这里插入图片描述
那么滤波结果为:
在这里插入图片描述
将原图片模糊化。


锐化

锐化可以简单的理解为“描边大师”。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
突出与区域平均(3*3)水平的差异。
在这里插入图片描述
红色: 很有意思的在于,原来一片区域都很小的值(0),现在更小了(-20,-10…);
绿色: 原来一片区域都很大的值(90),现在几乎没有变化(90)
蓝色: 原来一片区域部分很大的值,现在变得超级大。

观察下图:
在这里插入图片描述
一片区域都很小可以类比为背景,没有任何上色(全为0);
一片区域都很大的就可以类比为一大片的上色区域;
一片区域只有很小一部分有值可以类比为线段途径点。

而锐化所做到的其实就是将一片区域只有一小部分有值的部分更加突出,其实可以理解为拿笔再次进行描边。


End of Filter
2022.10.20

相关文章:

  • 常用安卓开发技巧汇总
  • Vue组件库实现按需引入可以这么做
  • 精选32个最新Python实战项目(附源码),拿走就用
  • MYSQL-约束,条件判断,组函数
  • Docker环境下使用docker-compose一键式搭建RocketMQ(4.5.0版本)集群及其管理工具(外网版)
  • Python爬虫之Js逆向案例(11)-百度翻译
  • NX二次开发-外部开发模式exe(不打开NX进行后台操作)以及封装exe传参调用
  • 分享8个前端可以制作360度WebVr全景视图框架
  • 物联网毕设 -- 智能厨房检测系统
  • I2C基础
  • 社区老年人服务系统设计与实现(安卓APP+SSH后台+MYSQL)
  • 《Unity Magica Cloth从入门到详解》之(4)MeshCloth网布
  • uniapp小程序长按识别关注公众号
  • 计算机毕业设计springboot+vue基本微信小程序的乐旋乒乓球课程管理系统 uniapp 小程序
  • dir_day11
  • EventListener原理
  • gcc介绍及安装
  • Git的一些常用操作
  • IndexedDB
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java8 Stream Pipelines 浅析
  • JavaScript服务器推送技术之 WebSocket
  • Leetcode 27 Remove Element
  • LeetCode算法系列_0891_子序列宽度之和
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Shell编程
  • vuex 笔记整理
  • 搭建gitbook 和 访问权限认证
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 翻译:Hystrix - How To Use
  • 分布式任务队列Celery
  • 类orAPI - 收藏集 - 掘金
  • 免费小说阅读小程序
  • 你不可错过的前端面试题(一)
  • 使用权重正则化较少模型过拟合
  • 思维导图—你不知道的JavaScript中卷
  • 原生Ajax
  • 在Mac OS X上安装 Ruby运行环境
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 正则表达式-基础知识Review
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​第20课 在Android Native开发中加入新的C++类
  • ###STL(标准模板库)
  • #define 用法
  • #数据结构 笔记三
  • #职场发展#其他
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)Linux——Linux常用指令
  • (二十三)Flask之高频面试点
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks