注意:这篇文章上次更新于802天前,文章内容可能已经过时。
题目说的不对,准确的说这个图叫概率密度分布。
输入一组数据,画出这组数据的概率密度函数曲线。
在图像处理中,可以用来表现像素的分布情况,与直方图功能类似。
给定一幅图像,画三个通道的分布情况。
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