我正在尝试计算图像的直方图。我正在使用以下公式来计算bin
x
我必须实现以下Matlab函数。
%bin = red*(N^2) + green*(N^1) + blue;
当我运行代码时,我收到以下错误消息“下标索引必须是真正的正整数或逻辑。”
由于我是Matlab和图像处理的新手,我不确定问题是实现算法还是语法错误。
答案 0 :(得分:1)
您的代码有3个问题。 (如果你认为你的累加器向量从F
变为bin
,则为四,但我认为这是一个错字。)
首先,如果给定像素的值较低,则变量F(0)
在任何时刻都可以为零。 F(bin+1)
不是矢量或矩阵的有效索引。这就是你得到这个错误的原因。
您可以通过F
轻松解决,并请注意,您的bin + 1
向量会将您的值移到一个位置。
第二个错误,您要将值F
分配给累加器向量F(bin+1) = F(bin+1) + 1;
,这不是您想要的,您希望每次找到该范围内的像素时添加1,你是什么应该做的是F
。这样,bin = red*(N^2) + green*(N^1) + blue;
的值将一直在增加。
第三个错误更简单,您忘记实施{{1}}等式