openCV第五章/图像处理 -- 阈值化(自适应)

改进了的阈值技术,其中阈值本身就是一个变量。

 

void cvAdaptiveThreshold(

CvArr* src,

CvArr* dst,

double max_val,

int adaptive_method = CV_ADAPTIVE_THRESH_MEAN_C,

int threshold_type = CV_THRESH_BINARY,

int block_size = 3,

double param1 = 5

);

 

有两种不同方式的自适应阈值方法,可以用参数adaptive_method进行设置。

一种自适应阈值T(X,Y)在每个像素点都不同,值为计算b×b区域内的加权平均然后减去一个常数得到,b由block_size指定,常数由param1指定。cv_adaptive_thresh_mean_c方法是对区域内的所有像素加权平均。

 

#include #include #include IplImage* Igray = 0; IplImage* It = 0; IplImage* Iat; void main() { Igray = cvLoadImage("D://picutures//诗音.jpg", CV_LOAD_IMAGE_GRAYSCALE); It = cvCreateImage(cvSize(Igray->width, Igray->height),IPL_DEPTH_8U, 1); Iat = cvCreateImage(cvSize(Igray->width, Igray->height),IPL_DEPTH_8U, 1); cvThreshold(Igray, It, 50, 255,CV_THRESH_BINARY); cvAdaptiveThreshold(Igray, Iat, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 3, 5); cvNamedWindow("orignal", 1); cvNamedWindow("threshold", 1); cvNamedWindow("adaptiveThresh", 1); cvShowImage("orignal", Igray); cvShowImage("threshold", It); cvShowImage("adaptiveThresh", Iat); cvWaitKey(0); cvReleaseImage(&Igray); cvReleaseImage(&It); cvReleaseImage(&Iat); cvDestroyWindow("orignal"); cvDestroyWindow("threshold"); cvDestroyWindow("adaptiveThresh"); } 

 

 

 

 

 

最左边为灰度图像,中间为阈值化后的图像,最右边为自适应阈值化后的图像。

你可能感兴趣的:(openCV第五章/图像处理 -- 阈值化(自适应))