mirror of
https://github.com/opencv/opencv.git
synced 2024-11-30 06:10:02 +08:00
Merge pull request #75 form taka-no-me:comments/2463
This commit is contained in:
commit
bfa466dcbd
@ -31,28 +31,20 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
|||||||
int i, j, kk, c, ii, jj, d;
|
int i, j, kk, c, ii, jj, d;
|
||||||
float * datadx, * datady;
|
float * datadx, * datady;
|
||||||
|
|
||||||
//номер канала в цикле
|
|
||||||
int ch;
|
int ch;
|
||||||
//переменные вычисления магнитуды
|
|
||||||
float magnitude, x, y, tx, ty;
|
float magnitude, x, y, tx, ty;
|
||||||
|
|
||||||
IplImage * dx, * dy;
|
IplImage * dx, * dy;
|
||||||
int *nearest;
|
int *nearest;
|
||||||
float *w, a_x, b_x;
|
float *w, a_x, b_x;
|
||||||
|
|
||||||
// ядро для вычисления градиентов изображение по осям x и y
|
|
||||||
float kernel[3] = {-1.f, 0.f, 1.f};
|
float kernel[3] = {-1.f, 0.f, 1.f};
|
||||||
CvMat kernel_dx = cvMat(1, 3, CV_32F, kernel);
|
CvMat kernel_dx = cvMat(1, 3, CV_32F, kernel);
|
||||||
CvMat kernel_dy = cvMat(3, 1, CV_32F, kernel);
|
CvMat kernel_dy = cvMat(3, 1, CV_32F, kernel);
|
||||||
|
|
||||||
// грачение градиента
|
|
||||||
float * r;
|
float * r;
|
||||||
// новер сектора куда попало значение градиента
|
|
||||||
// четные иннексы не контрастное изображение
|
|
||||||
// не четные иннексы контрастное изображение
|
|
||||||
int * alfa;
|
int * alfa;
|
||||||
|
|
||||||
// векторы границ секторов
|
|
||||||
float boundary_x[NUM_SECTOR + 1];
|
float boundary_x[NUM_SECTOR + 1];
|
||||||
float boundary_y[NUM_SECTOR + 1];
|
float boundary_y[NUM_SECTOR + 1];
|
||||||
float max, dotProd;
|
float max, dotProd;
|
||||||
@ -70,7 +62,7 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
|||||||
|
|
||||||
sizeX = width / k;
|
sizeX = width / k;
|
||||||
sizeY = height / k;
|
sizeY = height / k;
|
||||||
px = 3 * NUM_SECTOR; // контрастное и не контрастное изображение
|
px = 3 * NUM_SECTOR;
|
||||||
p = px;
|
p = px;
|
||||||
stringSize = sizeX * p;
|
stringSize = sizeX * p;
|
||||||
allocFeatureMapObject(map, sizeX, sizeY, p);
|
allocFeatureMapObject(map, sizeX, sizeY, p);
|
||||||
@ -138,7 +130,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
|||||||
}/*for(i = 0; i < width; i++)*/
|
}/*for(i = 0; i < width; i++)*/
|
||||||
}/*for(j = 0; j < height; j++)*/
|
}/*for(j = 0; j < height; j++)*/
|
||||||
|
|
||||||
//подсчет весов и смещений
|
|
||||||
nearest = (int *)malloc(sizeof(int ) * k);
|
nearest = (int *)malloc(sizeof(int ) * k);
|
||||||
w = (float*)malloc(sizeof(float) * (k * 2));
|
w = (float*)malloc(sizeof(float) * (k * 2));
|
||||||
|
|
||||||
@ -167,7 +158,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
|||||||
}/*for(j = k / 2; j < k; j++)*/
|
}/*for(j = k / 2; j < k; j++)*/
|
||||||
|
|
||||||
|
|
||||||
//интерполяция
|
|
||||||
for(i = 0; i < sizeY; i++)
|
for(i = 0; i < sizeY; i++)
|
||||||
{
|
{
|
||||||
for(j = 0; j < sizeX; j++)
|
for(j = 0; j < sizeX; j++)
|
||||||
@ -275,7 +265,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
|||||||
sizeY -= 2;
|
sizeY -= 2;
|
||||||
|
|
||||||
newData = (float *)malloc (sizeof(float) * (sizeX * sizeY * pp));
|
newData = (float *)malloc (sizeof(float) * (sizeX * sizeY * pp));
|
||||||
//normalization
|
//normalization
|
||||||
for(i = 1; i <= sizeY; i++)
|
for(i = 1; i <= sizeY; i++)
|
||||||
{
|
{
|
||||||
for(j = 1; j <= sizeX; j++)
|
for(j = 1; j <= sizeX; j++)
|
||||||
@ -336,12 +326,12 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
|||||||
}/*for(ii = 0; ii < 2 * p; ii++)*/
|
}/*for(ii = 0; ii < 2 * p; ii++)*/
|
||||||
}/*for(j = 1; j <= sizeX; j++)*/
|
}/*for(j = 1; j <= sizeX; j++)*/
|
||||||
}/*for(i = 1; i <= sizeY; i++)*/
|
}/*for(i = 1; i <= sizeY; i++)*/
|
||||||
//truncation
|
//truncation
|
||||||
for(i = 0; i < sizeX * sizeY * pp; i++)
|
for(i = 0; i < sizeX * sizeY * pp; i++)
|
||||||
{
|
{
|
||||||
if(newData [i] > alfa) newData [i] = alfa;
|
if(newData [i] > alfa) newData [i] = alfa;
|
||||||
}/*for(i = 0; i < sizeX * sizeY * pp; i++)*/
|
}/*for(i = 0; i < sizeX * sizeY * pp; i++)*/
|
||||||
//swop data
|
//swap data
|
||||||
|
|
||||||
map->numFeatures = pp;
|
map->numFeatures = pp;
|
||||||
map->sizeX = sizeX;
|
map->sizeX = sizeX;
|
||||||
@ -354,6 +344,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
|||||||
|
|
||||||
return LATENT_SVM_OK;
|
return LATENT_SVM_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// Feature map reduction
|
// Feature map reduction
|
||||||
// In each cell we reduce dimension of the feature vector
|
// In each cell we reduce dimension of the feature vector
|
||||||
@ -427,7 +418,7 @@ int PCAFeatureMaps(CvLSVMFeatureMap *map)
|
|||||||
} /*for(ii = 0; ii < yp; ii++)*/
|
} /*for(ii = 0; ii < yp; ii++)*/
|
||||||
}/*for(j = 0; j < sizeX; j++)*/
|
}/*for(j = 0; j < sizeX; j++)*/
|
||||||
}/*for(i = 0; i < sizeY; i++)*/
|
}/*for(i = 0; i < sizeY; i++)*/
|
||||||
//swop data
|
//swap data
|
||||||
|
|
||||||
map->numFeatures = pp;
|
map->numFeatures = pp;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user