图像灰度化:将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量像素值在0~255,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,灰度值也是0~255.灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
图像二值化:将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像,有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。
基本处理的代码与部分实验如下:
#include "stdafx.h" #include <opencv2/opencv.hpp> #include "stdio.h"
int _tmain(int argc, _TCHAR* argv[]) { IplImage *src = cvLoadImage("test.jpg",1); cvShowImage("test",src); cvWaitKey(0); IplImage *dst = cvCloneImage(src); cvZero(dst); cvShowImage("Zero",dst); cvWaitKey(0); IplImage *dst_grey = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); IplImage *dst_binary = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); cvCvtColor(src,dst_grey,CV_BGR2GRAY);//转灰度 cvShowImage("Grey_Image",dst_grey); cvThreshold(dst_grey, dst_binary, 120, 255, CV_THRESH_OTSU); //二值化 cvShowImage("Binary_Image", dst_binary); cvWaitKey(0); cvReleaseImage (&src); cvReleaseImage (&dst); cvReleaseImage (&dst_grey); cvReleaseImage (&dst_binary); cvDestroyAllWindows(); return 0; }