假设我在 matlab 变量
中有这三个变量,
我想在 NewGrayLevels 中提取不同的值,并对与一个不同的值在同一行中的 OldHistogram 的行求和。
例如,您在 NewGrayLevels 中看到前六行等于零。这意味着 NewGrayLevels 中的 0 取自 OldGrayLevels 的 (0 1 2 3 4 5) 值。所以应该对 OldHistogram 中的相应行求和。
所以0+2+12+38+113+163=328就是均衡直方图中灰度0的频率,以此类推。
熟悉图像处理的人都知道,它是直方图均衡算法的一部分。
请注意,我不想使用图像处理工具箱中提供的内置函数“histeq”,我想自己实现它。
我知道如何用 for 循环编写算法。我正在寻找是否有更快的方法而不使用 for 循环。
使用 for 循环的代码:
for k=0:255
Condition = NewGrayLevels==k;
ConditionMultiplied = Condition.*OldHistogram;
NewHistogram(k+1,1) = sum(ConditionMultiplied);
end
恐怕这个代码对于高分辨率大图像会变慢。因为我上传的变量是从互联网下载的小图像,但我的代码可能用于卫星图像。