【OpenCV_06】图像滤波器Filtering Images-腐蚀函数cvErode 和 膨胀函数cvDilate
来源:互联网 发布:vps怎么传数据 编辑:程序博客网 时间:2024/04/29 15:10
图像滤波在计算机视觉中占很大比重,是大部分计算机视觉应用的基础。对图像滤波应该在应用之前完成。OpenCV内建了很多图像滤波方法(OpenCV 2.X 及C++ )
- 改变图像或视频的亮度
- 改变图像或视频的对比对
- 灰度图或彩色图像直方图均衡化
- 平滑/模糊图像
下面就是本篇博文的例子OpenCV 2.1 C语言版本 (注意不是 C++)
- 侵蚀 Eroding
- 扩张 Dilating
- 反转 Inverting
侵蚀 Eroding 扩张 Dilating,这两个形态学函数总是成对出现,前者可以消除较小的点如噪音,后者可以使不连通的图像合并成块。
下面是我要进行滤波的原始图片,我在老友记中的女神,Rachel Karen Green。
Eroding 侵蚀
///////////////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include <cv.h>#include <highgui.h>int main(){ //display the original image IplImage* img = cvLoadImage("C:/MyPic.jpg"); cvNamedWindow("MyWindow"); cvShowImage("MyWindow", img); //erode and display the eroded image cvErode(img, img, 0, 2); cvNamedWindow("Eroded"); cvShowImage("Eroded", img); cvWaitKey(0); //cleaning up cvDestroyWindow("MyWindow"); cvDestroyWindow("Eroded"); cvReleaseImage(&img); return 0;} ///////////////////////////////////////////////////////////////////////////////////////
新出现的OpenCV函数
- cvErode(img, img, 0, 2)
第一个参数是图像源文件
第二个参数是将被侵蚀的目标文件
第三个参数是用于侵蚀的结构元素。如果它是0,则使用3×3的矩形结构元素进行侵蚀。
第四个参数是侵蚀次数。
- 腐蚀的算法:用3x3的结构元素,扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作:如果都为1,结果图像的该像素为1。否则为0。
- 结 果:使二值图像减小一圈
- 主 要 应 用:消除较小的点如噪音
可以看到明显的去除了干扰噪点。
Dilating 膨胀
Dilating 膨胀函数 是侵蚀函数的反操作。
///////////////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include <cv.h>#include <highgui.h>int main(){ //display the original image IplImage* img = cvLoadImage("C:/MyPic.jpg"); cvNamedWindow("MyWindow"); cvShowImage("MyWindow", img); //dilate and display the dilated image cvDilate(img, img, 0, 2); cvNamedWindow("Dilated"); cvShowImage("Dilated", img); cvWaitKey(0); //cleaning up cvDestroyWindow("MyWindow"); cvDestroyWindow("Dilated"); cvReleaseImage(&img); return 0;}///////////////////////////////////////////////////////////////////////////////////////
- 腐蚀的算法:用3x3的结构元素,扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作:如果都为0,结果图像的该像素为0。否则为1。
- 结 果:使二值图像扩大一圈
- 主 要 应 用:消除较小的点如噪音
新出现的OpenCV函数
- cvDilate(img, img, 0, 2)
第一个参数是图像源文件
第二个参数是将被侵蚀的目标文件
第三个参数是用于侵蚀的结构元素。如果它是0,则使用3×3的矩形结构元素进行膨胀。
第四个参数是膨胀次数。
Inverting 图像反转
///////////////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include <cv.h>#include <highgui.h>int main(){ //display the original image IplImage* img = cvLoadImage("C:/MyPic.jpg"); cvNamedWindow("MyWindow"); cvShowImage("MyWindow", img); //invert and display the inverted image cvNot(img, img); cvNamedWindow("Inverted"); cvShowImage("Inverted", img); cvWaitKey(0); //cleaning up cvDestroyWindow("MyWindow"); cvDestroyWindow("Inverted"); cvReleaseImage(&img); return 0;}///////////////////////////////////////////////////////////////////////////////////////
新出现的OpenCV函数
- cvNot(img, img)
这个函数是反转图像中的每个像素,第一个参数是源图像,第二个参数是目标图像。
值46值将被映射为 (255-46)=209
作为16位图,0的值将被映射为 (65535-0)=65535
值46值将被映射为 (65535-46)=65489
综合应用
在车辆跟踪中用帧间差分法得到的二值化图像,可以发现通过先腐蚀Erode多次,后膨胀Dilate多次,图像的噪音消除,物体内细小物质也被填充。
第一幅图左边为原图,右边为腐蚀后消除了噪音点和干扰点的图。
第二幅图右边是和第一幅图一样的原图,但是左边的图像是对第一幅图像左边的图进行了膨胀操作,可以看到, 物体内细小物质被填充。
通过这样的多次迭代腐蚀再膨胀的过程,可以得到效果更好的检测图像,方便后续提取运动目标操作。
0 0
- 【OpenCV_06】图像滤波器Filtering Images-腐蚀函数cvErode 和 膨胀函数cvDilate
- 腐蚀函数cvErode 和 膨胀函数cvDilate
- cvDilate()膨胀 cvErode()腐蚀函数
- cvDilate()膨胀 cvErode()腐蚀函数
- OpenCv:cvDilate()膨胀 cvErode()腐蚀函数
- opencv----cvDilate()膨胀 cvErode()腐蚀函数
- cvErode腐蚀 cvDilate膨胀
- cvErode和cvDilate腐蚀和膨胀函数————OpenCV笔记(七)
- 学习opencv(5)——膨胀和腐蚀 cvErode()和cvDilate()
- 形态学函数cvErode、cvDilate使用说明
- 图像腐蚀和膨胀
- 图像腐蚀和膨胀
- 图像腐蚀和膨胀
- cvDilate() 图像膨胀
- 图像的膨胀和腐蚀
- OpenCV图像腐蚀和膨胀
- 图像形态学--腐蚀和膨胀
- 图像的腐蚀(erode)和膨胀(dilate) 开运算以及闭运算------理论知识及其对应函数
- ArrayList和LinkedList
- 练习5——更多的变量和打印
- C语言中的一些关键字
- 第十三周项目二:分数类中的运算符重载(2)
- H264基本概念之宏块、片和片组
- 【OpenCV_06】图像滤波器Filtering Images-腐蚀函数cvErode 和 膨胀函数cvDilate
- iOS GCD的用法
- eclipse安装gradle插件
- ceylon 学习 3 代码片段
- Python操作Excel之xlrd
- UITextView添加默认文本
- iOS开发笔记--Layer 图层圆角、边框 、底纹其他常用操作
- 错误中学习-this.el is null
- Python爬虫