Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像中两个直方图之间的Kullback-Leibler散度(MATLAB)_Matlab_Image Processing_Histogram - Fatal编程技术网

图像中两个直方图之间的Kullback-Leibler散度(MATLAB)

图像中两个直方图之间的Kullback-Leibler散度(MATLAB),matlab,image-processing,histogram,Matlab,Image Processing,Histogram,我在matlab上从图像中提取直方图,然后我想用KL散度比较直方图。 我发现了,但我不明白如何将其应用到我的案例中 所以这里我拉我的柱状图(非常简单!!): N是我的图像的直方图I 你可以看到我的结果是inf。。。 请你告诉我在我的情况下如何使用脚本? 谢谢您可能希望使用,而不是按列计算直方图来计算图像的直方图: I1 = rand(10); I2 = rand(10); [N1, X1] = imhist(I1, 10); % limit the number of bins to avoid

我在matlab上从图像中提取直方图,然后我想用KL散度比较直方图。 我发现了,但我不明白如何将其应用到我的案例中

所以这里我拉我的柱状图(非常简单!!):

N
是我的图像的直方图
I

你可以看到我的结果是
inf
。。。 请你告诉我在我的情况下如何使用脚本?
谢谢

您可能希望使用,而不是按列计算直方图来计算图像的直方图:

I1 = rand(10);
I2 = rand(10);
[N1, X1] = imhist(I1, 10); % limit the number of bins to avoid zero values
[N2, X2] = imhist(I2, 10);

KLDiv(N1.', N2.') % convert to row vectors to correspond with the requested format
KLDiv(N1.', N1.') % the divergence of an histogram with itself is indeed zero
请注意,我限制了存储箱的数量,以确保每个存储箱至少有一个点,因为如果Q(I)为零,而p(I)不是:

只有当Q(i)=0意味着 P(i)=0,对于所有i(绝对连续性)

注释

  • Kullback–Leibler散度的范围?
    任何正数,如果(且仅当)它们相等,则为零:

  • 对数应该取哪个基数?自然对数
    log
    还是以2为底的对数
    log2

    请注意,这只是一个缩放结果的问题。所以事实上,这并不重要,但是如果你想比较你的结果,一定要使用相同的对数。建议如下:

如果信息不完整,则这些公式中的对数以2为底 以单位为单位测量,如果信息以单位为单位,则以e为基数


谢谢你的回答!我有两个小问题,(1)我发现我的
KLD=1.2
可能吗?我认为0我只想指定,在我的情况下,如果我只使用10(箱数),我将失去精度,因此我保留了255个点,并在代码中添加:
temp(isinf(temp))=0
temp(isnan(temp))=0inf
NaN
I1 = rand(10);
I2 = rand(10);
[N1, X1] = imhist(I1, 10); % limit the number of bins to avoid zero values
[N2, X2] = imhist(I2, 10);

KLDiv(N1.', N2.') % convert to row vectors to correspond with the requested format
KLDiv(N1.', N1.') % the divergence of an histogram with itself is indeed zero