Я написал код VB для вычисления коэффициента корреляции между оригинальным и зашифрованным изображением. Значения коэффициента корреляции находятся в диапазоне от 0 до 1, однако после реализации кода ниже значения больше, чем один, например, 2 или 4. Уравнение, с которым я работал, выглядит следующим образом: Можете ли вы проверить, почему я получаю эти значения, Пожалуйста.уравнение коэффициента корреляции не работает
Это код, который я использовал, пожалуйста, обратите внимание, все переменный устанавливаются в ноль до й и у петли:
For y = 0 To hgt-1: For x = 0 To wid-1
meanr_o = meanr_o + Red(x, y)
meang_o = meang_o + Grn(x, y)
meanb_o = meanb_o + Blu(x, y)
meanr_e = meanr_e + nred(x, y)
meang_e = meang_e + nGrn(x, y)
meanb_e = meanb_e + nBlu(x, y)
N = N + 1
Next x: Next y
meanr_o = meanr_o/N
meang_o = meang_o/N
meanb_o = meanb_o/N
meanr_e = meanr_e/N
meang_e = meang_e/N
meanb_e = meanb_e/N
For y = 0 To hgt-1: For x = 0 To wid-1
sumr1 = sumr1 + ((Red(x, y) - meanr_o) * (nred(x, y) - meanr_e))
sumr2 = sumr2 + ((Red(x, y) - meanr_o)^2)
sumr3 = sumr3 + ((nred(x, y) - meanr_e)^2)
''''''''''''''''''''''''''''''''''''''''''
sumg1 = sumg1 + ((Grn(x, y) - meang_o) * (nGrn(x, y) - meang_e))
sumg2 = sumg2 + ((Grn(x, y) - meang_o)^2)
sumg3 = sumg3 + ((nGrn(x, y) - meang_e)^2)
''''''''''''''''''''''''''''''''''''''''''
sumb1 = sumb1 + ((Blu(x, y) - meanb_o) * (nBlu(x, y) - meanb_e))
sumb2 = sumb2 + ((Blu(x, y) - meanb_o)^2)
sumb3 = sumb3 + ((nBlu(x, y) - meanb_e)^2)
Next x: Next y
sumr1 = sumr1/N
sumr2 = sumr2/N
sumr3 = sumr3/N
sumg1 = sumg1/N
sumg2 = sumg2/N
sumg3 = sumg3/N
sumb1 = sumb1/N
sumb2 = sumb2/N
sumb3 = sumb3/N
Corr_r = sumr1/Sqr(sumr2 * sumr3)
Corr_g = sumg1/Sqr(sumg2 * sumg3)
Corr_b = sumb1/Sqr(sumb2 * sumb3)
Corr = (Corr_r + Corr_g + Corr_b)/3
Label1.Caption = Corr
Все данные указаны верно. Возможно, Red, nred - 0-255, но ожидаемая формула 0-1 –
Какое значение вы используете для коэффициента корреляции для двух красных изображений? (R = 255, G = 0, B = 0) – Jaco
Не могли бы вы обрезать код до красноты (при условии, что он дает плохие значения)? И я бы предложил лучшие имена, чем 'sum [rgb] [123]': 'sum [rgb] 1' может быть' covar [rgb] ',' sum [rgb] 2' может быть 'var [rgb]' и 'sum [rgb] 3' может быть' nvar [rgb] '. – Teepeemm