首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教高手!!关于拉普拉斯算子做图像锐化 [无满意答案结贴,结贴人:jw712niat]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jw712niat
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-23 16:07:13 楼主
    我的程序如下,怎么出来的结果就不对呢???急!!

            CDib* pDIB=pDoc->GetDibObject();          //得到DIB对象
    UINT width=pDIB->GetWidth();              //图像宽度
    UINT height=pDIB->GetHeight();            //图像高度
    DWORD LineBytes=pDIB->GetDibWidthBytes();  //图像每行字节数
    LPBYTE pImageData=pDIB->GetData();        //图像数据起始地址

    float Template[9];//拉普拉斯算子模板                         
            Template[0]=-1.0f;
            Template[1]=-1.0f;
    Template[2]=-1.0f;
    Template[3]=-1.0f;
    Template[4]= 9.0f;
    Template[5]=-1.0f;
    Template[6]=-1.0f;
    Template[7]=-1.0f;
    Template[8]=-1.0f;
     
    BYTE tempdata[9];
    memset(tempdata,0,sizeof(tempdata));

    for (UINT i=1;i <height-1;i++)
    {
    for (UINT j=1;j <width-1;j++)
    {
          int k=0;
                  int x=0;
                  float result=0;
               
                for (int m=-1;m <2;m++)
                {
          for (int n=-1;n <2;n++)
    {
      tempdata[k]=pImageData[LineBytes*(i+m)+(j+n)];//取出图像3*3领域类像素,存于tempdata数组
                        k++;
    }
                }
               
                  for (x=0;x <9;x++)
                  {
    result+=tempdata[x]*Template[x];//领域内像素与对应摸板相乘
                  }
                 
          result=(float)fabs(result);

                 
                  if (result>255)
          {
    pImageData[LineBytes*i+j]=255;
          }
          else
          {
                      pImageData[LineBytes*i+j]=(BYTE)result;
          }
               
               
    }
    }
    0  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • thirdapple
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 03:53:041楼 得分:0
    应该另建一个DIB放结果。

    result=(float)fabs(result);
    纯属多余
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • youxia000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-04 16:18:042楼 得分:0
    另存结果,不然会前面的结果影响后面的

    没必要弄成浮点,整形足够了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved