【问题标题】:Histogram Equalisation (Image Javascript Beginner) [closed]直方图均衡(图像 Javascript 初学者)[关闭]
【发布时间】:2012-05-30 08:05:57
【问题描述】:

我正在尝试使用 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;
}

【问题讨论】:

  • 您还应该告诉我们它没有按预期工作的原因。你哪里有问题?
  • @BoPersson :它说 min = lut[i + 1] 超出范围,所以我没有正确定义数组。那将是错误的原因,那么有人可以告诉我我需要处理什么吗?
  • 应已解释其算法错误的 OP 的要求关闭。

标签: javascript c++ imagej


【解决方案1】:
  1. 首先您必须扫描图像以搜索 min/max - 在 OriginalImage 中的 [0..pixelCount] 中搜索,而不是在 lut[] 中搜索。

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

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

编辑(这里是旧东西)

for() 循环中的“i”肯定超出了“i

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”的原因尚不清楚。

【讨论】:

  • 您好,我根据您的建议更改了代码,尽管图像没有变化。我正在尝试基于使直方图均衡的伪代码编写代码
  • 要均衡你需要我支持的最小/最大值。
  • 查看此链接底部的代码songho.ca/dsp/histogram/histogram.html 类似于我想要实现的目标
  • 是的,你需要最小值和最大值,因为它是一个 8 位灰度图像,0 和 255 是我假设的值
  • 实际上,我不需要对这个图像进行标准化 :) 我只是想提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 2018-07-31
  • 2020-01-27
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多