随笔分类 -  数字图像处理

摘要:OpenCV中图像阈值处理有两个函数,cvThreshold和cvAdaptiveThreshold。图像处理中可能最重要的一步就是图像的二值化处理,既然需要将图像二之化,那么就不得不使用这两个函数。1.cvThreshold函数原型如下:doublecvThreshold( const void* srcarr, void* dstarr, double thresh, double maxval, int type );srcarr源数组,dstarr为目标数组,thresh为阈值,maxval为欲设最大值,type为阈值处理的类型,有如下几种:CV_THRESH_BINARY,表示dst 阅读全文
posted @ 2012-04-20 20:28 移动应用开发 阅读(873) 评论(0) 推荐(0)
摘要:之所以要记录均值和方差的概念,是因为在学习数字图像处理的时候,碰到了这两个概念,突然发现忘记了。后来通过google搜索,才慢慢回忆起这是高中数学的知识。当然均值还是知道的,均值就是一组数据的平均值,比如如下一组数据:机床甲的均值计算如下:既然有了均值,那为啥还需要方差呢,我们再来看机床乙的均值:它们的均值都40,那怎么评价哪个机床生产的零件好呢,就需要用到这里的方差。方差它是用来描述一组数据的波动大小,如果方差越大,说明数据波动越大,如果方差较小,说明数据波动较小。我们来看方差如何计算:设有一组数据,它们的平均值为,则方差为:根据这个公式我们来计算上面两组数据的方差:从0.026>0. 阅读全文
posted @ 2012-04-17 20:18 移动应用开发 阅读(1008) 评论(0) 推荐(0)
摘要:bmp图片文件包含4个部分数据,位图文件头,位图信息头,颜色表和位图数据(即RGB值)。在看位图格式之前先看一个问题,如果每个像素都用前面的24位色去表示,那么一个像素值需要3个字节数据,24位色也称为真彩色,因为它能表示足够多的颜色。但是要是我们不需要这么多颜色呢,比如我只需要16种颜色就行了,如果还是按照3个字节来表示一个像素,一个640*480位图需要640*480*3共约765k的像素数据。其实完全没有必要这么做,我们可以这样,16种颜色定义一个表,每一种颜色对应表中的一组RGB值,当要表示一个像素值时,指定表中的一个索引,从表中取出来显示即可,16种颜色只需要4位数据即可,再加上颜色 阅读全文
posted @ 2012-04-16 15:40 移动应用开发 阅读(222) 评论(0) 推荐(0)
摘要:我们有时候希望对图像的某个小部分进行操作,而不是对整个图像进行运算。有两种方法,ROI和widthStep。1. ROI设置一个ROI区域使用cvSetImageROI,取消一个ROI使用cvResetImageROI。函数原型分别如下:voidcvSetImageROI( IplImage* image, CvRect rect );voidcvResetImageROI( IplImage* image );rect就是我们要操作的图像的某个区域。实例如下:#include <cv.h>#include <highgui.h>int main(int argc, c 阅读全文
posted @ 2012-04-13 11:14 移动应用开发 阅读(726) 评论(0) 推荐(0)
摘要:1. 图像创建图像创建使用cvCreateImage,函数原型如下:IplImage *cvCreateImage( CvSize size, int depth, int channels );depth就是介绍图像数据类型时说的图像像素类型,channels为图像通道数量。2. 图像释放图像释放使用cvReleaseImage函数,函数原型如下:voidcvReleaseImage( IplImage ** image );3. 图像加载图像加载使用cvLoadImage,函数原型如下:IplImage*cvLoadImage( const char* filename, int isco 阅读全文
posted @ 2012-04-12 13:36 移动应用开发 阅读(245) 评论(0) 推荐(0)
摘要:1. 矩阵创建矩阵创建有多种方法,我们可以用cvCreateMat创建一个矩阵,该函数返回指向这个矩阵的指针,函数原型如下:CvMat*cvCreateMat( int height, int width, int type );该方法既分配了矩阵头空间,也分配了数据空间。这个方法是最常用的方法。我们也可以使用cvCreateMatHeader函数只创建一个矩阵头,该函数返回指向这个矩阵的指针,函数原型如下:CvMat*cvCreateMatHeader( int rows, int cols, int type );注意这里只为矩阵头分配了空间,没有为矩阵的数据域分配空间。你可以去看一下Op 阅读全文
posted @ 2012-04-10 17:16 移动应用开发 阅读(1431) 评论(0) 推荐(0)
摘要:1. CvPointtypedef struct CvPoint{ int x; int y;}CvPoint;CvPoint用来描述图像中的像素点。2. CvSizetypedef struct{ int width; int height;}CvSize;CvSize用来描述图像的尺寸。3. CvRecttypedef struct CvRect{ int x; int y; int width; int height;}CvRect;CvRect用来描述图像的一个区域。4.CvScalartypedef struct CvScalar{ double val[4];}C... 阅读全文
posted @ 2012-04-10 15:57 移动应用开发 阅读(312) 评论(0) 推荐(0)
摘要:libjpeg库是专门用于jpeg图片格式解压和压缩的库程序实例如下:#include <stdio.h>#include <setjmp.h>#include <string.h>#include <stdlib.h>#include "jpeg-lib/include/jpeglib.h"#define PUT_2B(array,offset,value) \ (array[offset] = (char) ((value) & 0xFF), \ array[offset+1] = (char) (((value) 阅读全文
posted @ 2012-04-08 23:02 移动应用开发 阅读(1139) 评论(0) 推荐(0)
摘要:OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库。一、 OpenCV在ubuntu下安装OpenCV下载地址:http://sourceforge.net/projects/opencvlibrary/安装过程其实很简单,只是OpenCV依赖很多库,如果依赖的某些库没有安装好,会导致OpenCV程序不能正常运行,甚至不能编译,所以,在安装OpenCV之前,它本身依赖的库一定要先安装好。1. 解压下载好的OpenCV源码tar -xvf OpenCV-2.3.1a.tar.bz22. 进入OpenCV目录OpenCV-2.3.1/3. 创建一个release目录mkdir rele 阅读全文
posted @ 2012-04-06 17:58 移动应用开发 阅读(235) 评论(0) 推荐(0)