www.pudn.com > vcpinhuachuli.rar   To Read all the content


[file head]:
#include "stdafx.h"
#include "windowsx.h"
#include "math.h"
#include "ZaoShengXiaoChuDib.h"
#include "MainFrm.h"
#include "DSplitView.h"

ZaoShengXiaoChuDib::ZaoShengXiaoChuDib()
{

}

ZaoShengXiaoChuDib::~ZaoShengXiaoChuDib()
{
}

/***************************************************************/
/*函数名称:GuDing() */
/*函数类型:void */
/*参数:int Yuzhi,设定的阈值 */
/*功能:对图像使用固定阈值法进行二值化。 */
/***************************************************************/
void ZaoShengXiaoChuDib::GuDing(int YuZhi)
{
LPBYTE p_data; //原图数据区指针
int wide,height; //原图长、宽
p_data=this->GetData (); //取得原图的数据区指针
if(m_pBitmapInfoHeader->biBitCount<9) //灰度图像
{
wide=this->GetWidth ();
height=this->GetHeight ();
for(int j=0;j<height;j++)
{
for(int i=0;
... ...

[file tail]:
... ...
ta[(j+2)*wide*3+(i-1)*3+k];
mean[7]=(float)(ji[0]+ji[1]+ji[2]+ji[3]+ji[4]+ji[5]+ji[6])/7;
bunsan[7]=0;
for(n=0;n<=6;n++)
bunsan[7]+=ji[n]*ji[n]-mean[7]*mean[7];
//第9近邻区域
ji[0]=p_data[j*wide*3+i*3+k];
ji[1]=p_data[j*wide*3+(i+1)*3+k];
ji[2]=p_data[(j+1)*wide*3+i*3+k];
ji[3]=p_data[(j+1)*wide*3+(i+1)*3+k];
ji[4]=p_data[(j+1)*wide*3+(i+2)*3+k];
ji[5]=p_data[(j+2)*wide*3+(i+1)*3+k];
ji[6]=p_data[(j+2)*wide*3+(i+2)*3+k];
mean[8]=(float)(ji[0]+ji[1]+ji[2]+ji[3]+ji[4]+ji[5]+ji[6])/7;
bunsan[8]=0;
for(n=0;n<=6;n++)
bunsan[8]+=ji[n]*ji[n]-mean[8]*mean[8];
//求方差最小的近邻区域nmin
bmin=bunsan[0];
nmin=0;
for(n=0;n<=8;n++)
{
if(bmin>bunsan[n])
{
bmin=bunsan[n];
nmin=n;
}
//把nmin的值四舍五入后作为显示图像的值
p_temp[j*wide*3+i*3+k]=(int)(mean[nmin]+0.5);
}
}
}
memcpy(p_data,p_temp,size);
delete p_temp;
}
}