aboutsummaryrefslogtreecommitdiff
path: root/src/filters.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2011-11-15 12:17:59 +0100
committerThomas White <taw@physics.org>2012-02-22 15:27:40 +0100
commit469efb904b59f137ac9e85e5ff23edd0c113de5c (patch)
tree71fab5f5715ec9f88984450cdabb592cd49dd46d /src/filters.c
parent38089071300b8e04ed42236dd08d9055094fb3b8 (diff)
Move a load more stuff into libcrystfel
Diffstat (limited to 'src/filters.c')
-rw-r--r--src/filters.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/src/filters.c b/src/filters.c
deleted file mode 100644
index c4e409df..00000000
--- a/src/filters.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * filters.c
- *
- * Image filtering
- *
- * (c) 2006-2010 Thomas White <taw@physics.org>
- *
- * Part of CrystFEL - crystallography with a FEL
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <assert.h>
-#include <gsl/gsl_statistics_int.h>
-#ifdef GSL_FUDGE
-#include <gsl/gsl_blas.h>
-#endif
-
-#include "image.h"
-
-
-static int compare_vals(const void *ap, const void *bp)
-{
- const signed int a = *(signed int *)ap;
- const signed int b = *(signed int *)bp;
-
- if ( a > b ) return 1;
- if ( a < b ) return -1;
- return 0;
-}
-
-
-static void clean_panel(struct image *image, int sx, int sy)
-{
- int x, y;
- const int s = sizeof(signed int);
-
- for ( x=0; x<512; x++ ) {
-
- signed int vals[128];
- double m;
-
- for ( y=0; y<128; y++ ) {
- vals[y] = image->data[(x+sx)+(y+sy)*image->width];
- }
-
- qsort(&vals[0], 128, s, compare_vals);
-
- m = gsl_stats_int_median_from_sorted_data(vals, 1, 128);
-
- for ( y=0; y<128; y++ ) {
- image->data[(x+sx)+(y+sy)*image->width] -= m;
- }
-
- }
-}
-
-
-/* Pre-processing to make life easier */
-void filter_cm(struct image *image)
-{
- int px, py;
-
- if ( (image->width != 1024) || (image->height != 1024) ) return;
-
- for ( px=0; px<2; px++ ) {
- for ( py=0; py<8; py++ ) {
-
- clean_panel(image, 512*px, 128*py);
-
- }
- }
-
-}
-
-
-void filter_noise(struct image *image, float *old)
-{
- int x, y;
-
- for ( x=0; x<image->width; x++ ) {
- for ( y=0; y<image->height; y++ ) {
-
- int dx, dy;
- int val = image->data[x+image->width*y];
-
- if ( old != NULL ) old[x+image->width*y] = val;
-
- /* FIXME: This isn't really the right thing to do
- * at the edges. */
- if ( (x==0) || (x==image->width-1)
- || (y==0) || (y==image->height-1) ) {
- if ( val < 0 ) val = 0;
- continue;
- }
-
- for ( dx=-1; dx<=+1; dx++ ) {
- for ( dy=-1; dy<=+1; dy++ ) {
-
- int val2;
-
- val2 = image->data[(x+dx)+image->width*(y+dy)];
-
- if ( val2 < 0 ) val = 0;
-
- }
- }
-
- image->data[x+image->width*y] = val;
-
- }
- }
-}
-
-
-#ifdef GSL_FUDGE
-/* Force the linker to bring in CBLAS to make GSL happy */
-void filters_fudge_gslcblas()
-{
- STATUS("%p\n", cblas_sgemm);
-}
-#endif