| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> OpenCV 之 自定义滤波 -> 正文阅读 |
|
[人工智能]OpenCV 之 自定义滤波 |
? ??图像处理中,"空间域" 指的是图像平面,因此,空间滤波?可定义为:在图像平面内对像素灰度值进行的滤波? 1? 空间滤波?1.1? 滤波过程? ? 如图,Filter 是一个 3x3 滤波核,当它从图像的左上角开始,逐个像素沿水平方向扫描,最后到右下角时,便会产生滤波后的图像? ? ?? ? ?假设输入图像 ,滤波后的图像为? ,则其中? 和? 的计算过程如下:? ? ? ? ? ? ? ? ? ?? ? ? 上图中,以像素 (4,4) 为中心的 3x3 邻域,和滤波核的向量点乘之积,即为 g(4,4)? ? ? ? g(4,4) = 240*0.1111 + 183*0.1111 + 0*0.1111 + 250*0.1111 + 12*0.1111 + 87*0.1111 + 255*0.1111 + 1*0.1111 + 94*0.1111 ? ? ? ? ? ? ? ? ?= 26.6666 + 20.3333 + 0 + 27.7777 + 1.3333 + 9.6666 + 28.3333 + 0 + 10.4444 ? ? ? ? ? ? ? ? ?= 124.55? ? ? ? 1.2? 相关和卷积? ? 空间滤波中,相关和卷积,是容易混淆的概念,定义如下: ? ? ?-??相关 (Correlation),和上述的滤波过程一样,即 滤波核 逐行扫描图像,并计算?每个位置像素点积?的过程 ? ? ?-??卷积 (Convolution),和 "相关" 过程类似,但 滤波核 要?先旋转 180°,然后再执行和 “相关” 一样的操作 ? ? ? ? ? ?(二维中的旋转 180°,等于滤波核沿一个坐标轴翻转,然后再沿另一个坐标轴翻转) ? ? ? ? ?? ? ??注意:如果滤波核是对称的,则对图像进行相关和卷积的结果是一致的 2? OpenCV 函数2.1? filter2D()? ? 在 OpenCV 中,可自定义滤波核,然后通过 filter2D() 来完成图像滤波
? ? filter2D() 求的是?相关,并非?卷积,只有当滤波核对称时,filte2D() 才可视为卷积运算,其公式如下: ? ? ? ? 假定滤波核 kernel 大小为 3x3,以一个像素点 src(4,4) 为例,则有: ? ? ? dst(4,4) =? ?kernel(0,0)*src(4+0-1, 4+0-1) + kernel(0,1)*src(4+0-1, 4+1-1) + kernel(0,2)*src(4+0-1, 4+2-1) ? ? ? ? ? ? ? ? ? ? ? + kernel(1,0)*src(4+1-1, 4+0-1) + kernel(1,1)*src(4+1-1, 4+1-1) + kernel(1,2)*src(4+1-1, 4+2-1) ? ? ? ? ? ? ? ? ? ? ? + kernel(2,0)*src(4+2-1, 4+0-1) + kernel(2,1)*src(4+2-1, 4+1-1) + kernel(2,2)*src(4+2-1, 4+2-1)? ? ? 滤波核与输入图像的卷积点乘,对应关系如下: ? ? ?? ? 2.2? flip()? ? 当滤波核不对称时,要得到真正的卷积运算,还需 flip() 函数来完成 kernel 的二维翻转
? ? 如果滤波核的大小为奇数,则 filter2D() 中的锚点位置可设为 Point(-1,-1),此时,默认滤波核的中心为锚点;如果滤波核的大小为偶数,则需要自定义锚点位置 ? ? OpenCV 中锚点位置的实现函数?normalizeAnchor() 如下:
3? 代码示例?3.1? 偏导数? ? 自定义滤波核,利用 filter2D() 函数,实现图像的一阶和二阶偏导运算? ? ???1)? 一阶偏导 ? ? 图像在 x 和 y 方向的一阶偏导如下: ? ? ? ? ? ? 对应滤波核为 , ? ? 2)? 二阶偏导 ? ? 同样,在 x 和 y 方向的二阶偏导如下: ? ? ? ? ? ? ? ? 对应滤波核为 ,, ?3.2 代码示例
? ? 输出的偏导图像如下,第一行从左到右:原图 - dx - dy;第二行从左至右:dxy - dxx -dyy ? ? ?? ?? ?? ? ? ?? ?? ?? 参考资料? OpenCV Tutorials / imgproc module /?Making your own linear filters ? Gonzalez,《Digital Image Processing》4th? ch3 Intesity Transformations and Spatial Filtering ??CS425 Lab: Intensity Transformations and Spatial Filtering |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 16:49:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |