RT

解决方案 »

  1.   

    我在上学的时候用bcb做过 图形的处理 好几年了 都忘记了 我只能给你个思路 就是吧图片的点阵一个个的处理 至于具体的算法你可以搜一下
      

  2.   

    public ConvolveOp getGaussianBlurFilter(int radius, boolean horizontal){
    if (radius < 1){
    throw new IllegalArgumentException("Radius must be >= 1");
    }

    int size = radius * 2 + 1;
    float[] data = new float[size];
    //这里调整被除数系数   被除数越大模糊精度越高  初设20  fang
    float sigma = radius / 20.0f;
    float twoSigmaSquare = 2.0f * sigma * sigma;
    float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI);
    float total = 0.0f;

    for(int i = -radius; i <= radius; i++){
    float distance = i * i;
    int index = i + radius;
    data[index] = (float) Math.exp(-distance/twoSigmaSquare) / sigmaRoot;
    total += data[index];
    }

    for(int i = 0; i < data.length; i++){
    data[i] /= total;
    }

    Kernel kernel = null;
    if(horizontal){
    kernel = new Kernel(size,1,data);
    }
    else{
    kernel = new Kernel(1,size,data);
    }

    return new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
    }