摘要: 迭代器的概念除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素。迭代器其实类似于引用,指向容器中某一元素。迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。我个人认为,迭代器的产生,主要是为了统一各类容器的穷举接口,因为各类容器中,只有 vectoer等少量容器模板支持通过下标访问。使用迭代器则不存在这个问题。C++ 标准库为每一种标准库类型提供了配套的迭代器类型。例如,std::vector::iterator 就是一种迭代器类型。迭代器分为普通迭代器和常量迭代器(const_iterator)。 阅读全文
posted @ 2014-03-11 22:11 jianguo_wang 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 在读研和工作之间徘徊了半年,看着一个个好友工作、保研,生活安排得井井有条,我也是时候收拾心情,整装前进了。既然选择了图像,就一定要好好做下去。 今天开始第一个算法,Vibe。 ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少,很简单。 阅读全文
posted @ 2014-03-11 15:47 jianguo_wang 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 图像的算术运算Mat类把很多算数操作符都进行了重载,让它们来符合矩阵的一些运算,如果+、-、点乘等。下面我们来看看用位操作和基本算术运算来完成colorReduce程序,它更简单,更高效。将256种灰度阶降到64位其实是抛弃了二进制最后面的4位,所以我们可以用位操作来做这一步处理。首先我们计算2^8降到2^n中的n:int n=static_cast(log(static_cast(div))/log(2.0));然后可以得到maskmask=0xFF planes;// 将image分为三个通道图像存储在planes中split(image,planes);planes[0]+=image2 阅读全文
posted @ 2014-03-11 15:41 jianguo_wang 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 图像的邻域操作很多时候,我们对图像处理时,要考虑它的邻域,比如3*3是我们常用的,这在图像滤波、去噪中最为常见,下面我们介绍如果在一次图像遍历过程中进行邻域的运算。下面我们进行一个简单的滤波操作,滤波算子为[0 –1 0;-1 5 –1;0 –1 0]。它可以让图像变得尖锐,而边缘更加突出。核心公式即:sharp(i.j)=5*image(i,j)-image(i-1,j)-image(i+1,j)-image(i,j-1)-image(i,j+1)。void ImgFilter2d(const Mat &image,Mat& result){ result.create(im 阅读全文
posted @ 2014-03-11 15:29 jianguo_wang 阅读(1188) 评论(0) 推荐(1) 编辑
摘要: 遍历图像的4种方式一、at(i,j)Mat类提供了一个at的方法用于取得图像上的点,它是一个模板函数,可以取到任何类型的图像上的点。下面我们通过一个图像处理中的实际来说明它的用法。在实际应用中,我们很多时候需要对图像降色彩,因为256*256*256实在太多了,在图像颜色聚类或彩色直方图时,我们需要用一些代表性的颜色代替丰富的色彩空间,我们的思路是将每个通道的256种颜色用64种代替,即将原来256种颜色划分64个颜色段,每个颜色段取中间的颜色值作为代表色。void colorReduce(Mat& image,int div){ for(int i=0;i(i,j)[0]=image 阅读全文
posted @ 2014-03-11 15:16 jianguo_wang 阅读(358) 评论(0) 推荐(0) 编辑