题目说的不对,准确的说这个图叫概率密度分布。
输入一组数据,画出这组数据的概率密度函数曲线。
在图像处理中,可以用来表现像素的分布情况,与直方图功能类似。

给定一幅图像,画三个通道的分布情况。

I = im2double(imread('846_img_.png'));
[m,n,~]=size(I);
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
[fr,xr] = ksdensity(R(:)); 
[fg,xg] = ksdensity(G(:)); 
[fb,xb] = ksdensity(B(:)); 
fr = fr*m*n;
fg = fg*m*n;
fb = fb*m*n;
figure;
hold on
plot(xr*255,fr,'r','LineWidth',2);
plot(xg*255,fg,'g','LineWidth',2);
plot(xb*255,fb,'b','LineWidth',2);
yy = max(max(fb),max(max(fr),max(fg))) * 6 / 5;
hold off
box on
axis([0 255 0 yy])
xlabel('Intensity')
ylabel('Counts')
t = title('RGB Histograms');

给定原始图像和参考图像,将两幅图像的分布情况画在一起。


I = imread("89_img_.png");
ref = imread('566_img_.png');

pdf2(I,ref);

function pdf2(img,ref)

[m,n,~] = size(img);

img = im2double(img);
ref = im2double(ref);

[fr,xr] = ksdensity(img(:)); 
[fg,xg] = ksdensity(ref(:)); 

fr = fr*m*n;
fg = fg*m*n;

yy = max(max(fr),max(fg)) * 6 / 5;

figure;
hold on
plot(xr*255,fr,'r','LineWidth',2);
plot(xg*255,fg,'g','LineWidth',2);
hold off
legend('img','Reference','Location','Best');

box on
axis([0 255 0 yy])
xlabel('Intensity')
ylabel('Counts')
title('RGB Histograms');

end