1

enter image description here

Can i implement the cross-correlation in the same way as the convolution?

I want to implement the formula in as in the picture, where Li the kernel in 4 different direction filters; Ci is the magnitude map for direction i. So what I did is to find the cross-correlation in the four directions separately and add them up. I learned that the cross correlation can be the same as convolution in image line sharping; s as the result should be stroke line of an image but what I actually get are discrete points. I am not sure if I implemented the formula correctly. Please help

private static void sharpTheLine(){
        int[][] cC_0= crossCorrelation(KERNEL_0,CMap_0);
        int[][] cC_45=crossCorrelation(KERNEL_45,CMap_45);
        int[][] cC_90=crossCorrelation(KERNEL_90,CMap_90);
        int[][] cC_135=crossCorrelation(KERNEL_135,CMap_135);


        //generate S
        for(int i=0; i<imageWidth; i++){
            for(int j =0; j<imageHight; j++) {
                SMap[i][j] = cC_0[i][j]+cC_45[i][j]+cC_90[i][j]+cC_135[i][j];
            }
        }
    }

    private static int[][] crossCorrelation(int [][] kernel,int[][] CMapVal){
        int horizontalWalk = imageWidth - K_R;
        int verticalWalk = imageHight - K_C;
        int res[][]=new int[imageWidth][imageHight];
        for (int i = 0; i < horizontalWalk; i++) {
            for (int j = 0; j < verticalWalk; j++) {
                int sample[][] = new int[K_R][K_C];
                for (int k = i; k < K_R + i; k++) {
                    for (int m = j; m < K_C + j; m++) {
                        sample[k - i][m - j] = CMapVal[k][m];
                        OnePixelConvolution(sample, i, j, kernel, res);
                    }
                }
            }
        }

        return res;
    }
private static void OnePixelConvolution(int[][] sample, int x, int y, int [][]kernel, int [][] res) {
        int resrgb = 0;
        for (int i = 0; i < K_R; i++) {
            for (int j = 0; j < K_C; j++) {
                resrgb = resrgb + sample[i][j] * kernel[i][j];
            }
        }
        res[x][y] = resrgb;
    }

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.