使用图像结构中所定义的高层处理方法(图形和视觉范畴)来完成特定任务

平滑处理   cvSmooth

处理后图像与输入图像的大小相同(不用考虑边缘)

中值滤波  CV_MEDIAN 不支持 in place 操作 , 高斯滤波 CV_GAUSSIAN 支持 in place 操作(可以设置高斯核不对称,双边滤波——高斯平滑,水彩画处理,可用于图像分割)

图像形态学

膨胀 —— 把二值图像各像素连接成分的边界扩大一层,填充边缘或像素内部的孔;使灰度图像高亮区域逐渐增长

腐蚀 —— 把二值图像各像素连接成分的边界点去掉从而缩小一层(去掉毛刺);使灰度图像高亮区减少

cvErode cvDilate

自定义核  IplConvKernel —— cvCreateStructuringElementEx()函数创建 ,由 cvReleaseStructuringElement() 函数释放

形态核与卷积核不同,不需要任何的数值填充核

更通用的形态学 —— cvMorphologyEx —— 开闭运算,形态梯度,礼帽,黑帽

开运算 —— 先腐蚀然后膨胀 (可用来统计二值图像中的区域数)

闭运算 —— 先膨胀然后腐蚀 —— 对于连通区域分析,通常先采用腐蚀或闭运算来消除纯粹由噪声引起的部分,然后用开运算来连接相邻的区域

闭运算消除了低于其临近点的孤立点,开运算消除了高于其临近点的孤立点

形态学梯度 = 膨胀 - 腐蚀 —— 对二值图像进行这一操作可将团块的边缘突出出来(描述图像亮度变化的剧烈程度)

礼帽   Top Hat = src – open(src) (开运算带来的结果是放大裂缝或是局部低亮度区域,所以礼帽操作将局部亮度极大点分割出来)

黑帽   Black Hat = close(src) – src  黑色的洞被分割出来

漫水填充算法 —— 标记或分离图像的一部分以便对其进行进一步处理

在图像上选择一个种子点,然后把临近区域所有相似点填充上同样的颜色,漫水填充的结果总是某个连续的区域

cvFloodFill  可设置掩码,cvFloodFill 不会覆盖mask的非0像素点   flags —— 算法的连通性,填充掩码图像的值,CV_FLOODFILL_FIXED_RANGE

图像尺寸调整  —— cvResize 如果源图象设置了ROI,cvResize 将会对ROI区域调整尺寸,以匹配目标图像,若目标图像设置了ROI,那么。。。。(可以选择不同的插值方式)

图像金字塔 —— 连续降采样

cvPyrDown —— 先用高斯核卷积,然后删除所有偶数行和偶数列  —— 丢失一定量信息

cvPyrUp —— 图像首先在每个维度上扩大为原来的两倍,新增的行列以0填充,然后给指定的滤波器进行卷积

图像分割 —— 快速初始分割先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化  ——  cvPyrSegmentation

由于图像金字塔各层的长和宽都必须是整数,所以起始图像的长和宽都能够被2整除,并且能够被2整除的次数不少于金字塔的总层数

CvMemStorage * storage = cvCreateMemStorage()

#include <cv.h>
#include <highgui.h> int main(int argc,char** argv)
{
IplImage *src=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_UNCHANGED);
IplImage *dst=cvCreateImage(cvSize(src->width,src->height),src->depth,src->nChannels);
CvMemStorage* storage=cvCreateMemStorage();
CvSeq* comp=NULL;
cvPyrSegmentation(src,dst,storage,&comp,,,);
int n_comp=comp->total; for (int i=;i<n_comp;i++)
{
CvConnectedComp* cc=(CvConnectedComp*)cvGetSeqElem(comp,i); // ..... 怎么处理还没想好 } cvReleaseMemStorage(&storage);
return ;
}

CvConnectedComponent —— 图像团块

area 区域面积,value 区域颜色的平均值,rect 是一个区域的外接矩形,contour 是一个指向另一个序列的指针


阈值化

cvThreshold

cvAdaptiveThreshold  大津法,OTSU —— 按图像的灰度特性,将图像分成背景和目标2部分,背景和目标之间的类间方差越大,说明构成图像的的2部分的差别越大,当部分目标错为背景或反之都会使2部分差别变小

#include <cv.h>
#include <highgui.h>
#include <math.h> IplImage *Igray=, *It=,*Iat; int main(int argc,char** argv)
{
int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;
int threshold_type=CV_THRESH_BINARY;
int block_size=;
double offset=; Igray=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_GRAYSCALE); Iat=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,); cvAdaptiveThreshold(Igray,Iat,,adaptive_method,threshold_type,block_size,offset); cvNamedWindow("w1");
cvNamedWindow("w2");
cvShowImage("w1",Iat);
cvShowImage("w2",Igray);
cvWaitKey(); cvReleaseImage(&Iat);
cvDestroyAllWindows(); return ;
}

最新文章

  1. [C#] 走进异步编程的世界 - 剖析异步方法(上)
  2. MongoDB与Mysql常用命令解释
  3. [转]NHibernate之映射文件配置说明
  4. C# ASP.NET Webservice调用外部exe无效的解决方法
  5. [转]JAVA布局模式:GridBagConstraints终极技巧
  6. Hadoop1.0.3集成eclipse开发
  7. 自己做的demo---宣告可以在java世界开始自由了
  8. linux socket使用经验总结
  9. hadoop下载
  10. linux底半部机制在视频采集驱动中的应用
  11. ZOJ3629 Treasure Hunt IV(找到规律,按公式)
  12. 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现
  13. 【转】wireshark基本用法及过虑规则
  14. Dynamics CRM2013 导入解决方案(快速视图窗体)SystemForm With Id Does Not Exist的解决方法
  15. android下ViewPager的使用,带下部选项栏的切换动画
  16. Java开源生鲜电商平台-盈利模式详解(源码可下载)
  17. HDU - 4901 The Romantic Hero(dp)
  18. OVS 精确删除流表
  19. js把预定义的html字符串转换为 HTML 实体 htmlspecialchars 输出html实体内容包括标签,而不自动转义标签,只显示内容,类似php的htmlspecialchars
  20. 【变态问题】在发现“XXXX”类型前实体框架已使用默认 DbConfiguration 实例。

热门文章

  1. PostgreSQL Replication之第九章 与pgpool一起工作(5)
  2. 关于table布局
  3. c# 的类成员
  4. 仿函数(functor)
  5. mysql的关联查询简写
  6. notepad++调用python3中文乱码
  7. WHU 1537 Stones I
  8. python list的+,+=,append,extend
  9. BZOJ5029: 贴小广告 &amp; BZOJ5168: [HAOI2014]贴海报
  10. Redis封装之Set