本文共 1624 字,大约阅读时间需要 5 分钟。
作为一个跨平台的开源计算机视觉库,OpenCV提供了许多图像处理的强大的API。在计算机视觉的一系列应用,归纳起来,基本方法可以分为传感器数据输入、特征点提取、关键点匹配、计算提取数据并进行分析四大步骤。其中涉及到的一些列算法,无论是前端数据处理,还是后端的滤波优化,均是以得到准确的分析结果为目的而进行的。
众所周知,图像是由一个个像素点按照一定的顺序组合而成的,根据这个原理,对图像的存储,本质上就是对像素构成的矩阵的存储,对图像的操作也就是对像素的操作。
在OpenCV中,最基本的图像数据结构是cv:Mat
,用来实例化图像对象,并对此对象进行一系列的操作,如cv:Ma
t中的at(int x,int y)
就是用来获取图像在(x,y)处的像素值。除此之外,OpenCV还封装了一些基本的处理函数,如图像的装载,翻转,图像格式的转换(如彩色图像与灰度图像的转换),定义ROI(region of interest)等等。 OpenCV中的GrabCut算法可以基于像素特征对图像进行分割:
GrabCut基本思想1.首先给定一张图片作为测试图片,针对待分离的前景区域画一个框,记录左下角和右下角的位置
2.初始化一个与原图大小相同的掩模,并初始化四个参数GCD_BGD,GCD_FGD, GCD_PR_BGD, GCD_PR_FGD全部为零PS:参数含义
GCD_BGD(=0),背景; GCD_FGD(=1),前景; GCD_PR_BGD(=2),可能是背景; GCD_PR_FGD(=3),可能是前景。
3.定义前景模型与背景模型,为两个1*56矩阵
4.将定义好的前景模型、背景模型、掩模,并设定一个迭代次数几个参数传至GrabCut算法,计算出一个新的掩模。新的掩模中给出的结果为2或3,即一个像素只存在两种情况:可能是背景、可能是前景。 5.将掩模中的2改为0.3改为1,并于原始图像对点对点乘积。使得原始图像中背景部分全部为0,前景部分则保持不变。1.直方图统计像素:产生一个二维图像,横轴为像素的编号(以0-255为例),纵轴为像素数量,基于图像中像素的特征,可据此分离前景与背景。
2.像素的修改:3.直方图统计像素的应用
操作方法:
将原始图像与一定大小的结构元素重合,相交的部分形成一个像素集合,腐蚀就是把当前像素替换为当前像素集合中的像素最小值,而膨胀就是把当前像素替换成当前图像集合中的最大值 原理: 结构元素,本质上是一个a*a的形态学滤波器开启和闭合图像只与最基本的腐蚀和膨胀运算有关,开启图像为先做腐蚀运算再做膨胀运算,闭合图像为先做膨胀运算再做腐蚀运算。
灰度图像中,可以将腐蚀和膨胀后的图像做差值,从而得到图像的边缘。即i边缘检测运算,Beucher运算。除此之外,得到图像边缘还有两种方式,膨胀后的图像和原始图像做差值,原始图像与腐蚀图像做差值。
而开启运算因为先对图像做腐蚀,所以可以消除图像的尖锐部分,闭合运算分析思路类似。参考链接:
转载地址:http://xeqpi.baihongyu.com/