我有一张晚上拍的照片。
我将 _EqualizeHist 应用于它。但结果是图像中出现高水平的白度。
这是图像:

我以稍微不同的方式提出了这个问题,并获得了一个链接来改善图像的白平衡。
这是最初的问题
这是那个链接:
我在我的代码中已经做到了这一点,但现在我不知道下一步该做什么。如果有人可以建议下一步,我将不胜感激?
这是我的代码:
Image<Bgr, byte> frame = new Image<Bgr, byte>(file);
frame._EqualizeHist();
Image<Hsv, byte> hsv = new Image<Hsv, byte>(file);
Image<Gray,byte> maskLight= new Image<Gray,byte>(hsv.Width,hsv.Height);
Image<Gray, byte> maskDark = new Image<Gray, byte>(hsv.Width, hsv.Height);
Emgu.CV.CvInvoke.cvThreshold(hsv[2], maskLight, 128, 255, THRESH.CV_THRESH_BINARY);
Emgu.CV.CvInvoke.cvThreshold(hsv[2], maskDark, 0, 127, THRESH.CV_THRESH_BINARY);
Bgr bgrLightest;
MCvScalar scalarLightest;
frame.AvgSdv(out bgrLightest, out scalarLightest, maskLight);
Bgr bgrDarkest;
MCvScalar scalarDarkest;
frame.AvgSdv(out bgrDarkest, out scalarDarkest, maskDark);
更新:我已尝试实施 sansuiso 提出的建议。
这是代码:
Image<Bgr, byte> rgb = new Image<Bgr, byte>(@"D:\789.jpg");
pictureBox1.Image = rgb.ToBitmap();
for (int x = 0; x < 360; x = x + 24)
{
for (int y = 0; y < 288; y = y + 24)
{
rgb.ROI = new Rectangle(0, 0, 360, 288);
int xx = x;
int yy = y;
if (x > 0)
{
xx = xx - 12;
}
if (y > 0)
{
yy = yy - 12;
}
rgb.ROI = new Rectangle(xx, yy, 24, 24); //360*288
rgb._EqualizeHist();
}
}
rgb.ROI = new Rectangle(0, 0, 360, 288);
pictureBox2.Image = rgb.ToBitmap();
这是生成的图像:

显然,我做的不对。谁能看看我的代码有没有错?