图像的 MATLAB 高斯分布之和大于 1
Sum of MATLAB Gaussian distribution of an image is greater than 1
我正在使用下面的代码来计算下面给出的图像的像素强度概率。但是,概率总和 sum(sum(probOfPixelIntensities))
大于 1。
我不确定哪里出错了。任何有助于解决这个问题的帮助将不胜感激。提前致谢。
clear all
clc
close all
I = imread('Images/cameraman.jpg');
I = rgb2gray(I);
imshow(I)
muHist = 134;
sigmaHist = 54;
Iprob = normpdf(double(I), muHist, sigmaHist);
sum(sum(Iprob))
请记住,PDF 只是概率密度函数 $p(x)$。限制在 $[0, 1]$ 范围内的函数是该函数 $\int_D p(x)dx$.
的所有域的积分
参考Matlab manual,Y = normpdf(X,mu,sigma) 使用均值 mu 和标准差 sigma 的正态分布计算 X 中每个值的 pdf。
pdf的总和等于1。
输出的总和不是。
您正在做的是计算图像中每个像素的 PDF 值。 Iprob
不是 正态分布,但您只是使用图像像素从已知均值和标准差的分布中采样。
本质上,您只是在执行数据转换,其中图像像素强度被映射到具有已知均值和标准差的普通 PDF 上的值。这与 PDF 不 相同,这就是总和不是 1 的原因。除此之外,图像像素强度本身甚至不遵循正态分布,因此不会分布总和为 1 的任何方式。
除了 normpdf
的输出不是您所期望的那样,没什么可说的了。您应该选择更仔细地阅读 normpdf
的文档:http://www.mathworks.com/help/stats/normpdf.html
如果您想确定图像的实际PDF,您需要做的是找到图像的直方图,而不是进行数据转换。你可以用 imhist
来做到这一点。执行此操作后,假设遇到强度是等概率的,您将 除以 每个直方图条目除以图像的总大小,然后对所有 bin 求和。在这种情况下,您应该将总和设为 1。
为了验证,让我们使用您在 post 中提供的图像。我们将从 Whosebug 中读取它。一旦我们这样做了,计算 PDF,然后对所有 bin 求和:
%// Load in image
im = rgb2gray(imread('http://i.stack.imgur.com/0XiU5.jpg'));
%// Compute PDF
h = imhist(im) / numel(im);
%// Sum over all bins
fprintf('Total sum over all bins is: %f\n', sum(h));
我们得到:
Total sum over all bins is: 1.000000
为了确保您完全理解,这是 图像 的 PDF 文件。您之前所做的是执行数据转换,转换符合高斯分布且均值和标准差已知的所有图像像素强度。这将不会如你所料地给你总和 1。
我正在使用下面的代码来计算下面给出的图像的像素强度概率。但是,概率总和 sum(sum(probOfPixelIntensities))
大于 1。
我不确定哪里出错了。任何有助于解决这个问题的帮助将不胜感激。提前致谢。
clear all
clc
close all
I = imread('Images/cameraman.jpg');
I = rgb2gray(I);
imshow(I)
muHist = 134;
sigmaHist = 54;
Iprob = normpdf(double(I), muHist, sigmaHist);
sum(sum(Iprob))
请记住,PDF 只是概率密度函数 $p(x)$。限制在 $[0, 1]$ 范围内的函数是该函数 $\int_D p(x)dx$.
的所有域的积分参考Matlab manual,Y = normpdf(X,mu,sigma) 使用均值 mu 和标准差 sigma 的正态分布计算 X 中每个值的 pdf。
pdf的总和等于1。 输出的总和不是。
您正在做的是计算图像中每个像素的 PDF 值。 Iprob
不是 正态分布,但您只是使用图像像素从已知均值和标准差的分布中采样。
本质上,您只是在执行数据转换,其中图像像素强度被映射到具有已知均值和标准差的普通 PDF 上的值。这与 PDF 不 相同,这就是总和不是 1 的原因。除此之外,图像像素强度本身甚至不遵循正态分布,因此不会分布总和为 1 的任何方式。
除了 normpdf
的输出不是您所期望的那样,没什么可说的了。您应该选择更仔细地阅读 normpdf
的文档:http://www.mathworks.com/help/stats/normpdf.html
如果您想确定图像的实际PDF,您需要做的是找到图像的直方图,而不是进行数据转换。你可以用 imhist
来做到这一点。执行此操作后,假设遇到强度是等概率的,您将 除以 每个直方图条目除以图像的总大小,然后对所有 bin 求和。在这种情况下,您应该将总和设为 1。
为了验证,让我们使用您在 post 中提供的图像。我们将从 Whosebug 中读取它。一旦我们这样做了,计算 PDF,然后对所有 bin 求和:
%// Load in image
im = rgb2gray(imread('http://i.stack.imgur.com/0XiU5.jpg'));
%// Compute PDF
h = imhist(im) / numel(im);
%// Sum over all bins
fprintf('Total sum over all bins is: %f\n', sum(h));
我们得到:
Total sum over all bins is: 1.000000
为了确保您完全理解,这是 图像 的 PDF 文件。您之前所做的是执行数据转换,转换符合高斯分布且均值和标准差已知的所有图像像素强度。这将不会如你所料地给你总和 1。