0

This is my code

import java.awt.image.BufferedImage;

public class HaarFeature {
    public static void GetFeature(BufferedImage image){
        int width  = image.getWidth();
        int height = image.getHeight();
        //int feature_width=1*scale_width;
        //int feature_height=1*scale_height;
        int[][] iI = IntegralImage.convIntegralImage(image);
        int white=0;
        int black=0;
        int feature=0;
        for(int i=0;i<height;i++){
            for(int j=0;j<width;j++){
                if(i<(height-1) && j<(width-3)){
                    if(i==0 && j==0){
                        black=iI[i][j+3];
                        white=iI[i+1][j+3]-iI[i][j+3];
                        feature=black-white;
                        System.out.print(feature+" ");
                    }
                    else if(i==0){
                        black=iI[i][j+3]-iI[i][j-1];
                        white=iI[i+1][j+3]+iI[i][j-1]-iI[i][j+3]-iI[i+1][j-1];
                        feature=black-white;
                        System.out.print(feature+" ");
                    }
                    else if(j==0){
                        black=iI[i][j+3]-iI[i-1][j+3];
                        white=iI[i+1][j+3]-iI[i][j+3];
                        feature=black-white;
                        System.out.print(feature+" ");
                    }
                    else{
                        black=iI[i][j+3]+iI[i-1][j-1]-iI[i][j-1]-iI[i-1][j+3];
                        white=iI[i+1][j+3]+iI[i][j-1]-iI[i][j+3]-iI[i+1][j-1];
                        feature=black-white;
                        System.out.print(feature+" ");
                    }
                }
            }
            System.out.println();
        }

    }
}

This code just generate one rectangle features 2px x 4px. As I know, there are so many rectangle features in haar features. How code to make scale in haar features? Please help me

1 Answers1

0

i can help you , but i program in c++, check mi code for generate haar feature:

int sizeX = feature[i][0];
int sizeY = feature[i][1];
// Each position:
for (int x = 0; x <= frameSize-sizeX; x++) {
    for (int y = 0; y <= frameSize-sizeY; y++) {
        // Each size fitting within the frameSize:
        for (int width = sizeX; width <= frameSize-x; width+=sizeX) {
            for (int height = sizeY; height <= frameSize-y; height+=sizeY) {
                count++;

                     }

                }
           }

    }

This code gives the correct number of features shown in Article of Lienhart, R. and Maydt, J., "An extended set of Haar-like features for rapid object detection", ICIP02, pp. I: 900–903, 2002.