我的代码无法均衡直方图
My Code Doesn't Work to Equalize Histogram
我尝试编写直方图均衡操作代码以增强图像的对比度,但我的代码不起作用。当我显示图像的原始直方图和经过我的代码处理后的直方图时,我看到输出直方图的值只有 0,而其他像素强度没有值。我不知道为什么。这是我的代码:
private: System::Void histogramEqualizationToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
Raw_Intensity = ConvertBMPToIntensity(Buffer, Width, Height);
int histogram[256] = { 0 };
int equalizedHistogram[256] = { 0 };
int runningSum = 0;
int numberOfPixels = Width * Height;
for (int row = 0; row < Height; row++)
{
for (int column = 0; column < Width; column++)
{
histogram[Raw_Intensity[row * Width + column]]++;
}
}
for (int i = 0; i < 256; i++)
{
runningSum += histogram[i];
int index = round(((runningSum / numberOfPixels) * 255));
equalizedHistogram[index] += histogram[i];
}
}
我认为出现了转换问题。
更改此行:
int index = round(((runningSum / numberOfPixels) * 255));
至
int index = round(((runningSum*1.0 / numberOfPixels) * 255));
我尝试编写直方图均衡操作代码以增强图像的对比度,但我的代码不起作用。当我显示图像的原始直方图和经过我的代码处理后的直方图时,我看到输出直方图的值只有 0,而其他像素强度没有值。我不知道为什么。这是我的代码:
private: System::Void histogramEqualizationToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
Raw_Intensity = ConvertBMPToIntensity(Buffer, Width, Height);
int histogram[256] = { 0 };
int equalizedHistogram[256] = { 0 };
int runningSum = 0;
int numberOfPixels = Width * Height;
for (int row = 0; row < Height; row++)
{
for (int column = 0; column < Width; column++)
{
histogram[Raw_Intensity[row * Width + column]]++;
}
}
for (int i = 0; i < 256; i++)
{
runningSum += histogram[i];
int index = round(((runningSum / numberOfPixels) * 255));
equalizedHistogram[index] += histogram[i];
}
}
我认为出现了转换问题。 更改此行:
int index = round(((runningSum / numberOfPixels) * 255));
至
int index = round(((runningSum*1.0 / numberOfPixels) * 255));