1图像的阈值化一、固定阈值法使用固定的阈值作为二值化的界限二、最大类间方差法:1)统计灰度直方图2)计算单个像素的平均灰度3)计算两类间的方差for(intlevel=2;levelMAXLEVEL;level++)//MAXLEVEL=256{w1=0,w2=0;u1=0,u2=0;firstPartSumValue=0,secondPartSumValue=0;for(inti=1;ilevel;i++){w1+=hist[i];//灰度值小于level的像素点的个数firstPartSumValue+=i*hist[i];//灰度值小于level的像素点的灰度值总和}u1=firstPartSumValue/w1;//第一部分的平均灰度w1/=N;//第一部分像素个数在整个图像中占有的比例for(intj=level;jMAXLEVEL;j++){w2+=hist[j];secondPartSumValue+=j*hist[j];}u2=secondPartSumValue/w2;//第二部分的平均灰度w2/=N;//第二部分像素个数在整个图像中占有的比例//计算两类间的方差doublesigma=w1*(u1-u)*(u1-u)+w2*(u2-u)*(u2-u);var[level].variance=sigma;//记录方差的值var[level].grayLevel=level;//记录当前的灰度}三、P分位法图像二值化前提:知道图像中目标所占的比率,循环不同的灰度值对图像进行分割,并计算相应的目标(像素)所占的比率。计算:若计算得到的比率小于已知比率允许的误差范围内,则使用当前的灰度值进行二值化处理。2直方图均衡化直方图均衡化是灰度变换的一个重要应用,它高效且易于实现,广泛应用于图像增强处理中。图像的像素灰度变化是随机的,直方图的图形高低不齐,直方图均衡化就是用一定的算法使直方图大致平和。直方图均衡化有以下三个步骤:一、统计各个灰度级出现的次数及概率;1)统计灰度直方图for(i=0;iheight;i++){for(j=0;jwidth;j++){pixValue=*(pImage+i*widthStep+j);hist[pixValue]++;}}2)计算各个灰度值出现的概率for(i=0;i256;i++){pHist[i]=hist[i]/(width*height);}二、累计归一化的直方图;for(i=0;i256;i++){for(j=0;j=i;j++){c[i]+=pHist[j];}}三、计算新的像素值。1)找出当前处理的图像中最大和最小的灰度值略2)计算新的像素值for(i=0;iheight;i++){for(j=0;jwidth;j++){pixValue=*(pImage+i*widthStep+j);*(pDstImage+i*widthStep+j)=c[pixValue]*(max-min)+min;}}3图像平滑的常见算法一、均值滤波取N*N模板的各个像素的平均值作为当前像素的灰度值。N为奇数。二、中值滤波将N*N模板的各个像素的灰度值排序,排序后取位于中间位置的灰度值作为当前像素的像素值。三、高斯滤波高斯滤波:需要的参数(float)fSigma,(int)winSize1)根据winSize的大小及高斯函数计算高斯滤波的模板,并归一化2)创建的高斯模板系数相当于u=0,标准差fSigma时的高斯函数//计算模板系数intwinR=winSize/2;floataTemplate[MAX_WIN_SIZE]={0};unsignedlongaTemplate32U[MAX_WIN_SIZE]={0};floatfAcc=0;for(inti=-winR;i=winR;i++){aTemplate[i+winR]=exp(-i*i/(2*fSigma*fSigma))/fSigma;fAcc+=aTemplate[i+winR];}//归一化floatfInvAcc=1/fAcc;for(inti=0;iwinSize;i++){aTemplate[i]/=fAcc;}3)将系数放大,变为整数,例如乘以10^12;4)横向滤波及边界处理:原图乘以高斯模板系数得到新的pFilterData;5)纵向滤波及边界处理:pFilterData纵向乘以高斯模板系数得到滤波后的图像pDst4边缘检测常见算法1、使用模板卷积达到边缘检测目的的有如下算子:2、canny边缘检测,minTh,maxThminTh控制边缘的连接,maxTh控制强边缘的初始分割。1)使用sobel算子计算梯度图像2)使用sobel算子计算梯度gx,gy3)计算gx,gy(梯度方向)所处的象限,tan(alpha)=gy/gx;4)若当前的梯度g小于minTh则舍去,若当前的梯度g大于gx,大于gy且大于maxTh,则为强边缘,反之为弱边缘。5)将与强边缘连通的弱边缘与强边缘合并(8方向)6)cannny边缘检测完成5Hough变换1、图像的边缘检测2、直线上的每一点都满足法线方程p=x*cos(th)+y*sin(th);直线p的值的大小小于宽度,也小于高度3、loop1:角度遍历0°~180°;loop2:遍历边缘点,计算p并投票vote[th,p]4、选择投票最高的[th,p]5、重新计算p(采用当前角度),与maxP距离大的点舍弃,用剩余的点画条直线。