2012-05-30 52 views
1

我试图实现使用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; 
} 
+1

你也应该告诉我们它不按预期工作的方式。你有什么问题? –

+0

@BoPersson:它说min = lut [i + 1]超出范围,所以我没有正确定义数组。这将是错误的原因,所以有人可以告诉我我需要对付这个问题吗? – Jay

+0

应OP的要求关闭,他解释说他的算法是错误的。 – Kev

回答

2
  1. 首先你要扫描图像搜索最小/最大 - 在[0..pixelCount在OriginalImage,而不是在LUT []搜索。

  2. 然后填写直方图(LUT []数组,你没有填充)

  3. 然后填充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”的原因尚不清楚。

+0

嗨,我改变了你的建议,虽然没有改变图像的代码。我正在尝试根据可以均衡柱状图的伪代码编写代码 – Jay

+0

要平衡您的需求,我需要支持的最小/最大值。 –

+0

看看这个链接的按钮代码http://www.songho.ca/dsp/histogram/histogram.html类似于我试图实现的 – Jay