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

直方图均衡(图像Javascript初学者),javascript,c++,imagej,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; } (i=0;i)的 首先,您必须扫描图像以

我正在尝试使用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;
}
(i=0;i)的

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

  • 然后填充直方图(lut[]数组,您没有填充它)

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

  • 编辑(此处为旧内容)

    for()循环中的“i”肯定超出了“i lut[i]){min=lut[i];}的范围 }

    在原始循环中包含“lut[i]==0”的原因尚不清楚。

    您还应该告诉我们它以何种方式未按预期工作。你哪里有问题?@BoPersson:上面说min=lut[i+1]超出范围,所以我没有正确定义数组。这就是错误的原因,所以有人能告诉我我需要处理什么吗?在OP的要求下关闭,OP解释了他的算法是错误的。嗨,我改变了代码,正如你所建议的,尽管图像中没有改变。我正在尝试基于伪代码编写代码,该伪代码将均衡历史图。要均衡您需要我支持的最小/最大值。请查看此链接按钮处的代码,与我尝试实现的代码类似,您需要最小和最大值,因为它是一幅8位灰度图像,实际上,0和255是我假设的值,我不需要规范化这个图像:)我只是想帮你。
    lut = newArray(256)
    ...
    min = 0; 
    for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) { 
       min = lut[i+1]; 
    }
    
    min = 0; 
    for (i = 0; i < MaxIntensity ; i++)
    { 
       if(min > lut[i]) { min = lut[i]; }
    }