gegl r2515 - in branches/branch2_zhangjb: . operations/frequency/tools
- From: zhangjb svn gnome org
- To: svn-commits-list gnome org
- Subject: gegl r2515 - in branches/branch2_zhangjb: . operations/frequency/tools
- Date: Mon, 30 Jun 2008 17:20:56 +0000 (UTC)
Author: zhangjb
Date: Mon Jun 30 17:20:56 2008
New Revision: 2515
URL: http://svn.gnome.org/viewvc/gegl?rev=2515&view=rev
Log:
* operations/frequency/tools/filters.c: implemented freq_multiply().
Modified:
branches/branch2_zhangjb/ChangeLog
branches/branch2_zhangjb/operations/frequency/tools/filters.c
Modified: branches/branch2_zhangjb/operations/frequency/tools/filters.c
==============================================================================
--- branches/branch2_zhangjb/operations/frequency/tools/filters.c (original)
+++ branches/branch2_zhangjb/operations/frequency/tools/filters.c Mon Jun 30 17:20:56 2008
@@ -25,9 +25,63 @@
gboolean freq_multiply(gdouble *, gdouble *, gdouble *, gdouble *, gint, gint);
gboolean
-freq_multiply(gdouble *Xr_buf, gdouble *Xi_buf, gdouble *Hr_buf,
- gdouble *Hi_buf, gint width, gint height)
+freq_multiply(gdouble *Xr, gdouble *Xi, gdouble *Hr,
+ gdouble *Hi, gint width, gint height)
{
-
+ gint x, y;
+ gint yc = 0;
+ gdouble *Yr;
+ gdouble *Yi;
+
+ Yr = g_new0(gdouble, FFT_HALF(width)*height);
+ Yi = g_new0(gdouble, FFT_HALF(width)*height);
+
+ for (y=height/2; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ Yr[ELEM_ID_HALF_MATRIX(x, yc, width)] =
+ Xr[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hr[ELEM_ID_HALF_MATRIX(x, y, width)] -
+ Xi[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hi[ELEM_ID_HALF_MATRIX(x, y, width)];
+ Yi[ELEM_ID_HALF_MATRIX(x, yc, width)] =
+ Xi[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hr[ELEM_ID_HALF_MATRIX(x, y, width)] +
+ Xr[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hi[ELEM_ID_HALF_MATRIX(x, y, width)];
+ }
+ yc++;
+ }
+ for (y=0; y<height/2; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ Yr[ELEM_ID_HALF_MATRIX(x, yc, width)] =
+ Xr[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hr[ELEM_ID_HALF_MATRIX(x, y, width)] -
+ Xi[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hi[ELEM_ID_HALF_MATRIX(x, y, width)];
+ Yi[ELEM_ID_HALF_MATRIX(x, yc, width)] =
+ Xi[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hr[ELEM_ID_HALF_MATRIX(x, y, width)] +
+ Xr[ELEM_ID_HALF_MATRIX(x, yc, width)] *
+ Hi[ELEM_ID_HALF_MATRIX(x, y, width)];
+ }
+ yc++;
+ }
+ for (y=0; y<height; y++)
+ {
+ for (x=0; x<width; x++)
+ {
+ Xr[ELEM_ID_HALF_MATRIX(x, y, width)] =
+ Yr[ELEM_ID_HALF_MATRIX(x, y, width)];
+ Xr[ELEM_ID_HALF_MATRIX(x, y, width)] =
+ Yr[ELEM_ID_HALF_MATRIX(x, y, width)];
+ }
+ }
+
+ g_free(Yr);
+ g_free(Yi);
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]