高分求灰度腐蚀算法,要求:1,C代码;2,结构元素为半径为10的圆盘

解决方案 »

  1.   

    OpenCV里面有,不然数字图像处理里面也有腐蚀算法的代码................
      

  2.   

    /* 水平腐蚀函数 */
    /*list0 标准图像数据指针
    list1 扩充边框后图像数据指针
    Dx/Dy 标准图像的宽度和高度
    style 腐蚀类型 /HORIZONTAL_CORRODE 水平腐蚀/VERTICAL_CORRODE 垂直腐蚀/CROSS_CORRODE 十字腐蚀*/
    void CUtilities::Corrode(BYTE** list0, BYTE** list1, int Dx, int Dy,int style)
    {
    int i,j; switch(style)
    {
    case HORIZONTAL_CORRODE:
    for(i=1; i<Dy+1; i++)
    {
    for(j=1; j<Dx+1; j++)
    {
    if((list1[i][j-1]==BLACK)&&(list1[i][j]==BLACK)&&(list1[i][j+1]==BLACK))
    list0[i-1][j-1]=BLACK;
    else
    list0[i-1][j-1]=WHITE;
    }
    }
    break;
    case VERTICAL_CORRODE:
    for(i=1; i<Dy+1; i++)
    {
    for(j=1; j<Dx+1; j++)
    {
    if((list1[i-1][j]==BLACK)&&(list1[i][j]==BLACK)&&(list1[i+1][j]==BLACK))
    list0[i-1][j-1]=BLACK;
    else
    list0[i-1][j-1]=WHITE;
    }
    }
    break;
    case CROSS_CORRODE:
    for(i=1; i<Dy+1; i++)
    {
    for(j=1; j<Dx+1; j++)
    {
    if((list1[i][j-1]==BLACK)&&(list1[i-1][j]==BLACK)&&(list1[i][j+1]==BLACK)&&(list1[i+1][j]==BLACK)&&(list1[i][j]==BLACK))
    list0[i-1][j-1]=BLACK;
    else
    list0[i-1][j-1]=WHITE;
    }
    }
    break;
    default:
    break;
    }
    }自己写的,有测试过。
      

  3.   

    dkbrain:
       灰度图和二值图像腐蚀算法有点不同,上面你给的是二值图像,呵,谢谢你。自己搞定了。也谢谢其他兄台.你们都给分的。