2014-03-31 57 views
0

我有一个有符号的16位图像(像素范围从0到256以上)。我想计算像素的概率并保存到文件。如何在matlab中做到这一点。我尝试通过我的代码来做到这一点。但它不是成功的。我的风格是计算matlab中图像的像素概率

Pixel Value | Prob 
      1 | 0.1 
      2 | 0.2 
      3 | 0.03 
    ... 

这是我的代码

im=imread('test.bmp'); 
im=double(im); 
[m n]=size(im); 
p=zeros(2,max(im(:))); 
im=im(:); 
imsort=sort(im); 
for j=1:max(imsort(:)) 
    p(1,j)=j; 
    count=sum(j==im(:)); 
    p(2,j)=count/(m*n); 
end 

回答

3

使用histc

values = (0:2^16-1).'; 
count = histc(im(:), values); 
prob = count/sum(count); 

所需格式的结果将是

result = [values prob]; 
+0

谢谢主席先生,但我想保存在一个有2列的数组中,并且我用我的风格来修复它。这是对的吗?感谢 – user3336190

+0

请参阅编辑 –

1

为了节省直方图结果作为文本文件

save(filename, variable,'ascii');