Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291261
  • 博文数量: 109
  • 博客积分: 2116
  • 博客等级: 大尉
  • 技术积分: 1062
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 15:38
文章分类

全部博文(109)

文章存档

2013年(2)

2011年(16)

2010年(90)

2009年(1)

我的朋友

分类:

2010-07-25 15:18:23

/***********************************************
*
* 函数名称:
*   GradientSharp()
*
*参数 :
*  HDIB hDIB    -待处理图像的句柄
*
* 返回值:
*       无
*
*功能:
*    现图像的梯度锐化
*说明:
*    只能对2值图像进行处理,如果图像本身边缘较细,可能造成信息的损失
**********************************************************************/
void GradientSharp(HDIB hDIB)
{
 // 指向DIB的指针
 LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);
 // 指向DIB象素指针
 LPSTR    lpDIBBits; 
 // 找到DIB图像象素起始位置
 lpDIBBits = ::FindDIBBits(lpDIB); 
    //获取图像的宽度
 LONG lWidth=::DIBWidth ((char*)lpDIB);
    //获取图像的长度
 LONG lHeight=::DIBHeight ((char*)lpDIB);
    // 阈值
 BYTE bThre = 2;
 // 调用GradSharp()函数进行梯度板锐化
 // 指向源图像的指针
 unsigned char* lpSrc;
 unsigned char* lpSrc1;
 unsigned char* lpSrc2;
 
 // 循环变量
 LONG i;
 LONG j;
 
 // 图像每行的字节数
 LONG lLineBytes;
 
 // 中间变量
 BYTE bTemp;
 
 // 计算图像每行的字节数
 lLineBytes = WIDTHBYTES(lWidth * 8);
 
 // 每行
   for(i = 0; i < lHeight; i++)
 {
  
     // 每列
  for(j = 0; j < lWidth; j++)
  {
   
             // 指向DIB第i行,第j个象素的指针
   lpSrc  = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
   
   // 指向DIB第i+1行,第j个象素的指针
   lpSrc1 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 2 - i) + j;
   
       // 指向DIB第i行,第j+1个象素的指针
       lpSrc2 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j + 1;
   
              //计算梯度值
       bTemp = abs((*lpSrc)-(*lpSrc1)) + abs((*lpSrc)-(*lpSrc2));
   
      // 判断是否小于阈值
      if (bTemp < 255)
   { 
       // 判断是否大于阈值,对于小于情况,灰度值不变。
      if (bTemp >= bThre)
      {
   // 直接赋值为bTemp
    *lpSrc = bTemp;
      }
   }
   
           else
   {
    // 直接赋值为255
    *lpSrc = 255;
   }
  }
   }
//最后还要处理一下图像中最下面那行
for(j = 0; j < lWidth; j++)
{  
 
 //指向最下边一行,第j个象素的指针
  lpSrc  = (unsigned char*)lpDIBBits + lLineBytes * 0 + j;
   //将此位置的象素设置为255,即白点
 *lpSrc=255;
}
   //解除锁定
 ::GlobalUnlock ((HGLOBAL)hDIB);
}
 
阅读(2590) | 评论(0) | 转发(0) |
0

上一篇:维纳滤波

下一篇:拉普拉斯锐化

给主人留下些什么吧!~~