vb.net - Gaussian blur returning value more than 255 -


i'm trying make gaussian blur without using library. when change σ 5, results in error because value more 255. use this reference. know equation wrong, see values reference. use equation wiki.

when use same σ reference 5.5, same result values on link. when try change 5, value got more 255. maybe it's not 5. re-read code on , on again. or maybe messed formula ? should below 255 right? s here's code formula

 public function standard_deviation(sigma double)     dim standard_deviasi double = 1 / (2 * math.pi * (sigma ^ 2))     return standard_deviasi end function  public function hitung_exponen(x integer, y integer, sigma double)     'dim exp_den double = 2 * (sigma ^ 2)     'dim a45roote2 double = math.pow(math.exp(x ^ 2 + y ^ 2), 1 / exp_den)     'dim exponen double = 1 / a45roote2     dim exponen double = math.exp(-((x ^ 2) + (y ^ 2) / 2 * sigma ^ 2))     return exponen end function 

and here main func

        dim standar_deviasi double = standard_deviation(sigma)         kernelgauss(0, 0) = standar_deviasi * hitung_exponen(2, 2, sigma)         kernelgauss(0, 1) = standar_deviasi * hitung_exponen(1, 2, sigma)         kernelgauss(0, 2) = standar_deviasi * hitung_exponen(0, 2, sigma)         kernelgauss(0, 3) = standar_deviasi * hitung_exponen(1, 2, sigma)         kernelgauss(0, 4) = standar_deviasi * hitung_exponen(2, 2, sigma)          kernelgauss(1, 0) = standar_deviasi * hitung_exponen(2, 1, sigma)         kernelgauss(1, 1) = standar_deviasi * hitung_exponen(1, 1, sigma)         kernelgauss(1, 2) = standar_deviasi * hitung_exponen(0, 1, sigma)         kernelgauss(1, 3) = standar_deviasi * hitung_exponen(1, 1, sigma)         kernelgauss(1, 4) = standar_deviasi * hitung_exponen(2, 1, sigma)          kernelgauss(2, 0) = standar_deviasi * hitung_exponen(2, 0, sigma)         kernelgauss(2, 1) = standar_deviasi * hitung_exponen(1, 0, sigma)         kernelgauss(2, 2) = standar_deviasi * hitung_exponen(0, 0, sigma)         kernelgauss(2, 3) = standar_deviasi * hitung_exponen(1, 0, sigma)         kernelgauss(2, 4) = standar_deviasi * hitung_exponen(2, 0, sigma)          kernelgauss(3, 0) = standar_deviasi * hitung_exponen(2, 1, sigma)         kernelgauss(3, 1) = standar_deviasi * hitung_exponen(1, 1, sigma)         kernelgauss(3, 2) = standar_deviasi * hitung_exponen(0, 1, sigma)         kernelgauss(3, 3) = standar_deviasi * hitung_exponen(1, 1, sigma)         kernelgauss(3, 4) = standar_deviasi * hitung_exponen(2, 1, sigma)          kernelgauss(4, 0) = standar_deviasi * hitung_exponen(2, 2, sigma)         kernelgauss(4, 1) = standar_deviasi * hitung_exponen(1, 2, sigma)         kernelgauss(4, 2) = standar_deviasi * hitung_exponen(0, 2, sigma)         kernelgauss(4, 3) = standar_deviasi * hitung_exponen(1, 2, sigma)         kernelgauss(4, 4) = standar_deviasi * hitung_exponen(2, 2, sigma)           'sums kernel         dim sums_kernel double = 0         rowkernel integer = 0 kernelgauss.getupperbound(0)             columnkernel integer = 0 kernelgauss.getupperbound(1)                  sums_kernel += kernelgauss(rowkernel , columnkernel )             next         next           rowkernel integer = 0 kernelgauss.getupperbound(0)             columnkernel integer = 0 kernelgauss.getupperbound(1)                  kernelgauss(rowkernel , kolomkernel) = kernelgauss(rowkernel , columnkernel ) / sums_kernel              next         next            'start gauss         x integer = 2 w_gambar - 2             y integer = 2 h_gambar - 2    '1st row                 'channel r                 dim barispertamakolom1_r double                 barispertamakolom1_r = map_pikselr(x - 2, y + 2) * kernelgauss(0, 0)                 dim barispertamakolom2_r double                 barispertamakolom2_r = map_pikselr(x - 1, y + 2) * kernelgauss(0, 1)                 dim barispertamakolom3_r double                 barispertamakolom3_r = map_pikselr(x, y + 2) * kernelgauss(0, 2)                 dim barispertamakolom4_r double                 barispertamakolom4_r = map_pikselr(x + 1, y + 2) * kernelgauss(0, 3)                 dim barispertamakolom5_r double                 barispertamakolom5_r = map_pikselr(x + 2, y + 2) * kernelgauss(0, 4)                 dim barispertama_r double                 barispertama_r = barispertamakolom1_r + barispertamakolom2_r + barispertamakolom3_r + barispertamakolom4_r + barispertamakolom5_r                  'channel g                 dim barispertamakolom1_g double                 barispertamakolom1_g = map_pikselr(x - 2, y + 2) * kernelgauss(0, 0)                 dim barispertamakolom2_g double                 barispertamakolom2_g = map_pikselr(x - 1, y + 2) * kernelgauss(0, 1)                 dim barispertamakolom3_g double                 barispertamakolom3_g = map_pikselr(x, y + 2) * kernelgauss(0, 2)                 dim barispertamakolom4_g double                 barispertamakolom4_g = map_pikselr(x + 1, y + 2) * kernelgauss(0, 3)                 dim barispertamakolom5_g double                 barispertamakolom5_g = map_pikselr(x + 2, y + 2) * kernelgauss(0, 4)                 dim barispertama_g double                 barispertama_g = barispertamakolom1_g + barispertamakolom2_g + barispertamakolom3_g + barispertamakolom4_g + barispertamakolom5_g                  'channel b                 dim barispertamakolom1_b double                 barispertamakolom1_b = map_pikselr(x - 2, y + 2) * kernelgauss(0, 0)                 dim barispertamakolom2_b double                 barispertamakolom2_b = map_pikselr(x - 1, y + 2) * kernelgauss(0, 1)                 dim barispertamakolom3_b double                 barispertamakolom3_b = map_pikselr(x, y + 2) * kernelgauss(0, 2)                 dim barispertamakolom4_b double                 barispertamakolom4_b = map_pikselr(x + 1, y + 2) * kernelgauss(0, 3)                 dim barispertamakolom5_b double                 barispertamakolom5_b = map_pikselr(x + 2, y + 2) * kernelgauss(0, 4)                 dim barispertama_b double                 barispertama_b = barispertamakolom1_b + barispertamakolom2_b + barispertamakolom3_b + barispertamakolom4_b + barispertamakolom5_b    '2nd row                  'channel r                 dim bariskeduakolom1_r double                 bariskeduakolom1_r = map_pikselr(x - 2, y + 1) * kernelgauss(1, 0)                 dim bariskeduakolom2_r double                 bariskeduakolom2_r = map_pikselr(x - 1, y + 1) * kernelgauss(1, 1)                 dim bariskeduakolom3_r double                 bariskeduakolom3_r = map_pikselr(x, y + 1) * kernelgauss(1, 2)                 dim bariskeduakolom4_r double                 bariskeduakolom4_r = map_pikselr(x + 1, y + 1) * kernelgauss(1, 3)                 dim bariskeduakolom5_r double                 bariskeduakolom5_r = map_pikselr(x + 2, y + 1) * kernelgauss(1, 4)                 dim bariskedua_r double                 bariskedua_r = bariskeduakolom1_r + bariskeduakolom2_r + bariskeduakolom3_r + bariskeduakolom4_r + bariskeduakolom5_r                  'channel g                 dim bariskeduakolom1_g double                 bariskeduakolom1_g = map_pikselr(x - 2, y + 1) * kernelgauss(1, 0)                 dim bariskeduakolom2_g double                 bariskeduakolom2_g = map_pikselr(x - 1, y + 1) * kernelgauss(1, 1)                 dim bariskeduakolom3_g double                 bariskeduakolom3_g = map_pikselr(x, y + 1) * kernelgauss(1, 2)                 dim bariskeduakolom4_g double                 bariskeduakolom4_g = map_pikselr(x + 1, y + 1) * kernelgauss(1, 3)                 dim bariskeduakolom5_g double                 bariskeduakolom5_g = map_pikselr(x + 2, y + 1) * kernelgauss(1, 4)                 dim bariskedua_g double                 bariskedua_g = bariskeduakolom1_g + bariskeduakolom2_g + bariskeduakolom3_g + bariskeduakolom4_g + bariskeduakolom5_g                  'channel b                 dim bariskeduakolom1_b double                 bariskeduakolom1_b = map_pikselr(x - 2, y + 1) * kernelgauss(1, 0)                 dim bariskeduakolom2_b double                 bariskeduakolom2_b = map_pikselr(x - 1, y + 1) * kernelgauss(1, 1)                 dim bariskeduakolom3_b double                 bariskeduakolom3_b = map_pikselr(x, y + 1) * kernelgauss(1, 2)                 dim bariskeduakolom4_b double                 bariskeduakolom4_b = map_pikselr(x + 1, y + 1) * kernelgauss(1, 3)                 dim bariskeduakolom5_b double                 bariskeduakolom5_b = map_pikselr(x + 2, y + 1) * kernelgauss(1, 4)                 dim bariskedua_b double                 bariskedua_b = bariskeduakolom1_b + bariskeduakolom2_b + bariskeduakolom3_b + bariskeduakolom4_b + bariskeduakolom5_b  '3rd row                  'channel r                 dim barisketigakolom1_r double                 barisketigakolom1_r = map_pikselr(x - 2, y) * kernelgauss(2, 0)                 dim barisketigakolom2_r double                 barisketigakolom2_r = map_pikselr(x - 1, y) * kernelgauss(2, 1)                 dim barisketigakolom3_r double                 barisketigakolom3_r = map_pikselr(x, y) * kernelgauss(2, 2)                 dim barisketigakolom4_r double                 barisketigakolom4_r = map_pikselr(x + 1, y) * kernelgauss(2, 3)                 dim barisketigakolom5_r double                 barisketigakolom5_r = map_pikselr(x + 2, y) * kernelgauss(2, 4)                 dim barisketiga_r double                 barisketiga_r = barisketigakolom1_r + barisketigakolom2_r + barisketigakolom3_r + barisketigakolom4_r + barisketigakolom5_r                  'channel g                 dim barisketigakolom1_g double                 barisketigakolom1_g = map_pikselr(x - 2, y) * kernelgauss(2, 0)                 dim barisketigakolom2_g double                 barisketigakolom2_g = map_pikselr(x - 1, y) * kernelgauss(2, 1)                 dim barisketigakolom3_g double                 barisketigakolom3_g = map_pikselr(x, y) * kernelgauss(2, 2)                 dim barisketigakolom4_g double                 barisketigakolom4_g = map_pikselr(x + 1, y) * kernelgauss(2, 3)                 dim barisketigakolom5_g double                 barisketigakolom5_g = map_pikselr(x + 2, y) * kernelgauss(2, 4)                 dim barisketiga_g double                 barisketiga_g = barisketigakolom1_g + barisketigakolom2_g + barisketigakolom3_g + barisketigakolom4_g + barisketigakolom5_g                  'channel b                 dim barisketigakolom1_b double                 barisketigakolom1_b = map_pikselr(x - 2, y) * kernelgauss(2, 0)                 dim barisketigakolom2_b double                 barisketigakolom2_b = map_pikselr(x - 1, y) * kernelgauss(2, 1)                 dim barisketigakolom3_b double                 barisketigakolom3_b = map_pikselr(x, y) * kernelgauss(2, 2)                 dim barisketigakolom4_b double                 barisketigakolom4_b = map_pikselr(x + 1, y) * kernelgauss(2, 3)                 dim barisketigakolom5_b double                 barisketigakolom5_b = map_pikselr(x + 2, y) * kernelgauss(2, 4)                 dim barisketiga_b double                 barisketiga_b = barisketigakolom1_b + barisketigakolom2_b + barisketigakolom3_b + barisketigakolom4_b + barisketigakolom5_b  '4th row                 'channel r                 dim bariskeempatkolom1_r double                 bariskeempatkolom1_r = map_pikselr(x - 2, y + 1) * kernelgauss(3, 0)                 dim bariskeempatkolom2_r double                 bariskeempatkolom2_r = map_pikselr(x - 1, y + 1) * kernelgauss(3, 1)                 dim bariskeempatkolom3_r double                 bariskeempatkolom3_r = map_pikselr(x, y + 1) * kernelgauss(3, 2)                 dim bariskeempatkolom4_r double                 bariskeempatkolom4_r = map_pikselr(x + 1, y + 1) * kernelgauss(3, 3)                 dim bariskeempatkolom5_r double                 bariskeempatkolom5_r = map_pikselr(x + 2, y + 1) * kernelgauss(3, 4)                 dim bariskeempat_r double                 bariskeempat_r = bariskeempatkolom1_r + bariskeempatkolom2_r + bariskeempatkolom3_r + bariskeempatkolom4_r + bariskeempatkolom5_r                  'channel g                 dim bariskeempatkolom1_g double                 bariskeempatkolom1_g = map_pikselr(x - 2, y + 1) * kernelgauss(3, 0)                 dim bariskeempatkolom2_g double                 bariskeempatkolom2_g = map_pikselr(x - 1, y + 1) * kernelgauss(3, 1)                 dim bariskeempatkolom3_g double                 bariskeempatkolom3_g = map_pikselr(x, y + 1) * kernelgauss(3, 2)                 dim bariskeempatkolom4_g double                 bariskeempatkolom4_g = map_pikselr(x + 1, y + 1) * kernelgauss(3, 3)                 dim bariskeempatkolom5_g double                 bariskeempatkolom5_g = map_pikselr(x + 2, y + 1) * kernelgauss(3, 4)                 dim bariskeempat_g double                 bariskeempat_g = bariskeempatkolom1_g + bariskeempatkolom2_g + bariskeempatkolom3_g + bariskeempatkolom4_g + bariskeempatkolom5_g                  'channel b                 dim bariskeempatkolom1_b double                 bariskeempatkolom1_b = map_pikselr(x - 2, y + 1) * kernelgauss(3, 0)                 dim bariskeempatkolom2_b double                 bariskeempatkolom2_b = map_pikselr(x - 1, y + 1) * kernelgauss(3, 1)                 dim bariskeempatkolom3_b double                 bariskeempatkolom3_b = map_pikselr(x, y + 1) * kernelgauss(3, 2)                 dim bariskeempatkolom4_b double                 bariskeempatkolom4_b = map_pikselr(x + 1, y + 1) * kernelgauss(3, 3)                 dim bariskeempatkolom5_b double                 bariskeempatkolom5_b = map_pikselr(x + 2, y + 1) * kernelgauss(3, 4)                 dim bariskeempat_b double                 bariskeempat_b = bariskeempatkolom1_b + bariskeempatkolom2_b + bariskeempatkolom3_b + bariskeempatkolom4_b + bariskeempatkolom5_b  '5th row                 'channel r                 dim bariskelimakolom1_r double                 bariskelimakolom1_r = map_pikselr(x - 2, y + 2) * kernelgauss(4, 0)                 dim bariskelimakolom2_r double                 bariskelimakolom2_r = map_pikselr(x - 1, y + 2) * kernelgauss(4, 1)                 dim bariskelimakolom3_r double                 bariskelimakolom3_r = map_pikselr(x, y + 2) * kernelgauss(4, 2)                 dim bariskelimakolom4_r double                 bariskelimakolom4_r = map_pikselr(x + 1, y + 2) * kernelgauss(4, 3)                 dim bariskelimakolom5_r double                 bariskelimakolom5_r = map_pikselr(x + 2, y + 2) * kernelgauss(4, 4)                 dim bariskelima_r double                 bariskelima_r = bariskelimakolom1_r + bariskelimakolom2_r + bariskelimakolom3_r + bariskelimakolom4_r + bariskelimakolom5_r                  'channel g                 dim bariskelimakolom1_g double                 bariskelimakolom1_g = map_pikselr(x - 2, y + 2) * kernelgauss(4, 0)                 dim bariskelimakolom2_g double                 bariskelimakolom2_g = map_pikselr(x - 1, y + 2) * kernelgauss(4, 1)                 dim bariskelimakolom3_g double                 bariskelimakolom3_g = map_pikselr(x, y + 2) * kernelgauss(4, 2)                 dim bariskelimakolom4_g double                 bariskelimakolom4_g = map_pikselr(x + 1, y + 2) * kernelgauss(4, 3)                 dim bariskelimakolom5_g double                 bariskelimakolom5_g = map_pikselr(x + 2, y + 2) * kernelgauss(4, 4)                 dim bariskelima_g double                 bariskelima_g = bariskelimakolom1_g + bariskelimakolom2_g + bariskelimakolom3_g + bariskelimakolom4_g + bariskelimakolom5_g                  'channel b                 dim bariskelimakolom1_b double                 bariskelimakolom1_b = map_pikselr(x - 2, y + 2) * kernelgauss(4, 0)                 dim bariskelimakolom2_b double                 bariskelimakolom2_b = map_pikselr(x - 1, y + 2) * kernelgauss(4, 1)                 dim bariskelimakolom3_b double                 bariskelimakolom3_b = map_pikselr(x, y + 2) * kernelgauss(4, 2)                 dim bariskelimakolom4_b double                 bariskelimakolom4_b = map_pikselr(x + 1, y + 2) * kernelgauss(4, 3)                 dim bariskelimakolom5_b double                 bariskelimakolom5_b = map_pikselr(x + 2, y + 2) * kernelgauss(4, 4)                 dim bariskelima_b double                 bariskelima_b = bariskelimakolom1_b + bariskelimakolom2_b + bariskelimakolom3_b + bariskelimakolom4_b + bariskelimakolom5_b                   'sums channel r                 dim sums_r double = barispertama_r + bariskedua_r + barisketiga_r + bariskeempat_r + bariskelima_r                 sums_r = round(sums_r )                 'sums channel g                 dim sums_g double = barispertama_g + bariskedua_g + barisketiga_g + bariskeempat_g + bariskelima_g                 sums_g = round(sums_g )                 'sums channel b                 dim sums_b double = barispertama_b + bariskedua_b + barisketiga_b + bariskeempat_b + bariskelima_b                 sums_b = round(sums_b )                  if sums_r > 255                     console.writeline("koord " & x.tostring & "," & y.tostring & " r= " & sums_r.tostring)                 elseif sums_g > 255                     console.writeline("koord " & x.tostring & "," & y.tostring & " g= " & sums_g.tostring)                 elseif sums_b > 255                     console.writeline("koord " & x.tostring & "," & y.tostring & " b= " & sums_b.tostring)                  end if                  map_barur(x, y) = sums_r                 map_barug(x, y) = sums_g                 map_barub(x, y) = sums_b              next         next 

update : realize this, when use grayscale image, works. when use full color image on kernel 5x5 , turns image grayscale. realize red channel got more 255.

well made gausian quite complex. in simple form 1/273 times summed image kernel each pixel multiplied these values : enter image description here

if want can use other numbers, sure 1/p p total sum of multipliers.

ps think faster hardcode multipliers instead of doing exponential math , pi


Comments

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -