You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
////local_desc_list_t *descriptor_bw_gist_cpu(image_t *src, int a, int b, int c, int w)
////{
//// local_desc_list_t *desc_list = local_desc_list_new();
////local_desc_list_t *descriptor_color_gist_cpu(color_image_t *src, int a, int b, int c, int w)
////{
//// local_desc_list_t *desc_list = local_desc_list_new();
//// float *desc_raw = color_gist(src, w, a, b, c);
// Lear's GIST implementation, version 1.1, (c) INRIA 2009, Licence: GPL /
///--------------------------------------------------------------------------*/
////#ifdef USE_GIST
///--------------------------------------------------------------------------/
include <math.h>
include <stdio.h>
include <string.h>
include <stdlib.h>
include <assert.h>
include <pthread.h>
include <fftw3.h>
//#ifdef STANDALONE_GIST
include "gist.h"
////#else
////#include <image.h>
////#include <descriptors.h>
////#endif
///--------------------------------------------------------------------------/
static pthread_mutex_t fftw_mutex = PTHREAD_MUTEX_INITIALIZER;
static void fftw_lock(void)
{
pthread_mutex_lock(&fftw_mutex);
}
static void fftw_unlock(void)
{
pthread_mutex_unlock(&fftw_mutex);
}
///--------------------------------------------------------------------------/
//static image_t *image_add_padding(image_t *src, int padding)
//{
// int i, j;
// image_t _img = image_new(src->width + 2_padding, src->height + 2*padding);
// memset(img->data, 0x00, img->stride_img->height_sizeof(float));
// for(j = 0; j < src->height; j++)
// {
// for(i = 0; i < src->width; i++) {
// img->data[(j+padding)_img->stride+i+padding] = src->data[j_src->stride+i];
// }
// }
// for(j = 0; j < padding; j++)
// {
// for(i = 0; i < src->width; i++)
// {
// img->data[j_img->stride+i+padding] = src->data[(padding-j-1)_src->stride+i];
// img->data[(j+padding+src->height)_img->stride+i+padding] = src->data[(src->height-j-1)_src->stride+i];
// }
// }
// for(j = 0; j < img->height; j++)
// {
// for(i = 0; i < padding; i++)
// {
// img->data[j_img->stride+i] = img->data[j_img->stride+padding+padding-i-1];
// img->data[j_img->stride+i+padding+src->width] = img->data[j_img->stride+img->width-padding-i-1];
// }
// }
// return img;
//}
///--------------------------------------------------------------------------/
static color_image_t *color_image_add_padding(color_image_t *src, int padding)
{
int i, j;
}
///--------------------------------------------------------------------------/
//static void image_rem_padding(image_t *dest, image_t *src, int padding)
//{
// int i, j;
// for(j = 0; j < dest->height; j++)
// {
// for(i = 0; i < dest->width; i++) {
// dest->data[j_dest->stride+i] = src->data[(j+padding)_src->stride+i+padding];
// }
// }
//}
///--------------------------------------------------------------------------/
static void color_image_rem_padding(color_image_t *dest, color_image_t *src, int padding)
{
int i, j;
}
///--------------------------------------------------------------------------/
static void fftshift(float *data, int w, int h)
{
int i, j;
}
///--------------------------------------------------------------------------/
//static image_list_t *sfds (){
//}
static image_list_t *create_gabor (int nscales, const int *ort, int width, int height)
{
int i, j, fn;
}
///--------------------------------------------------------------------------/
///static/ void prefilt(image_t *src, int fc)
//{
// fftw_lock();
// int i, j;
// /* Log _/
// for(j = 0; j < src->height; j++)
// {
// for(i = 0; i < src->width; i++) {
// src->data[j_src->stride+i] = log(src->data[j*src->stride+i]+1.0f);
// }
// }
// image_t *img_pad = image_add_padding(src, 5);
// /* Get sizes */
// int width = img_pad->width;
// int height = img_pad->height;
// int stride = img_pad->stride;
// /* Alloc memory _/
// float *fx = (float *) fftwf_malloc(width_height_sizeof(float));
// float *fy = (float *) fftwf_malloc(width_height_sizeof(float));
// float *gfc = (float *) fftwf_malloc(width_height_sizeof(float));
// fftwf_complex *in1 = (fftwf_complex *) fftwf_malloc(width_height_sizeof(fftwf_complex));
// fftwf_complex *in2 = (fftwf_complex *) fftwf_malloc(width_height_sizeof(fftwf_complex));
// fftwf_complex *out = (fftwf_complex ) fftwf_malloc(width_heightsizeof(fftwf_complex));
// /* Build whitening filter _/
// float s1 = fc/sqrt(log(2));
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// in1[jwidth + i][0] = img_pad->data[j_stride+i];
// in1[jwidth + i][1] = 0.0f;
// fx[j_width + i] = (float) i - width/2.0f;
// fy[j_width + i] = (float) j - height/2.0f;
// gfc[j_width + i] = exp(-(fx[j_width + i]_fx[j_width + i] + fy[j_width + i]_fy[j_width + i]) / (s1_s1));
// }
// }
// fftshift(gfc, width, height);
// /* FFT */
// fftwf_plan fft1 = fftwf_plan_dft_2d(width, height, in1, out, FFTW_FORWARD, FFTW_ESTIMATE);
// fftw_unlock();
// fftwf_execute(fft1);
// fftw_lock();
// /* Apply whitening filter _/
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// out[j*width+i][0] *= gfc[j_width + i];
// out[j_width+i][1] *= gfc[j_width + i];
// }
// }
// /* IFFT */
// fftwf_plan ifft1 = fftwf_plan_dft_2d(width, height, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
// fftw_unlock();
// fftwf_execute(ifft1);
// fftw_lock();
// /* Local contrast normalisation _/
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// img_pad->data[j_stride + i] -= in2[j_width+i][0] / (width_height);
// in1[j_width + i][0] = img_pad->data[j_stride + i] * img_pad->data[jstride + i];
// in1[jwidth + i][1] = 0.0f;
// }
// }
// /* FFT */
// fftwf_plan fft2 = fftwf_plan_dft_2d(width, height, in1, out, FFTW_FORWARD, FFTW_ESTIMATE);
// fftw_unlock();
// fftwf_execute(fft2);
// fftw_lock();
// /* Apply contrast normalisation filter _/
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// out[j*width+i][0] *= gfc[j_width + i];
// out[j_width+i][1] *= gfc[j_width + i];
// }
// }
// /* IFFT */
// fftwf_plan ifft2 = fftwf_plan_dft_2d(width, height, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
// fftw_unlock();
// fftwf_execute(ifft2);
// fftw_lock();
// /* Get result from contrast normalisation filter _/
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++) {
// img_pad->data[j_stride+i] = img_pad->data[j_stride + i] / (0.2f+sqrt(sqrt(in2[jwidth+i][0]_in2[j_width+i][0]+in2[jwidth+i][1]_in2[j_width+i][1]) / (width_height)));
// }
// }
// image_rem_padding(src, img_pad, 5);
// /* Free */
// fftwf_destroy_plan(fft1);
// fftwf_destroy_plan(fft2);
// fftwf_destroy_plan(ifft1);
// fftwf_destroy_plan(ifft2);
// image_delete(img_pad);
// fftwf_free(in1);
// fftwf_free(in2);
// fftwf_free(out);
// fftwf_free(fx);
// fftwf_free(fy);
// fftwf_free(gfc);
// fftw_unlock();
//}
///--------------------------------------------------------------------------/
static void color_prefilt(color_image_t *src, int fc)
{
fftw_lock();
}
///--------------------------------------------------------------------------/
//static void down_N(float *res, image_t *src, int N)
//{
// int i, j, k, l;
// int _nx = (int *) malloc((N+1)_sizeof(int));
// int _ny = (int *) malloc((N+1)_sizeof(int));
// for(i = 0; i < N+1; i++)
// {
// nx[i] = i_src->width/(N);
// ny[i] = i_src->height/(N);
// }
// for(l = 0; l < N; l++)
// {
// for(k = 0; k < N; k++)
// {
// float mean = 0.0f;
// for(j = ny[l]; j < ny[l+1]; j++)
// {
// for(i = nx[k]; i < nx[k+1]; i++) {
// mean += src->data[j*src->stride+i];
// }
// }
// float denom = (float)(ny[l+1]-ny[l])*(nx[k+1]-nx[k]);
// res[k*N+l] = mean / denom;
// }
// }
// free(nx);
// free(ny);
//}
///--------------------------------------------------------------------------/
static void color_down_N(float *res, color_image_t *src, int N, int c)
{
int i, j, k, l;
}
///--------------------------------------------------------------------------/
///static/ float *gist_gabor(image_t *src, const int w, image_list_t *G)
//{
// fftw_lock();
// int i, j, k;
// /* Get sizes */
// int width = src->width;
// int height = src->height;
// int stride = src->stride;
// float _res = (float *) malloc(w_w_G->size_sizeof(float));
// fftwf_complex _in1 = (fftwf_complex *) fftwf_malloc(width_height_sizeof(fftwf_complex));
// fftwf_complex *in2 = (fftwf_complex *) fftwf_malloc(width_height_sizeof(fftwf_complex));
// fftwf_complex *out1 = (fftwf_complex *) fftwf_malloc(width_height_sizeof(fftwf_complex));
// fftwf_complex *out2 = (fftwf_complex ) fftwf_malloc(width_heightsizeof(fftwf_complex));
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// in1[j_width + i][0] = src->data[j_stride+i];
// in1[j*width + i][1] = 0.0f;
// }
// }
// /* FFT */
// fftwf_plan fft = fftwf_plan_dft_2d(width, height, in1, out1, FFTW_FORWARD, FFTW_ESTIMATE);
// fftwf_plan ifft = fftwf_plan_dft_2d(width, height, out2, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
// fftw_unlock();
// fftwf_execute(fft);
// for(k = 0; k < G->size; k++)
// {
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++)
// {
// out2[j_width+i][0] = out1[jwidth+i][0] * G->data[k]->data[j_stride+i];
// out2[j_width+i][1] = out1[jwidth+i][1] * G->data[k]->data[j_stride+i];
// }
// }
// fftwf_execute(ifft);
// for(j = 0; j < height; j++)
// {
// for(i = 0; i < width; i++) {
// src->data[j_stride+i] = sqrt(in2[jwidth+i][0]_in2[j_width+i][0]+in2[jwidth+i][1]_in2[j_width+i][1])/(width_height);
// }
// }
// down_N(res+k_w_w, src, w);
// }
// fftw_lock();
// fftwf_destroy_plan(fft);
// fftwf_destroy_plan(ifft);
// fftwf_free(in1);
// fftwf_free(in2);
// fftwf_free(out1);
// fftwf_free(out2);
// fftw_unlock();
// return res;
//}
static float *color_gist_gabor(color_image_t *src, const int w, image_list_t *G)
{
fftw_lock();
}
///--------------------------------------------------------------------------/
//float *bw_gist(image_t *src, int w, int a, int b, int c)
//{
// int orientationsPerScale[3];
// orientationsPerScale[0] = a;
// orientationsPerScale[1] = b;
// orientationsPerScale[2] = c;
// return bw_gist_scaletab(src,w,3,orientationsPerScale);
//}
//float *bw_gist_scaletab(image_t *src, int w, int n_scale, const int *n_orientation)
//{
// int i;
// if(src->width < 8 || src->height < 8)
// {
// fprintf(stderr, "Error: bw_gist_scaletab() - Image not big enough !\n");
// return NULL;
// }
// int numberBlocks = w;
// int tot_oris=0;
// for(i=0;i<n_scale;i++) tot_oris+=n_orientation[i];
// image_t *img = image_cpy(src);
// image_list_t *G = create_gabor(n_scale, n_orientation, img->width, img->height);
// prefilt(img, 4);
// float *g = gist_gabor(img, numberBlocks, G);
// for(i = 0; i < tot_oris_w_w; i++)
// {
// if(!finite(g[i]))
// {
// fprintf(stderr, "Error: bw_gist_scaletab() - descriptor not valid (nan or inf)\n");
// free(g); g=NULL;
// break;
// }
// }
// image_list_delete(G);
// image_delete(img);
// return g;
//}
///--------------------------------------------------------------------------/
//float *color_gist(color_image_t *src, int w, int a, int b, int c) {
// int orientationsPerScale[3];
// orientationsPerScale[0] = a;
// orientationsPerScale[1] = b;
// orientationsPerScale[2] = c;
// return color_gist_scaletab(src,w,3,orientationsPerScale);
//}
float *color_gist_scaletab(color_image_t *src, int w, int n_scale, const int *n_orientation)
{
int i;
}
//#ifndef STANDALONE_GIST
///--------------------------------------------------------------------------/
////local_desc_list_t *descriptor_bw_gist_cpu(image_t *src, int a, int b, int c, int w)
////{
//// local_desc_list_t *desc_list = local_desc_list_new();
//// float *desc_raw = bw_gist(src, w, a, b, c);
//// local_desc_t *desc = local_desc_new();
//// desc->desc_size = (a+b+c)_w_w;
//// desc->desc = (float _) malloc(desc->desc_size_sizeof(float));
//// memcpy(desc->desc, desc_raw, desc->desc_size*sizeof(float));
//// local_desc_list_append(desc_list, desc);
//// free(desc_raw);
//// return desc_list;
////}
///--------------------------------------------------------------------------/
////local_desc_list_t *descriptor_color_gist_cpu(color_image_t *src, int a, int b, int c, int w)
////{
//// local_desc_list_t *desc_list = local_desc_list_new();
//// float *desc_raw = color_gist(src, w, a, b, c);
//// local_desc_t *desc = local_desc_new();
//// desc->desc_size = 3_(a+b+c)_w_w;
//// desc->desc = (float ) malloc(desc->desc_size_sizeof(float));
//// memcpy(desc->desc, desc_raw, desc->desc_sizesizeof(float));
//// local_desc_list_append(desc_list, desc);
//// free(desc_raw);
//// return desc_list;
////}
///--------------------------------------------------------------------------/
//#endif
////#endif
///*--------------------------------------------------------------------------
The text was updated successfully, but these errors were encountered: