大家好
  
   能不能给一个图像平滑处理的算法及原码?谢谢,在线急等!!!!!!!!

解决方案 »

  1.   

    问题问了好多次没人回答就要看看你这个问题的本身了,就象你问人家1+1=?的时候有多少人愿意回答,
    在图象处理领域,你这个问题和1+1=?差不多,所以...
    还有你真的不知道,Baidu会耐心的告诉你
      

  2.   

    难,估计高手都不来CSDN了,剩下的不是这方面的专家.
      

  3.   

    Up,laviewpbt你知道怎么写吗?看你比较历害,能不能帮贴出几行代码来呢?
    谢谢!!!
      

  4.   

    前两天就看到你的贴子,没有继续回,因为这是个基本问题,随便找本图像处理书就可以解决的,以为你已经搞定了,没想到你还在等。打开位图文件,跳过文件头信息头和调色板(如果有的话),得到指向像素颜色区的指针。这个过程有很多方法,有人专门编的DIB读写库,也可以用GDI+等通用库,也可以直接用CFile类对文件操作。比较繁琐但是一个固定过程。得到指向像素颜色区的指针后就可以进行平滑操作,简单的就是一用一个3*3的模板,也就是将八邻域里的像素和自身的灰度值做一个平均做为新的像素值。以前编有代码如下:void CbmpprojView::OnEnhancdSmooth()
    {
    // TODO: 在此添加命令处理程序代码
    CbmpprojDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
    return;
    HDIB hDIB=pDoc->GetHDIB();
    if(hDIB==NULL)
    {
    AfxMessageBox("文件打开错误!");
    return;
    }
    LPSTR lpDIB;
    LPSTR   lpDIBBits;// 指向DIB象素指针
    FLOAT aValue[9]; // 模板元素数组
    lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB);
    lpDIBBits = ::FindDIBBits(lpDIB);
    if (::DIBNumColors(lpDIB) != 256)
    {
    // 提示用户
    AfxMessageBox("目前只支持256色位图的平滑!");

    // 解除锁定
    ::GlobalUnlock((HGLOBAL)hDIB);

    // 返回
    return;
    }
    aValue[0] = 1.0;
    aValue[1] = 2.0;
    aValue[2] = 1.0;
    aValue[3] = 2.0;
    aValue[4] = 4.0;
    aValue[5] = 2.0;
    aValue[6] = 1.0;
    aValue[7] = 2.0;
    aValue[8] = 1.0;
    if (::Template(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), 
      3, 3, 1, 1, aValue, 0.0625))
    {

    // 设置脏标记
    //smooth_Flag=TRUE;
    }
    else
    {
    // 提示用户
    AfxMessageBox("分配内存失败!");
    }

    // 解除锁定
    ::GlobalUnlock((HGLOBAL)hDIB); pDoc->SetModifiedFlag(TRUE);
    Invalidate();
    }
    Template是模板计算函数,这里选是的3*3高斯模板,lpDIBBits是指向像素的指针。其实你要这些代码没有用。处理图像的过程比较麻烦,但每次做的步骤都是一样的,所以你只要照着书的一个例子敲一次就会了,不是别人不给你代码,只是这些都是基本的步骤,要给只能给你把一个源程序里的代码都贴上来了,也看不过来。估计贴这一点对你也没有什么用,如果你要源码的话留个信箱,我给你发过去,以前做实验编的程序,里面有一步是平滑。不过我建议你还是找本VC图像处理书看一下。不要太浮躁,不然既便这次利用源码实现了你要的功能,下次说不定又卡住了。
      

  5.   

    我发过去了。以前做实验时写的程序,里面有一步是平滑。用的 VisualC++数字图像处理(人民邮电出版社) 这本书中的函数库进行文件读写处理,限于函数库,它只能进行256级灰度位图的平滑,如果位图为彩色,可以用菜单中的灰度转化转为灰度图像。一般的图像处理用的都是灰度图像,如果你想对彩色位图进行平滑,需要分别对它的RGB三种像素做同样的处理,原理是一样的。