您的位置:首页 > 其它

CImgProcess::Histeq(CImgProcess * pTo) 图像的灰度 均衡化

2012-09-21 18:53 330 查看
/**************************************************
BOOL CImgProcess::Histeq(CImgProcess * pTo)

功能:
	图像的灰度直方图均衡化方法

参数:
	CImgProcess * pTo
		输出CImgProcess对象的指针
	
返回值:
	BOOL类型,true为成功,false为失败
***************************************************/

BOOL CImgProcess::Histeq(CImgProcess * pTo)
{
	// 首先检查图像是否是8位灰度图像
	if (m_pBMIH->biBitCount!=8) return false;
	
	BYTE gray;			// 临时变量,存储当前光标像素的灰度值
	int target;			// 临时变量,存储当前光标像素的目标值

	double pdHist[256];	//临时变量,存储灰度直方图
	
	double dTemp;		// 临时变量,存储累加的直方图数据

	this->GenHist(pdHist);

	for (int i=0; i<m_pBMIH->biHeight; i++)
	{
		for (int j=0; j<m_pBMIH->biWidth; j++)
		{
			dTemp = 0;

			gray = GetGray(j, i);

			for (BYTE k=0; k<gray; k++)
			{
				dTemp+=*(pdHist + k);
			};

			target = 255 * dTemp;
			
			if (target < 0) target = 0;
			if (target > 255) target = 255;

			// 写入目标图像
			pTo->SetPixel(j, i, RGB(target, target, target));
		}
	};

	return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: