我试图实现使用ImageJ为8位灰度图像的直方图算法。以下是我的代码,无法正常工作。请记住我是初学者。直方图均衡化(图像Javascript初学者)
我的imageJ代码应该如何工作?
for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) {
min = lut[i+1];
}
for (i=0; i < 256; ++i)
{
sum += histo[i];
lut[i] = sum;
}
我试图实现使用ImageJ为8位灰度图像的直方图算法。以下是我的代码,无法正常工作。请记住我是初学者。直方图均衡化(图像Javascript初学者)
我的imageJ代码应该如何工作?
for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) {
min = lut[i+1];
}
for (i=0; i < 256; ++i)
{
sum += histo[i];
lut[i] = sum;
}
首先你要扫描图像搜索最小/最大 - 在[0..pixelCount在OriginalImage,而不是在LUT []搜索。
然后填写直方图(LUT []数组,你没有填充)
然后填充EqualizedImage [K]与(最大 - 最小)*(原始[K] - 分钟)/pixelCount;如果我不犯一些错误。
EDIT(这里旧的东西)
的 'i' 在()循环绝对超出范围的 '我< = MaxIntensity'(MaxIntensity = 255)。
lut = newArray(256)
...
min = 0;
for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) {
min = lut[i+1];
}
目前尚不清楚你想要与该代码做什么,但如果你只是为了寻找非零最小的LUT []数组中,那么为什么不利用这一点:
min = 0;
for (i = 0; i < MaxIntensity ; i++)
{
if(min > lut[i]) { min = lut[i]; }
}
原始循环中包含“lut [i] == 0”的原因尚不清楚。
你也应该告诉我们它不按预期工作的方式。你有什么问题? –
@BoPersson:它说min = lut [i + 1]超出范围,所以我没有正确定义数组。这将是错误的原因,所以有人可以告诉我我需要对付这个问题吗? – Jay
应OP的要求关闭,他解释说他的算法是错误的。 – Kev