直方图均衡(图像Javascript初学者)

时间:2012-05-30 08:05:57

标签: javascript c++ imagej

我正在尝试使用ImageJ为8位灰度图像实现直方图算法。以下是我的代码,但无法正常工作。请记住我是初学者。

我的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 :(得分:2)

  1. 首先,您必须扫描图像以搜索最小/最大 - 在原始图像中的[0..pixelCount]中搜索,而不是在lut []中搜索。

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

  3. 然后用(max - min)*(Original [k] - min)/ pixelCount填充EqualizedImage [k];如果我没有犯错误。

  4. 编辑(旧东西)

    &#39;我&#39; in for()循环肯定超出了范围,其中&#39; i&lt; = MaxIntensity&#39; (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]; }
    }
    

    包含&#34; lut [i] == 0&#34;在原始循环中不明确。