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



我正在尝试使用 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. 首先,您必须扫描图像以搜索最小/最大值 - 在OriginalImage中的[0..pixelCount]中搜索,而不是在lut[中搜索]。

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

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

编辑(旧东西在这里)

for() 循环中的"i"肯定超出了"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"的原因尚不清楚。

最新更新