嗨,谁能告诉我代码如何在没有 matlab 工具箱(imhist,hist)的情况下创建直方图?
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(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 的外循环(见上文)。
所以,这是您的代码的 "sanitized" 版本:
[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
希望对您有所帮助。
谁能告诉我如何在没有 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(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 的外循环(见上文)。
所以,这是您的代码的 "sanitized" 版本:
[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
希望对您有所帮助。