制作haar功能量表

时间:2014-06-27 04:24:49

标签: haar-classifier

这是我的代码

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();
        }

    }
}

此代码只生成一个2px x 4px的矩形。据我所知,haar功能中有很多矩形特征。 如何在haar功能中进行扩展的代码? 请帮帮我

1 个答案:

答案 0 :(得分:0)

我可以帮助你,但我用c ++编程,检查mi代码以生成haar功能:

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++;

                     }

                }
           }

    }

此代码给出了Lienhart,R。和Maydt,J。,“用于快速物体检测的一组Haar-like特征的扩展集”,ICIP02,pp.I:900-903中所示的正确数量的特征, 2002年。