[英]Hi, can anyone tell me code how to create histogram without the toolbox (imhist,hist) from matlab?
谁能告诉我如何在没有 matlab 函数的情况下从灰度图像创建直方图。
谢谢
比您的代码更有效:
histogram = zeros(1,256);
for value = 1:256 % loop through possible values
histogram(value) = histogram(value) + length(find(F(:)==value));
end
请注意,此代码为从 1 到 256 的值制作了一个直方图。对于灰度图像,您可能需要一个从 0 到 255 的直方图。但为了练习,我会让您自己更改它。
编辑:既然你要求修改你的代码,让我评论一下:
[m n]=size(F);
x=0;
无需将x
设置为零,稍后您将覆盖它。
H=0;
您应该将H
初始化为一个数组,而不是将H
设置为零,因为您想稍后填充H(x)
。 像H = zeros(1,256);
for z=1:256
我不确定 z 上的这个循环应该做什么。 你从不使用z
。 你可以删除它。
for i=1:m
for j=1:n
x==F(i,j);
正如我在下面所说的,这应该是x=F(i,j);
相反,因为==
是对相等性的测试。
H(x+1)=H(x+1)+1
如果F
中的所有值都保证在 0 到 255 之间,这将起作用。尽管我会说这不是很好的风格。
另外,在这一行的末尾放一个分号来抑制输出,否则你的命令行会被淹没(这也会大大减慢速度)。
end
end
H;
最后一行什么都不做。 为什么会在那里?
end
不需要 z 上的外循环(见上文)。
因此,这是您的代码的“消毒”版本:
[m,n] = size(F);
H = zeros(1,256);
for i=1:m
for j=1:n
x=F(i,j);
H(x+1)=H(x+1)+1;
end
end
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.