【问题标题】:correlation coefficient equation not working相关系数方程不起作用
【发布时间】:2015-11-12 15:15:54
【问题描述】:

我写了一个VB代码来计算原始图像和加密图像之间的相关系数。相关系数值介于 0 到 1 之间,但是,在执行下面的代码后,这些值大于 2 或 4 等值。我使用的等式如下: 请检查一下为什么我会得到这些 vales。

这是我使用的代码,请注意在 x 和 y 循环之前所有变量都设置为零:

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)
  • 你能把代码剪成红色吗(假设它给出了错误的值)?我会建议比sum[rgb][123] 更好的名字:sum[rgb]1 可以是covar[rgb]sum[rgb]2 可以是var[rgb]sum[rgb]3 可以是nvar[rgb]
  • @user3819984 我明白这一点。我是说我没有看到您的代码有任何问题,并且怀疑错误可能在其他地方。您需要将其转换为minimal reproducible example,其中一步是只关注红色。并包括Sqr。并包括Rednred 的数据(可能只是按字面意思输入)。
  • 您使用的图像分辨率是多少?如果它太大,那么可能是你的数据类型溢出了......先尝试较小的,如果没有错,尝试切换到更大的变量或确保你在<0,1>范围内的浮点数...

标签: vb.net algorithm math vb6


【解决方案1】:

我已将您的代码 sn-p 限制为红色,并创建了两个函数,它们只为 x=0y=0 返回一个像素值。此代码 sn-p 似乎正在工作并返回 -1 和 1 之间的相关系数。请注意,我已将 meanr_omeanr_esumr1sumr2sumr3Corr_r 声明为双精度数.我也在使用Math.Sqrt 而不是Sqr,你可以找到一个.NET fiddle here

Public Module Module1
    Function Red(ByVal x As Integer, ByVal y As Integer) As Integer
        ' local variable declaration */
        Dim result As Integer
        If (x = 0) And (y = 0) Then
            result = 255
        Else
            result = 0
        End If
        Red = result
    End Function

    Function nred(ByVal x As Integer, ByVal y As Integer) As Integer
        ' local variable declaration */
        Dim result As Integer
        If (x = 0) And (y = 0) Then
            result = 255
        Else
            result = 0
        End If
        nred = result
    End Function

    Public Sub Main()
        Dim hgt, wid, N As Integer
        Dim meanr_o, meanr_e, sumr1, sumr2, sumr3, Corr_r As Double
        hgt = 255
        wid = 255
        For y = 0 To hgt - 1 : For x = 0 To wid - 1
                meanr_o = meanr_o + Red(x, y)
                meanr_e = meanr_e + nred(x, y)
                N = N + 1
            Next x : Next y

        meanr_o = meanr_o / N
        meanr_e = meanr_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)
            Next x : Next y
        sumr1 = sumr1 / N
        sumr2 = sumr2 / N
        sumr3 = sumr3 / N

        Corr_r = sumr1 / System.Math.Sqrt(sumr2 * sumr3)
        System.Console.WriteLine("Correlation is : {0}", Corr_r)

    End Sub
End Module

【讨论】:

  • 感谢您的回答,但是代码返回的相关系数值不正确,例如 -6 或 -4。我检查了所有 red() 和 nred() 值,但它不起作用。
  • 使用 .NET Framework 4.5 的示例返回相关系数为 1,输出为“相关性为:1”。该示例为您返回了什么?
  • 该示例返回 1,但是将其用于图像时结果不正确。
  • 你能贴出这些图片吗?我想知道从图像返回像素值的代码中是否存在错误。
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2012-01-08
  • 2015-09-24
  • 2010-11-16
相关资源
最近更新 更多