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 <cv.h> 

#include <highgui.h> 
#include <math.h>  

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");   
 
}  
 


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

 

本文来自CSDN博客:http://blog.csdn.net/cartoonface/archive/2010/11/16/6011334.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值