st: Fix Gaussian kernel calculation
The result of subtracting unsigned operands is unsigned, which throws
off our calculation in case it should be negative.
This partly reverts 18b6f13395
.
https://bugzilla.gnome.org/show_bug.cgi?id=757779
This commit is contained in:
parent
61b14c7f04
commit
012443bffa
@ -211,7 +211,7 @@ calculate_gaussian_kernel (gdouble sigma,
|
|||||||
{
|
{
|
||||||
gdouble *ret, sum;
|
gdouble *ret, sum;
|
||||||
gdouble exp_divisor;
|
gdouble exp_divisor;
|
||||||
guint half, i;
|
int half, i;
|
||||||
|
|
||||||
g_return_val_if_fail (sigma > 0, NULL);
|
g_return_val_if_fail (sigma > 0, NULL);
|
||||||
|
|
||||||
@ -223,14 +223,14 @@ calculate_gaussian_kernel (gdouble sigma,
|
|||||||
exp_divisor = 2 * sigma * sigma;
|
exp_divisor = 2 * sigma * sigma;
|
||||||
|
|
||||||
/* n_values of 1D Gauss function */
|
/* n_values of 1D Gauss function */
|
||||||
for (i = 0; i < n_values; i++)
|
for (i = 0; i < (int)n_values; i++)
|
||||||
{
|
{
|
||||||
ret[i] = exp (-(i - half) * (i - half) / exp_divisor);
|
ret[i] = exp (-(i - half) * (i - half) / exp_divisor);
|
||||||
sum += ret[i];
|
sum += ret[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* normalize */
|
/* normalize */
|
||||||
for (i = 0; i < n_values; i++)
|
for (i = 0; i < (int)n_values; i++)
|
||||||
ret[i] /= sum;
|
ret[i] /= sum;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user