如何在Matlab中从图像的RGB值绘制直方图?

时间:2016-04-03 03:16:20

标签: matlab

我有一张图片,我提取了特定区域的rgb值并将其存储在文本文件中(See Text File

读取R值:

fid = fopen('input.txt');
R = textscan(fid, '%f %*[^\n]');
R = C{:};
fclose(fid);

同样,我可以读取其他值并将其存储在G&乙

但是如何在相同的直方图上绘制所有这些。我需要它们,所以我可以从直方图计算最大似然估计。

感谢帮助。

1 个答案:

答案 0 :(得分:0)

x=dlmread('filename',' ')
hist(x)

同时检查

bar3(x)

您无法绘制多变量直方图,因为它是4D图。

要制作3D分档,您可以制作如下内容:

s=32;%bin separation (power of 2)

r=[0:s:255]

bins=combvec(r,r,r)+s/2 %your bins, size is (256/s)^3    
binval=zeros(length(grid),1)

x=dlmread('filename',' ')
for m = [ 1:length(x)]
  for n = [ 1:length(bins)]
%using infinite norm, note bin off-centering
    if norm(x(m,:)-(grid(n,:)-0.5),inf) < s/2
       binval(n)+=1
       break
    end
  end
end

如果您仍想要4D直方图,请尝试使用scatter3。使用binval作为标记大小,甚至使用C.作为RGB颜色。