我必须做以下事情 -
1)找到属于强度级别0到强度级别255的像素,并将它们存储在256个阵列中 2)将像素从一个强度级别重新分配到另一个强度级别,以便所有256个级别具有相同的像素。
这是我想要解决的更大问题的算法,我被困在这里,因为我不知道如何操纵单元格数组元素。
我将在单元阵列中拥有256个单元格,并且我将比较和重新分配属于单个单元格的元素。 Matlab专家请帮忙。
答案 0 :(得分:0)
算法很简单。从二维图像矩阵创建一维数据阵列。数组的每个元素都有四个属性:
现在,根据强度值,根据此数据生成直方图,其值为256个唯一区间之一。这应该很容易。
现在,只计算每个bin中应该有的平均元素数(即:rows * columns / 256),并将其四舍五入到最接近的整数。使用此值,您可以知道每个直方图“bin”中应有多少像素。所以,在你的直方图中,你:
现在直方图是均衡的,你可以循环它的内容来重新创建原始的2D图像。
“优先级”值非常重要,因此您不会意外地将像素移动到比所需更多的区域,从而导致高斯噪声或甚至脉冲/椒盐噪声。
整体算法应该是O(n^2)
,所以它在性能方面应该是不错的。
最后一件事:如果您使用的排序算法不是一个稳定的排序,它会或多或少地随机化哪些相等值的像素在二进制位上移动,这有助于防止移动一组相邻像素具有相同的强度值。