这是我的代码
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功能中进行扩展的代码? 请帮帮我
答案 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年。